클라우드 = 남아도는 자원을 외부에 제공(그리드 컴퓨팅) + 과금 시스템(유틸리티 컴퓨팅, 전기세)
클라우드 → 사설 클라우드(openstack, cloudstack, vmware) vs 퍼블릭(공인) 클라우드
클라우드(aws,azure,gcp)
서버 가상화 : KVM과 같은 하이퍼바이저를 이용해 가상서버형태로 서버를 제공하는 방법
스토리지 가상화 : 적은 양의 스토리지를 묶어 하나의 큰 자원 풀로 활용하는 것
네트워크 가상화 : vlan, vxlan, vpc(virtual private cloud), vrf(virtual routing forwarding)-각 고객사별로 별도의 라우팅 테이블을 제공하는 것
프로비저닝(provisoning) : 시스템을 즉시 사용할 수 있는 준비 상태로 대기하는 것
만약, 가상서버10대, 네트워크 준비, 볼륨 준비 등을 일일이 처리한다면 이는 오랜시간이 걸릴 것이다. 이를 일괄적으로 처리할 수 있는 프로비저닝 도구가 있다. 대표적으로 앤서블, 셰프, 베이그런트, 퍼핏 등이 있다. 과거에는 일일이 명령으로 통해 구현했다면, 프로비저닝 도구를 일반적으로 코드를 이용하여 배포한다.
배포(Deployment) : 애플리케이션을 즉시 사용할 수 있는 준비 상태로 대기하는 것
오케스트레이션 : 시스템 또는 애플리케이션의 묶음을 일괄적으로 배포/프로비전 할 수 있으며 이를 회수 하는 것. 일반적으로는 애플리케이션/컨테이너의 관리에 주로 사용하는 용어이며 특히 컨테이너와 관련하여 대표적인 오케스트레이션 도구로는 “쿠버네티스”가 있다.
IaaS
PaaS
SaaS
온프레미스 : 클라우드와 달리 자체 데이터 센터를 운영하는 것. 자체 솔루션 등을 적용할 수 있어 보안상, 효율성 면에서는 우수하수 할 수 있다. 단, 현재는 온프레미스 환경에서 이를 클라우드로 전환하는 케이스가 늘고 있다. → 사설 클라우드로 변환
사설클라우드 : 대기업/금융권 등의 서버를 자체 데이터센터에서 클라우드를 구축하고 이를 활용하는 방법
베어메탈
가상머신
컨테이너
사용자 입장에서는 자신이 이용하는 애플리케이션이 가상머신에서 또는 컨테이너에서 동작하는 것은 관심 대상이 아니다. 이용자는 빠른 처리속도만을 요구한다. 최근에는 대부분의 애플리케이션이 잦은 I/O를 요구하므로 컨테이너를 이용하는 경향이 많다.
따라서 성능 저하가 없으면서도 배포가 용이하고 스케일 등의 적용이 쉬운 컨테이너를 이용하는 것이 이용자를 위해서 유리하다
컨테이너는 가상머신처럼 물리적 자원을 격리시키는 것이 아니라 프로세스를 격리시킬 수 있다.
ps -ef | grep httpd
httpd가 설치된 상태에서 추가적으로 httpd를 설치하여 운영할 수 있는가?
도커는 리눅스에서 사용하던 기술인 namespace, cgroup을 이용하여 개발되었다.
도커의 namespace는 아래와 같은 리눅스의 네임스페이스를 차용하여 만들었다.
쿠버네티스는 컨테이너를 생성하는 runtime(containerd, cri-o, podman…)이 아님. 쿠버네티스는 조율하는 것
쿠버네티스와 달리 runtime으로 도커만을 사용하는 오케스트레이션 툴도 있다. ⇒ swarm