서비스형 컨테이너(CaaS)는 컨테이너 조정을 위한 관리형 및 자동화 플랫폼을 제공하는 클라우드 서비스 모델입니다. 클러스터 운영을 체계화하고 간소화하는 방법입니다.
CaaS는 컨테이너 조정 엔진을 중심으로 빌드된 관리형 환경을 제공하여 작동하며, Kubernetes는 컨테이너 조정 엔진의 업계 표준입니다. 이 프로세스를 통해 개발자와 기본 인프라 간의 작업이 분리됩니다.
개발자의 작업: 먼저 모든 종속 항목과 애플리케이션을 가져와서 컨테이너 이미지로 패키징할 수 있어야 합니다. 이 이미지는 애플리케이션의 이동 가능한 청사진입니다.
완료되면 CaaS 제품이 작업 인계: 빌드 및 저장 작업이 완료되면 API 또는 인터페이스를 통해 관리를 적용하기만 하면 됩니다. Google Kubernetes Engine과 같은 CaaS 제품은 그 밖의 모든 것을 처리하는 데 도움이 될 수 있습니다. 이제 프로그램의 상태를 정의할 차례입니다. 동일한 프로그램을 실행하는 서버가 3개 필요하신가요? 이 서비스가 도움이 될 수 있습니다.
이후 새로운 배포는 자동으로 처리됩니다. 다음을 포함한 여러 옵션 중에서 선택할 수 있습니다.
CaaS는 아키텍처와 개발 관행의 기반이 될 수 있는 다용도 플랫폼입니다.
애플리케이션 및 마이크로서비스 배포에 이상적인 플랫폼이 될 수 있습니다.
기존 앱 현대화와 함께 이전 애플리케이션을 패키징하는 좋은 방법이 될 수 있습니다.
개발 구조의 경우 CaaS 플랫폼이 유용할 수 있습니다. 자동화된 시스템은 새로운 컨테이너 이미지를 빌드하고 테스트를 실행하며 다운타임 없이 CaaS 플랫폼에 배포할 수 있습니다.
CaaS는 트래픽 요구사항을 자동화합니다. 이 플랫폼은 사용자 수요에 맞춰 컨테이너 인스턴스를 자동으로 추가하거나 삭제할 수 있습니다.
Kubernetes와 같은 개방형 표준을 기반으로 빌드된 CaaS 플랫폼은 온프레미스 데이터 센터와 여러 퍼블릭 클라우드 전반에 걸쳐 일관된 운영 환경을 제공할 수 있습니다. 이를 통해 기업은 컨테이너화된 애플리케이션을 재설계할 필요 없이 어디서나 실행할 수 있습니다.
'서비스형' 환경에는 여러 모델이 포함되어 있으며 각 모델은 서로 다른 수준의 추상화와 관리를 제공합니다. CaaS는 Infrastructure as a Service(IaaS)와 Platform as a Service(PaaS) 사이에 고유하게 위치합니다.
Cloud 모델 | 관리 대상 | 추상화 수준 | 일반적인 사용 사례 |
Infrastructure as a Service(IaaS) | 운영체제, 미들웨어, 런타임, 애플리케이션, 데이터 | 낮음: 가상 머신, 스토리지와 같은 원시 컴퓨팅 리소스에 대한 액세스를 제공합니다. | 처음부터 커스텀 인프라를 빌드합니다. |
서비스형 컨테이너(CaaS) | 애플리케이션 및 구성 | 중간: 클러스터와 OS를 관리하지만 사용자가 컨테이너 환경을 제어할 수 있습니다. | 컨테이너화된 애플리케이션을 대규모로 조정합니다. |
Platform as a Service(PaaS) | 애플리케이션과 데이터 | 높음: 거의 모든 것을 관리합니다. 사용자는 소스 코드를 제공하고 플랫폼이 이를 실행합니다. | 간단한 웹 애플리케이션과 API를 빠르게 배포합니다. |
Function as a Service(FaaS)(서버리스) | 코드 함수만 | 매우 높음: 이벤트에 대한 응답으로 개별적인 스테이트리스(Stateless) 함수를 실행합니다. | 경량 이벤트 기반 데이터 처리 작업 |
Software as a service(SaaS) | 없음(최종 사용자임) | 완료: 웹을 통해 완성된 소프트웨어 제품을 제공합니다. | 이메일 또는 CRM과 같은 즉시 사용 가능한 소프트웨어를 사용합니다. |
Cloud 모델
관리 대상
추상화 수준
일반적인 사용 사례
Infrastructure as a Service(IaaS)
운영체제, 미들웨어, 런타임, 애플리케이션, 데이터
낮음: 가상 머신, 스토리지와 같은 원시 컴퓨팅 리소스에 대한 액세스를 제공합니다.
처음부터 커스텀 인프라를 빌드합니다.
서비스형 컨테이너(CaaS)
애플리케이션 및 구성
중간: 클러스터와 OS를 관리하지만 사용자가 컨테이너 환경을 제어할 수 있습니다.
컨테이너화된 애플리케이션을 대규모로 조정합니다.
Platform as a Service(PaaS)
애플리케이션과 데이터
높음: 거의 모든 것을 관리합니다. 사용자는 소스 코드를 제공하고 플랫폼이 이를 실행합니다.
간단한 웹 애플리케이션과 API를 빠르게 배포합니다.
Function as a Service(FaaS)(서버리스)
코드 함수만
매우 높음: 이벤트에 대한 응답으로 개별적인 스테이트리스(Stateless) 함수를 실행합니다.
경량 이벤트 기반 데이터 처리 작업
Software as a service(SaaS)
없음(최종 사용자임)
완료: 웹을 통해 완성된 소프트웨어 제품을 제공합니다.
이메일 또는 CRM과 같은 즉시 사용 가능한 소프트웨어를 사용합니다.
컨테이너는 소프트웨어를 어디에서나 제공할 수 있도록 설계되었습니다. 컨테이너 자세히 알아보기
예. 실제로 책임 분리, 애플리케이션 격리, 일괄 처리, 하이브리드 클라우드 배포 등 다양한 이점을 제공합니다.
Google Kubernetes Engine(GKE)은 서비스 객체 및 DNS와 같은 Kubernetes의 기본 메커니즘과의 원활한 통합을 통해 서비스 검색을 간소화합니다. 관리형 서비스 제품인 GKE는 멀티 클러스터 서비스(MCS) 및 서비스 디렉터리와의 직접 통합과 같은 기능으로 이러한 기능을 향상합니다.
새로운 코드를 더 빠르게 만들고 배포할 수 있지만 리소스가 반복적으로 관리되거나 고안되지는 않습니다.
CaaS 플랫폼을 도입하면 기업 개발팀과 운영팀에 여러 가지 전략적 이점을 제공할 수 있습니다.
이식성
CaaS는 워크로드를 지원합니다. 컨테이너 기반 애플리케이션이 표준 CaaS 프레임워크에서 실행 중인 경우 쉽게 수정할 수 있습니다.
확장성
필요에 따라 리소스를 조정할 수 있습니다.
빠른 코딩
이렇게 하면 자동화 관행을 개선하는 데 도움이 됩니다.
유지보수 개선
구성요소에 오류가 발생하면 플랫폼에서 이를 해결하고 신속하게 수정하여 사용자 기능을 유지합니다.
제공업체는 앱의 코드, 계정 액세스, 방화벽, 액세스 규칙에 의존하게 만드는 기본적인 작업을 처리합니다. CaaS 환경의 보안은 공유 책임 모델을 기반으로 작동합니다. CaaS 제공업체는 기반 인프라 보안을 담당합니다. 여기에는 컨테이너 조정 컨트롤 플레인 보호, 물리적 데이터 센터 및 네트워크 보안, 관리형 서비스 자체의 무결성 보장이 포함됩니다.
고객은 제어하는 구성요소의 보안을 책임집니다. 여기에는 애플리케이션 코드 보안, Identity and Access Management(IAM)를 사용한 클러스터 액세스 관리, 컨테이너 간 트래픽 제어를 위한 네트워크 정책 구성 그리고 가장 중요한 소프트웨어 공급망 보안이 포함됩니다. 즉, 안전한 컨테이너 레지스트리를 사용하고 컨테이너 이미지를 배포하기 전에 알려진 취약점을 스캔해야 합니다.
IT팀의 책임:
Google Kubernetes Engine(GKE)은 Google Cloud의 프리미어 CaaS 제품입니다. 기본 배포 설정은 논리적인 컨테이너 기반 워크플로를 따릅니다.
1단계: 애플리케이션을 컨테이너화합니다.
먼저 애플리케이션의 텍스트 파일을 작성합니다. 이 간단한 텍스트 파일에는 애플리케이션, 종속 항목, 런타임 환경을 정적 컨테이너 이미지로 빌드하기 위한 안내가 포함되어 있습니다.
2단계: 레지스트리에 이미지를 저장합니다.
텍스트 파일에서 컨테이너 이미지를 빌드하고 안전한 비공개 레지스트리에 푸시합니다. Artifact Registry는 컨테이너 이미지를 저장하고 버전을 관리하기 위한 Google Cloud의 관리형 서비스입니다.
3단계: GKE 클러스터를 만듭니다.
Google Cloud 콘솔 또는 gcloud 명령줄 도구를 사용하여 Kubernetes 클러스터를 프로비저닝합니다. 노드 관리 및 확장을 자동화하는 완전 관리형 환경을 위해서는 GKE Autopilot 클러스터를 선택할 수 있습니다.
4단계: 배포를 정의합니다.
Kubernetes 매니페스트 파일(예: deployment.yaml)을 만듭니다. 이 파일에서 사용할 컨테이너 이미지, 원하는 복제본 수, 필요한 CPU 및 메모리 리소스를 지정하여 애플리케이션의 원하는 상태를 선언적으로 정의합니다.
5단계: 애플리케이션을 클러스터에 배포합니다.
Kubernetes 명령줄 도구인 kubectl을 사용하여 매니페스트 파일을 클러스터에 적용합니다. GKE의 컨트롤 플레인이 요청을 수신하고 클러스터의 워커 노드에서 애플리케이션의 컨테이너를 실행하도록 예약합니다.
6단계: 애플리케이션을 노출합니다.
인터넷을 통해 사용자가 애플리케이션에 액세스할 수 있도록 LoadBalancer 유형의 Kubernetes 서비스 매니페스트를 만듭니다. 이 매니페스트를 적용하면 GKE가 자동으로 클라우드 부하 분산기를 프로비저닝하고 공개 IP 주소를 할당하여 외부 트래픽을 실행 중인 컨테이너로 라우팅합니다.