본문 바로가기
CSP (Cloud Service Provider)/GCP

App Engine과 각 언어 환경

by BTC_.tf 2023. 12. 22.

베하.

다들 추운 날씨에 고생이 많으십니다!

서울은 지금 눈이 쌓여있네요. 제 자취방은 창문에서 일어나는 결로 현상 때문에 창틀에 물이 흥건합니다.

다들 더 추워질 겨울 대비 잘하시구요..

 

오늘의 포스팅 주제는 GCP가 제공하는 Service 중 하나인 App Engine과 App Engine에서 사용되는 각 언어 환경의 차이점에 대해 알아보겠습니다.

 


 

먼저, App Engine이 무엇인지 알아보아야겠죠?

App Engine이란 Web Application을 개발하고 호스팅하기 위한 완전 관리형 서버리스 플랫폼입니다.

사용되는 개발 언어, Library, Framework 중에서 선택하여 App을 개발한 후 App Engine에서 Provisioning Server를 관리하고 필요에 따라 App Instance를 확장할 수 있습니다.

 

 

위에서 말씀드렸던 것처럼 App Engine에선 개발을 위한 다양한 언어를 지원하는데요.

이 개발 언어에 따른 환경 설정도 다양합니다.

각 언어 환경에 따른 차이점을 설명드리는 게 오늘 포스팅의 핵심 주제가 되겠네요.

 

오늘 설명드릴 언어 환경은 크게 두가지 환경을 가지는데요.

첫번째는 Standard Environment, 두번째는 Flexible Environment입니다.

두 환경 모두 똑같이 Code 중심의 개발자 Workflow를 사용하고 증가하는 요구 처리를 위해 신속하고도 효율적으로 확장할 수 있으며 Google의 검증된 서비스 기술을 사용해 Web, Mobile, IoT Application을 최소한의 운영 Overhead로 빠르게 구축할 수 있습니다. 이와 같이 두 환경에는 공통점이 많지만 몇 가지 중요한 차이점이 있습니다.

 

공통적으로 Standard Environment는 무료 등급으로써, 짧은 배포 시간을 가지고 거의 즉시 확장되어 급격하게 증가하는 Traffic을 처리하도록 최적화되어 있습니다.

Flexible Environment는 무료 등급이 없으며, Application에 항상 최소 수의 실행 Instance가 존재합니다. Traffic을 지속적으로 제공하는 Application에서 사용할 때 가장 비용 효율적입니다.

또한 동일한 Compute Engine Network의 Resource에 Access 할 수 있다는 차이점이 있겠습니다.

이것 외에 각 언어 환경이 가지는 특징을 설명 드리겠습니다.

 

 

첫번째로 설명드릴 언어 환경은 Go입니다.

 

Go의 Standard Environment는 Traffic이 없는 경우 Application에서 Instance를 0개로 조정할 수 있습니다.

Go의 Flexible Environment는 위에서 설명드린 공통적 요소 외에는 큰 특징이 없습니다.

 

 

두번째 언어 환경은 PHP입니다.

 

PHP의 Standard Environment의 특징으로는 PHP 5 Runtime은 Native Code, File System Access 또는 임의의 Network 연결을 허용하지 않으며, 독점 API를 가지고 있다는 점이 있겠습니다.

 PHP의 Flexible Environment는 어떤 Framework, Library 또는 Binary도 실행할 수 있는 OpenSource Runtime이라는 특징이 있습니다.

 

 

세번째 언어 환경은 Java입니다.

 

Java의 Standard Environment는 OpenJDK 기반 Java Runtime은 표준 공용 Java Library를 지원한다는 특징이 있으며, 보안 관리자의 제어를 받지 않습니다.

즉, Code가 Java 권한 문제로 제한되지는 않습니다.

Java의 Flexible Environment는 전체 OpenSource 언어 Runtime입니다.

원하는 Framework, Library 또는 Binary를 사용할 수 있으며, Docker Container를 지원하는 모든 위치로 Code를 이동할 수 있습니다.

 

 

네번째 언어 환경은 Python입니다.

 

Python의 Standard Environment의 특징으로는 커뮤니티에서 더 이상 Python 2를 지원하지 않으므로 Python 2.7  Runtime은 권장되지 않는다는 주의사항 말고는 큰 특징이 없네요.

Python의 Flexible Environment는 Java와 마찬가지로 원하는 Framework, Library 또는 Binary를 사용할 수 있으며, Docker Container를 지원하는 모든 위치로 Code를 이동할 수 있습니다.

 

 

다섯번째 언어 환경인 Node.js는 간결한데요.

 

Node.js의 Standard Environment는 Runtime Image 맞춤설정 불가능하다는 점,

Node.js의 Flexible Environment는 Custom Machine Type을 사용하여 CPU 수 및 Memory Size 구성이 가능하다는 점이 있습니다.

 


 

이외에도 App Engine이 제공하는 언어 환경은 많습니다.

엔지니어인 동료분들이 보기에 개발 언어마다 가지는 특징과 각 언어 환경의 차이점이 크게 와닿지 않을 수도 있지만, 뭐 모든 눈에 익히면 좋지 않을까요!

GCP의 Service이기도 하구요.

 

다들 다가올 크리스마스 즐겁게 보내시구요. 연말 마무리 잘 하시길 바라겠습니다!

그럼 베바!!!

댓글