GKE 아키텍처 가이드
Google Kubernetes Engine을 활용하여 어플리케이션을 개발하고 관리할 때 주로 활용하게 되는 Google Cloud Platform의 서비스와 아키텍처 구성에 대해 개괄적으로 설명합니다.
1. GKE 개요
GKE(Google Kubernetes Engine)는 GCP(Google Cloud Platform) 기반에 컨테이너식 애플리케이션 배포를 위한 관리형 환경입니다. GKE 클러스터는 Kubernetes 명령 및 Resource를 사용하여 응용 프로그램을 배포 및 관리 하고 자동 배포를 위한 배포 정책 설정과 어플리케이션 상태 모니터링 서비스를 제공합니다.
2. 아키텍처 구성
형상관리, CI/CD, 컨테이너 레지스트리, 런타임 어플리케이션, 데이터베이스, 로깅/모니터링 등을 어플리케이션 라이프사이클 관점에서 구성하는 방법을 정의한다.
3. GKE와 GAE 비교
컨테이너를 실행할 수 있는 서비스를 비교하여 아키텍트가 각자의 환경에 적합한 서비스를 활용할 수 있도록 한다.
GKE(Google Kubernets Engine)는 Kubernetes를 기반으로 하는 컨테이너식 어플리케이션을 관리형 환경이다. 개발자 생산성, 리소스 효율성, 자동화된 작업, 오픈소스 유연성에 혁신을 가져와 제품 출시 시간을 단축해준다. OS 위에 컨테이너가 구동되는 형태로 애플리케이션과 서비스를 손쉽게 배포, 업데이트, 관리할 수 있으며, 컨테이너 복제, 모니터링, 복구를 사용하여 서비스 가용성을 높여 사용자에게 원활한 환경을 제공할 수 있다. 또한, 리소스를 최적화 하여 사용할 수 있으며, 수요에 맞게 확장/축소가 유용하다. GKE를 사용하는 개발자는 서비스를 컨테이너로 구성하고 구동하는 부분만 하면 된다.
GAE(Google App Engine)은 완전 관리형 서버리스 어플리케이션 플랫폼이다. 기본 인프라를 걱정하지 않고, 어플리케이션을 원할하게 확장할 수 있다. 개발자는 서버 관리와 구성 배포를 고민하지 않고 어플리케이션을 개발하고 사용한 리소스에 대해 비용만 지불하면 된다. 자바, PHP, Node.js, Python, C#, .Net, Ruby, Go 등 일반적인 개발 언어 및 개발자 도구를 지원하여 개발자들의 높은 생산성과 민첩성에 도움이 된다. 어플리케이션 확장, 축소, 패치와 같은 인프라 작업은 Google에서 관리한다.
구분 | Kubernetes Engine | App Engine |
|
|
| Flexible Environment | Standard Environment |
지원되는 언어 | any | any(Python, Java, PHP, Go, Node.js, Ruby, .NET, Custom Runtimes) | Python, Java, PHP, Go |
지원되는 버전 | any | any | 언어별 지원되는 버전이 고정됨 |
이용모델 | IaaS, PaaS | PaaS | PaaS |
Runtime 환경 | 컨테이너 형태 | 컨테이너 형태 | VM 형태 |
| 사용자가 만든 docker image를 실행함 | 소스를 기반으로 플랫폼이 docker image를 생성하여 실행하거나 사용자가 만든 docker image를 실행함 | 소스를 기반으로 빌드하여 사전 정의된 실행환경(sandbox)의 디렉터리에 배포하여 실행함 |
어플리케이션 관리 | 사용자가 로깅, 모니터링, health check, scaling 등 컨테이너 환경을 자유로이 설정할 수 있음 | 컨테이너에 대한 기본 설정(로깅, 모니터링, health check, scaling 등)은 제공하며, 사용자가 환경변수를 통해 제한적인 설정변경 가능함 | 컨테이너에 대한 기본 설정(로깅, 모니터링, health check, scaling 등)은 제공하며, 사용자가 환경변수를 통해 제한적인 설정변경 가능함 |
웹 취약점 점검 | 미지원 | 자동으로 웹 어플리케이션 취약점을 점검함 | 자동으로 웹 어플리케이션 취약점을 점검함 |
Cluster 자동 확장 | 수동으로 Cluster 확장 | 부하에 따라 자동으로 Server 확장됨 | 부하에 따라 자동으로 Server 확장됨 |
3'rd party 바이너리 설치 | 가능 | 가능 | 불가 |
SSH 접속 | 가능 | 가능(설정 필요) | 불가 |
Local Disk 쓰기 | 가능(ephemeral) | 가능(ephemeral) | 불가 |
비용 | 할당된 Cluster의 시간당(CPU, 메모리, 디스크 사용량) | 할당된 자원의 시간당 사용량(CPU, 메모리, 디스크 사용량) | 일일 무료 사용 후 인스턴스 실행시간 |
장점 |
|
|
|
적용모델 | Container Workload | 확장가능한 웹 어플리케이션 및 모바일 backend 어플리케이션, Container Workload | 확장가능한 웹 어플리케이션 및 모바일 backend 어플리케이션 |
4. Kubernetes와 GKE 비교
오픈소스 Kubernetes 대비 Google Cloud가 제공하는 차별적인 기능에 대해 소개한다.
- 액세스 관리 : Google 계정 및 역할 권한으로 클러스터의 액세스 권한을 관리함
- 네트워킹 : Google Cloud VPN를 이용해 컨테이너 클러스터에 하이브리드 네트워킹을 구성이 가능함
- 보안 및 규정 : Google 보안팀이 Kubernetes Engine을 지원하며 HIPAA 및 PCI DSS 3.1 규정을 모두 준수
- 통합 로깅 및 모니터링 : Stackdriver Logging과 Stackdriver Monitoring을 사용 설정하면 애플리케이션 실행 상태를 손쉽게 확인이 가능함
- 자동 업그레이드 : Kubernetes의 최신 출시 버전으로 클러스터를 자동으로 최신 상태로 유지함
- 자동 복구 : 자동 복구를 사용 설정하면 노드 상태 확인에 실패할 경우 Kubernetes Engine이 실패한 노드의 복구 프로세스를 시작함
- 완전 관리형 서비스 : Google SRE가 Kubernetes Engine을 완전하게 관리하므로 클러스터의 가용성이 보장되고 최신 상태로 유지됨
- Private Container Registry : Google Container Registry와 통합하면 손쉽게 Private Docker 이미지를 저장하고 액세스가 가능함
- 신속한 빌드 : Google Container Builder를 사용하면 인증을 설정할 필요 없이 Kubernetes Engine에서 안정적으로 컨테이너를 배포가 가능함
- 사용 편의성 : 콘솔 화면 내에 터미널 접속 기능이 있어, 별도의 CLI 설치 작업 없이 손쉽게 사용이 가능함

댓글
댓글 쓰기