클라우드
"사용자에게는 보이지 않지만 중앙의 서버 컴퓨팅 자원을 활용해 서비스를 받을 수 있게 하는 플랫폼"
CSP(Cloud Service Provider)가 서버 등의 기기를 준비하고 거기에 구축된 가상 서버나 응용 프로그램 등을 사용자에게 제공하여 이용료를 받는 형태.
AWS처럼 누구나 사용 가능한 클라우드를 개방형 클라우드(Public Cloud)라고 부르고, 대표적인 개방형 클라우드 서비스의 점유율 순위는 다음과 같다.
온프레미스 (on-premise)
사용자가 관리하는 시설 내에 서버 등의 기기를 설치해 운용하는 환경.
즉 카카오 데이터 센터나 네이버 데이터 센터와 같이 자체 관리 서버 환경을 온프레미스 환경이라 한다.
클라우드 환경에서는 서비스 제공자가 서버나 응용 프로그램 및 내부 모든 하드웨어를 관리하므로 사용자는 하드웨어 장애에 대해 신경쓰지 않아도 된다.
하지만 사용자는 제공되는 서비스 범위 내에서만 시스템을 이용할 수 있으므로 자유도가 낮고, 매월 각종 서비스 사용료를 지불해야 한다.
온프레미스 환경은 직접 서버를 구축하는 것을 포함하여 케이블 배선, 네트워크 설정 등 초기 투자 비용이 커지고 시스템 구축 준비 기간이 길어진다는 단점이 있지만, 이용 자유도가 높고 초기 투자 이후 비용 이후 들어가는 비용이 낮아 장기적인 관점에서 효율적일 수 있다.
다음은 IBM 공식 홈페이지에서 발췌한 가상화 개념이다.
가상화는 소프트웨어를 사용하여 프로세서, 메모리, 스토리지 등과 같은 단일 컴퓨터의 하드웨어 요소를 일반적으로 가상 머신(VM)이라고 하는 다수의 가상 컴퓨터로 분할할 수 있도록 해주는 컴퓨터 하드웨어 상의 추상화 계층을 구축합니다. 실제 기반 컴퓨터 하드웨어의 단지 일부에서만 실행됨에도 불구하고, 각각의 VM은 자체 운영체제(OS)를 실행하며 마치 독립적인 컴퓨터인 것처럼 작동합니다.
사용자가 클라우드 서비스를 통해 원하는 사양으로 서버를 임대하면 가상화 기술을 통해 서버를 가상으로 생성해 사용하게 된다. 가상 서버는 물리 서버의 CPU나 메모리 같은 컴퓨터 자원을 일부 독점하여 물리적으로 독립된 서버와 같이 동작한다.
가상화를 생성하고 실행해주는 소프트웨어를 하이퍼바이저라고 하고 대표적인 하이퍼바이저로 VMWare 등이 있다.
하드웨어 위에 기본이 되는 호스트 OS를 설치하고, 그 위에 가상화 소프트웨어를 설치하여 게스트 OS를 작동시키는 가상화 방식.
하드웨어 위에 바로 하이퍼바이저를 배치한 가상 환경, 호스트 OS가 없기 때문에 컴퓨팅 자원을 효율적으로 사용할 수 있지만 환경별로 다른 OS가 작동하기 때문에 가상 환경을 사용하기 위한 오버헤드 발생 여지가 있다.
오버헤드란 프로그램의 실행흐름에서 나타나는 현상중 하나로 예를 들어, 프로그램의 실행흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때 시간, 메모리, 자원 추가적으로 사용되는 현상을 말한다
OS에 논리적인 영역(컨테이너)을 만들고, 애플리케이션을 작동하는 데 필요한 라이브러리와 애플리케이션 등을 컨테이너 안에 넣어 마치 개별 서버처럼 사용할 수 있게 하는 기술로 최근 가상화 및 클라우드 컴퓨팅 영역에서 가장 각광받는 기술이다. 대표적인 구현 기술로 Docker가 있다.
비유하자면 호스트 가상화는 집 안에 새로운 집을 다시 만드는 격이다. 이미 호스트 OS에서 제공되는 기능이 있음에도 각각의 게스트 OS에 동일하거나 유사한 기능을 다시 설치해야 하므로 약간의 비효율이 발생한다.
반면 컨테이너 가상화같은 경우 격리 속성을 완화하여 애플리케이션 간 OS를 공유하므로 각각의 컨테이너가 가벼워지고 속도가 빠르다는 장점이 있다.
클라우드는 제공하는 서비스에 따라 다음과 같이 분류할 수 있다.
OS를 직접 올리고 그 상위 계층만 구성하면 되는 모델로써, 고객은 가상 서버 하위 레벨에 대해서는 고려할 필요가 없다.
대표적인 서비스로 AWS의 EC2가 있다.
사용자가 응용 프로그램을 작성할 수 있도록 플랫폼 및 환경을 제공하는 모델.
예를 들면 node.js, Java 런타임을 미리 깔아놓고, 거기에 소스코드를 넣어서 돌리는 구조. 즉, 사용자는 소스코드만 적어서 빌드하는 것이고, 컴파일은 클라우드에서 하여 결과만 가져오는 방식으로 이해할 수 있다.
가장 이상적인 클라우드 모델로 여겨지며, 대표적인 PaaS 제공 업체로 Heroku, OpenShift, Google App Engine 등이 있다.
설치할 필요도 없이 클라우드를 통해 제공되는 소프트웨어.
사용자는 웹만 접속하면 사용할 수 있기 때문에 별도 업데이트를 다운로드 받을 필요 없이 항상 최신 소프트웨어를 사용할 수 있다.
대표적인 SaaS 서비스로 Office365, Dropbox, Slack 등이 있다.
https://azure.microsoft.com/ko-kr/resources/cloud-computing-dictionary/what-is-paas
https://www.ibm.com/kr-ko/cloud/learn/paas
https://wnsgml972.github.io/network/2018/08/14/network_cloud-computing/
https://library.gabia.com/contents/infrahosting/9105/
https://transferhwang.tistory.com/31
https://www.cloudflare.com/ko-kr/learning/cloud/what-is-saas/