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

  • 다수의 컨테이너를 관리하고 서비스 간 소통을 돕는 도구
  • 각 컨테이너 이미지 당 여러 인스턴스를 생성할 경우 오케스트레이션 툴은 이를 클러스터에 배포함. 각 클러스터는 여러 개의 가상 서버를 가질 수 있음.
  • 특징

    1. Auto Scaling : 트래픽 요구에 따라 여러 컨테이너 이미지를 생성하거나 축소하여 스케일 관리
    2. Service Discovery : microservice 간 서비스 경로를 찾아줌
    3. Load Balancing : 여러 컨테이너 이미지 인스턴스 간 부하 분산
    4. Self Healing : Health Check & Replace failure instances
    5. Zero Downtime Deployments

Serverless

  • 클라우드 제공자가 서버에 대한 구성을 담당함으로써 사용자는 서버 및 인프라의 구성에 대해 알 필요 없이 서버를 이용할 수 있는 서비스
  • Zero Visibility to Infra : 서버가 없는 것이 아니라, 서버의 존재 및 방식에 대해 알 필요 없는 것
  • Pay for Use : 요청을 보낸 만큼 지불
  • 단계

    1. Level 1 : 서버리스임에도 불구하고 사용자가 애플리케이션 스케일에 따라 서버 규모를 자유롭게 Up/Down 할 수 있음. 단, 인스턴스를 사용한 만큼 비용을 지불

      • ex) GCP Goole App Engine
    2. 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