본문 바로가기
카테고리 없음

GCP App Engine

by BTC_ming2 2022. 6. 17.

안녕하세요. MC에몽입니다.

오늘은 GCP의 Serverless 제품인 App Engine에 대해 알아보겠습니다.

 


APP Engine은 GCP에서 구동되는 WEB Framework로, HTTP/HTTPS request를 처리하는 Full managed Service입니다.

APP Engine의 다양한 장단점을 살펴 보겠습니다.
● 장점
 1) 쉽고 간단한 구조
  - LB, Auto Scaling 설정 같은 경우 스스로 혹은 간단한 옵션으로 관리 가능.

 

 2) 내부적으로 Blue Green Deployment를 구현하여 APP Engine 내부에서 새로운 앱을 배포 후 라우팅을 새로운 앱으로 실행

 

 3) 강력한 HTTP URL 기반 라우팅
  - 구글 클라우드의 Project Name으로 URL 주소 설정
  - 배포용, 개발용을 구분지어 각 버전에서 인스턴스를 생성하여 요청을 보낼 경우, 다른 한 쪽에서 트래픽 제어가 가능하  여 각 버전에서 인스턴스 요청에 대한 응답을 받을 수 있음.
  - EX) Project Name : cmkservice
    URL 주소 : https://cmkservice.appspot.com


● 단점
 1) 한국 region이 없음.
  - 가장 가까운 region은 tokyo region
  - 평균 30~50ms 정도의 Latency 발생

 2) 지원 가능 언어 제약
  - Python, Java, PHP, Go 지원
  - C#, Node.js도 문서에서 지원이 가능하다고 표시되어 있지만, 프레임워크와의 궁합이 좋지 못함.

 3) Flexible Environment의 높은 최소 비용
  - FE의 경우 CPU, Memory, 디스크 용량의 사용량으로 과금
  - 가장 싼 CPU Type 비용  : $40
  - EC2의 가장 저렴한 Instance type(t2 micro) : $8.5

 

 

또한, App Engine은 Standard와 Flexible 두가지 환경에서 사용됩니다. 
각 env의 특징은 다음과 같습니다.


● Standard environment
 1) 컨테이너 인스턴스를 기반
 2) 컨테이너는 사용 가능한 runtime 중 하나로 사전 구성
 3) 높은 부하와 많은 양의 데이터가 있어도 안정적으로 실행되는 application을 간편하게 빌드 및 배포
 4) 안전한 샌드박스 환경에서 실행
  - 요청을 처리하도록 서버 분산 및 확장 가능
  - 서버 H/W, OS, Location에 영향을 받지 않는 안전하고 안정적인       환경에서 application 실행  
 5) 지원 언어 및 런타임
  - Python, Java, Node.js, PHP, Ruby, Go
 6) Instance Class
  - 각 인스턴스에 사용 가능한 메모리 및 CPU 양, 무료 할당량, 앱이 무료 할당량을 초과할 경우의 시간당 비용을 결정
  - 1세대 Runtime
    > Python 2.7, 자바 8, PHP 5.5


  - 2세대 runtime
   > Python 3, 자바 11, Node.js, PHP 7, Ruby, Go 1.12 이상





● Flexible environment
 1) VM의 Docker 컨테이너 내에서 실행되는 application instance
 2) 일관된 트래픽 수신
 3) 인프라 맞춤설정
  - Custom 라이브러리를 활용
  - 디버깅에 SSH를 사용하며 자체 Docker 컨테이너 배포 가능
 4) Performance options
  - 다양한 CPU 및 메모리 구성을 활용해 각 Application Instance에 필요한 CPU와 Memory 양을 지정할 수 있음.
  -필요한 infra 자동 구성
 5) 아래 Native feature 지원
  - microservices, authorization, SQL and NoSQL databases 
  - traffic splitting, logging, versioning
  - security scanning, content delivery networks
 6) 관리형 가상 머신
  - 인스턴스에 문제 발생 시 해결 및 프로젝트 내의 다른 서비스와 같은  region에 배치
  - 이전 버전과 호환 가능한 중요 업데이트를 기본 OS에 자동 적용
  - VM Instance는 프로젝트 설정에 따라 region 기준 자동 배치.
  - 최적의 성능을 위해 프로젝트 모든 VM이 같은 region에 배치되도록 설정
  - vm 인스턴스는 매주 restart 실행.
   > restart 중 필요한 os 및 보안 업데이트 실행
  - 사용자가 항상 GCE VM 인스턴스에 대한 root access 권한 소유.
   > SSH access는 기본적으로 중지됨.


오늘은 App Engine에 대해 알아보는 시간이었습니다.

See you later!



[참고문서]

[1] https://dev.wisedog.net/2018/04/22/introduce-google-cloud-app-engine-1
[2] https://cloud.google.com/appengine/docs/standard#second-gen-runtimes
[3] https://cloud.google.com/appengine/docs/flexible
[4] https://cloud.google.com/appengine/docs/the-appengine-environments?hl=ko

댓글