GCP - Associate Cloud Engineer 준비기
GCP Certification 취득을 위해 공부합니다. GCP 전반에 대한 내용을 다룹니다.
정리된 내용은 “Udemy-GCP Associate Cloud Engineer - Google Cloud Certification” 강의를 기반으로 합니다.
Managed Services
GCP 자원과 함께 관리 역할까지 서비스의 형태로 제공하는 것
인프라, 플랫폼, 애플리케이션, 컨테이너 등을 관리하는 수준에 따라 서비스, 비용이 다름
서비스 제공 단계 | 클라우드 자원 |
---|---|
SaaS | Application |
. | Application Runtime |
PaaS | OS |
. | Virtualization |
. | Physical HW |
IaaS | Networking |
IaaS(Infrastructure as a Service))
- 클라우드 제공자로부터 인프라(애플리케이션, DB 서버 등을 배포할 VM)만 빌려 씀
- 클라우드 제공자 : 네트워크, 물리 서버, 가상화 인터페이스에 대한 책임만 짐
- 이용자 : 애플리케이션 코드, 런타임, 로드밸런싱 설정, 오토스케일링, OS 업그레이드, 패치, 가용성 책임
PaaS(Platform as a Service))
- 클라우드 제공자로부터 인프라와 애플리케이션을 실행할 플랫폼 빌려 씀
- 클라우드 제공자 : 인프라 + OS(업그레이드, 패치), 애플리케이션 런타임(Java, Python, NodeJS), 오토스케일링, 로드밸런싱, 가용성에 대한 책임 짐
- 이용자 : 애플리케이션 개발을 위한 코드, 설정만 고민하면 됨
-
종류
- CaaS(Container as a Service) : App 대신 컨테이너 실행 플랫폼 제공
- FaaS(Funtion as a Service) : App 대신 Funtion 실행 플랫폼 제공
- Database : DB 서버를 제공(AWS RDS, GCP SQL, Azure SQL Databse 등)
- Queue, AI, ML Operations 등 다양한 플랫폼 존재함
MSA(Micro Service Architecture)
MSA란?
- 서비스 단위로 애플리케이션을 잘게 쪼개어 확장성, 유지보수성을 높이고 애플리케이션 간 종속성을 낮춤
- 배포 방식이 복잡해짐 : 각 서비스 별 여러 언어로 개발할 수 있다는 장점이 있지만 그만큼 배포 환경, 고려사항이 다양해짐
- 컨테이너로 배포 문제 해결
Container - Docker
- 각각의 microservice를 도커 이미지화하여 배포 방식을 통일시킴
-
도커 이미지는 microservice 실행을 위한 모든 요소를 포함하고 있음
- 애플리케이션 코드, 의존성, 런타임
-
컨테이너는 어떤 인프라 환경에서도 동일한 방식으로 애플리케이션을 실행시킬 수 있게 하므로 클라우드 환경에 적합함
- 로컬 환경, 온프레미스 환경, 클라우드 환경(GCP, Azure, AWS 등)
Container Orchestration
- 다수의 컨테이너를 관리하고 서비스 간 소통을 돕는 도구
- 각 컨테이너 이미지 당 여러 인스턴스를 생성할 경우 오케스트레이션 툴은 이를 클러스터에 배포함. 각 클러스터는 여러 개의 가상 서버를 가질 수 있음.
-
특징
- Auto Scaling : 트래픽 요구에 따라 여러 컨테이너 이미지를 생성하거나 축소하여 스케일 관리
- Service Discovery : microservice 간 서비스 경로를 찾아줌
- Load Balancing : 여러 컨테이너 이미지 인스턴스 간 부하 분산
- Self Healing : Health Check & Replace failure instances
- Zero Downtime Deployments
Serverless
- 클라우드 제공자가 서버에 대한 구성을 담당함으로써 사용자는 서버 및 인프라의 구성에 대해 알 필요 없이 서버를 이용할 수 있는 서비스
- Zero Visibility to Infra : 서버가 없는 것이 아니라, 서버의 존재 및 방식에 대해 알 필요 없는 것
- Pay for Use : 요청을 보낸 만큼 지불
-
단계
-
Level 1 : 서버리스임에도 불구하고 사용자가 애플리케이션 스케일에 따라 서버 규모를 자유롭게 Up/Down 할 수 있음. 단, 인스턴스를 사용한 만큼 비용을 지불
- ex) GCP Goole App Engine
-
Level 2 : 인프라(인스턴스) 규모와 상관 없이 오로지 invocation(요청, 호출)만큼의 비용을 지불. 인스턴스의 개수는 알 필요 없으며, 개수와 상관 없이 비용 지불
- GCP Google Functions, AWS Lambda
-
GCP Managed Services 종류
종류 | 설명 | 서비스 제공 범위 |
---|---|---|
Compute Engine | Global 규모의 인프라를 구성하여 VMs를 이용하기 위한 목적 | IaaS |
Google Kubernetes Engine | 컨테이너 관리, 클러스터 설정, 모니터링 목적 | CaaS |
App Engine | 규모가 큰 애플리케이션을 운영하기 위한 목적 | PaaS(CaaS, Serverless) |
Cloud Functions | 단순하며 단일 목적의 functions를 이용해 Event-Driven 앱을 실행하기 위한 목적 | FaaS, Serverless |
Cloud Run | 컨테이너화된 앱을 실행하기 위한 목적(App Engine과의 차이점은 클러스터 설정이 필요없다는 것, 더 가벼운 앱 실행) | CaaS, Serverless |