- 과거에는 동시 작업이 어려워 모놀로식 방법이었지만, 컨테이너 의 등장으로 동시 작업이 가능해져, 동시 작업 후 결합하는 에자일 방법론을 사용한다
- 그리드 컴퓨팅 : 남아도는 자원을 외부에 제공
- 유틸리티 컴퓨팅 : 온 디맨드 컴퓨팅 방식으로 자원 사용량에 따라 요금을 부과하는 기술
클라우드와 달리 자체 데이터 센터를 운영하는 것으로, 자체 솔루션등을 적용할 수 있어 보안상 , 효율성 면에서는 우수하다고 할 수 있다. 단, 현재는 온 프레미스 환경에서 이를 클라우드로 전환하는 케이스가 늘고 있다
현재는 온 프레미스 환경을 사설 클라우드로 변환하는 경우가 많다
클라우드가 무조건 온 프레미스보다 비용이 낮은 것은 아니다. 동일 사양으로 다년간의 고정적 비용을 따져본다면, 어느 시점부터는 클라우드 비용이 더 커질 수 있다
제한된 네트워크에서 특정 사용자나 기업을 대상으로 하는 클라우드 서비스 방식으로, 클라우드 자원과 데이터는 기업 내부에 저장된다. 보안성이 높다
대기업 / 금융권 등의 서버를 자체 데이터 센터에서 클라우드를 구축하고, 이를 활용하는 방법
openstack , cloudstack , vmware 을 통해 구축 가능하다
인터넷을 통해 다수의 사용자에게 서버 및 스토리지 등의 클라우드 자원을 AWS , GCP , AZURE 와 같은 클라우드 서비스 공급자로부터 제공받는 방식
aws , azure , gcp , ncp 등을 통해 구축 가능하다
퍼블릭 클라우드와 프라이빗 클라우드를 네트워크를 통해 결합하여, 프라이빗 클라우드의 보안적 장점과 퍼블릭 클라우드의 관리적 장점을 활용할 수 있는 클라우드 서비스 방식이다
예를 들어, 웹서버는 AWS 에서 제공하고, 데이터 보안 서비스는 사설 클라우드를 활용하는 방법으로 사용할 수 있다
ON-DEMAND : 원하는 시점에 바로 서비스 사용 가능
- 과거에는 Data Center 에서 사용자의 주문에 대해 자원을 준비하는 시간이 필요했다. 허나, 클라우드의 등장으로 사용자가 주문하면 즉시 서비스 제공이 가능하게 됬다
광대역 네트워크 접근 : CSP ( 클라우드 서비스 업체 ) 가 제공하는 광대역 네트워크를 이용하여, 인터넷 접속이 가능하다면 위치에 상관없이 24시간 온라인을 유지 가능하며, 서비스 이용이 가능하다
탄력성 / 확장성 : Auto scale 을 통해 탄력적으로 서비스의 확장과 축소가 가능하다. 예를 들면, 인스턴스의 개수를 늘리거나, 디스크의 용량을 늘리는 것 등이 있다
- 이는 수평적으로 늘리는 것 ( 개수 ) & 수직적으로 늘리는 것 ( 성능 ) 이 있다
- 서버의 자원 ( cpu , rem , disk 등 ) 을 늘리는 것 - scale up
- 동일한 서버를 늘리는 것 - scale out
- 일반적으로 클라우드에서 탄력적 / 확장성을 얘기할 때에는 scale out 을 지칭한다
- 특정 상황이 되면 자동으로 스케일을 확장하도록 설정할 수 있다 -> Auto Scaling
자원의 공동 관리 : 자원 관리를 Pool 에 담아서 일괄적으로 처리할 수 있다. 이를 위해선 자원의 클러스터화가 가능 해야 한다
- 물리적으로 떨어져있는 자원들을 클러스터화하여 하나의 Pool 에 담아서 통합하여 처리한다
측정 가능한 서비스 : 자원 사용의 모니터링이 가능 해야 한다. 이는 과금 서비스와 연계하여 사용될 수 있다
24 시간 온라인을 유지할 수 있는 애플리케이션
- 과거에는 서비스를 제공하는 물리 서버에 대해 점검 및 업그레이드를 하면, 서비스가 중단되는 Down Time 이 많았다. 허나, 클라우드의 등장으로 live migration 이 가능해지면서 이러한 Down Time 을 없앨 수 있게 되었다
- 가상 머신 등의 지역간 이동을 통해 구현 가능하게 됬다
가상화 계층 : 서버 가상화 / 스토리지 가상화 / 네트워크 가상화
- 서버 가상화 : KVM 와 같은 Hyper Visor 를 이용하여 가상 서버 형태로 서버를 제공하는 방법
- 스토리지 가상화 : 적은 양의 다수의 스토리지를 묶어 하나의 큰 자원 풀로 활용하는 것도 스토리지 가상화의 일종이다
- 네트워크 가상화 : Vlan , Vxlan , VPC ( Virtual Private Cloud ) , VRF ( Virtaul Routing Forwarding - 각 고객사 별로 별도의 라우팅 테이블을 제공 )
- VRF : 하나의 라우터 안에 가상으로 라우터를 만들어, 별도의 라우팅 테이블을 생성하여 각 고객사 별로 제공해줄 수 있다
프로비저닝 ( Provisioning ) : 시스템을 즉시 사용할 수 있는 준비 상태로 대기하는 것으로 서비스를 제공하기까지 준비한 과정을 통틀어 의미한다. 즉, 사용자 혹은 비지니스 요구사항에 맞게 할당, 배치, 배포하여 시스템을 사용가능하도록 준비하는 절차
- 만약, 가상 서버 / 네트워크 준비 / 볼륨 준비 등을 일일이 처리한다면 이는 오랜 시간이 걸릴 것 이다. 이를 일괄적으로 처리할 수 있는 프로비저닝 도구가 있다. 대표적으로 ansible , chef , puppet , vagrant 등이 있다. 도구를 사용하지 않으면, 일일이 명령을 통해 구현하지만, 프로비저닝 도구는 일반적으로 코드를 이용하여 배포한다
- 프로비저닝 도구를 통해 일괄 생성도 가능하지만, 일괄 삭제도 가능하다
배포 ( Deployment ) : 애플리케이션을 즉시 사용할 수 있는 준비 상태로 대기하는 것
오케스트레이션 : 시스템 or 애플리케이션의 묶음을 일괄적으로 배포 / 프로비저닝 할 수 있으며, 이를 회수하는 것. 즉, 묶음에 대한 전체 관리를 한다. 일반적으로는 애플리케이션 또는 컨테이너의 관리에 주로 사용하는 용어이며, 특히 컨테이너와 관련하여 대표적인 오케스트레이션 도구로는 " K8S " 가 있다
개발 환경을 제공 ( 데이터 베이스 , 개발 언어 , IDLE 등을 동일한 버전등으로 제공 가능 )
컨테이너를 통한 app 배포 도 paas 에 포함된다. auto scaling 을 통해 컨테이너를 수평적으로 늘릴 수 있다