안녕하세요. 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
댓글