클라우드란 인터넷을 통해 서버, 소프트웨어, DB등의 시스템을 제공하는 것이다.
예를 들어, Google Cloud나 네이버 MyBox 등이 인터넷을 통해 개인 저장소를 제공한다.
기업의 서버를 클라우드와 같은 원격 환경에 설치하는 것이 아니라, 기업이 자체적으로 보유한 전산실 서버를 두고 관리하는 것이다.
서버를 원격 환경에 설치하는 것
Software as a service
완제품 소프트웨어를 인터넷을 통해 제공하는 것.
사용자가 사용하는 소프트웨어 자체를 제공.
클라우드에서 예로 들었던 Google cloud나 네이버 MyBox가 이에 해당한다.
완제품이기 때문에 커스텀하기 어려움.
Infrastructure as a service
서버나 저장소와 같은 인프라를 인터넷을 통해 제공하는 것.
주로 물리적 자원을 제공.
Iaas는 AWS를 예로 들 수 있다.
Google cloud의 경우 소프트웨어적인 개인 저장소를 제공했다면 AWS는 순수한 컴퓨터 환경에서의 서버와 스토리지를 제공한다. AWS의 스토리지는 소프트웨어로서 만들어진게 아니라 그저 컴퓨터의 저장소에 해당한다.
클라우드에 종속되지 않고 이식성이 좋음.
종속되지 않는다는 점은 AWS 서버에 뭐든지 자유롭게 깔 수 있다는 점을 예로 들 수 있다.
운영비용이 비효율적임.
Platform as a service
플랫폼을 인터넷으로 제공하는 것.
주로 소프트웨어 개발을 돕는 플랫폼을 제공.
플랫폼에 종속되는 단점이 있음.
운영비용이 효율적임.
하나의 컴퓨터 서버에 여러가지 App를 설치 운영
하나의 컴퓨터 서버에 하이퍼바이저를 통해 각각의 격리된 서버를 만들어내고 각각의 서버에서 App을 설치 운영(각각의 운영체제를 설치해야함)
하나의 컴퓨터 서버에 하나의 운영체제를 공유하며 서로 격리된 컨테이너를 생성하고 각각의 컨테이너에 App를 설치 운영
1번 방식은 각각의 App가 서로에게 영향을 줄 수 있는 문제점이 존재함
2번 방식은 각각의 가상환경에 운영체제를 설치 해야하기 때문에 비용 문제가 커짐
3번 방식은 하나의 운영체제를 공유하면서도 서로 격리된 컨테이너에서 운영되기 때문에 각각의 App는 서로에게 영향을 주지 않는다.
Docker는 컨테이너 단위로 어플리케이션을 실행하는 기능을 제공하는 플랫폼이다.
Iaas의 이식성과 Paas의 저렴한 운영비용의 장점을 갖췄다.
Dockerfile을 통해 필요한 패키지, 라이브러리, 환경변수 등을 설정하고 이에 대한 컴퓨터의 상태를 스냅샷으로 저장한 도커이미지를 생성한다.
도커이미지를 통해 컨테이너 환경이 실행된다.
쿠버네티스나 도커스웜은 컨테이너화된 어플리케이션을 자동으로 배포, 스케일링 및 관리해주는 컨테이너 오케스트레이션이다.
쿠버네티스는 여러개의 컨테이너를 관리, 운영하는 기능을 제공한다.
컨테이너의 생성과 소멸, 시작 및 중단 시점 제어, 스케쥴링, 로드 밸런싱, 클러스터링 등을 제공한다.
(클러스터는 컨테이너 형태의 어플리케이션을 호스팅하는 물리/ 가상 환경의 노드들로 이루어진 집합이다)
Docker는 Iaas도 Paas도 아니며 둘의 장점을 가진 Paas의 일부라고 볼 수 있다.