App Engine 표준 환경 사용자를 위한 App Engine 가변형 환경

이 가이드는 표준 환경에 익숙한 사용자를 대상으로 가변형 환경에 대한 안내를 제공합니다. 환경 간의 유사점과 차이점을 설명하고 두 환경을 모두 사용하는 애플리케이션을 위한 일반적인 아키텍처 권장사항도 제공합니다.

표준 환경에서 사용할 수 있는 서비스를 가변형 환경의 아날로그에 매핑하려면 표준 환경에서 가변형 환경으로 서비스 이전을 참조하세요.

유사점 및 차이점

두 환경 모두 App Engine의 배포, 제공, 확장 인프라를 제공한다는 유사점이 있습니다. 반면 환경의 애플리케이션 실행 방법, 애플리케이션의 외부 서비스 액세스 방법, 애플리케이션의 로컬 실행 방법, 애플리케이션 확장 방법에서 주요 차이가 발생합니다. 이러한 차이점에 대한 개괄적인 요약은 환경 선택을 참조하세요.

애플리케이션 실행

표준 환경에서는 애플리케이션이 샌드박스 내의 간단한 인스턴스에서 실행됩니다. 이 샌드박스가 애플리케이션에서 가능한 작업을 제한합니다. 예를 들어 애플리케이션에서 디스크에 쓰거나 허용 목록에 없는 바이너리 라이브러리를 사용할 수 없습니다. 표준 환경은 애플리케이션에서 사용할 수 있는 CPU 및 메모리 옵션의 양도 제한합니다. 이러한 제한 때문에 대부분의 App Engine 표준 애플리케이션이 HTTP 요청에 빠르게 응답하는 상태 비추적 웹 애플리케이션에 해당하는 경우가 많습니다.

반대로 가변형 환경에서는 제한이 적은 Google Compute Engine 가상 머신(VM)의 Docker 컨테이너에서 애플리케이션을 실행합니다. 예를 들면 원하는 프로그래밍 언어를 사용하고 디스크에 쓰고 원하는 라이브러리를 사용하고 여러 프로세스를 실행할 수도 있습니다. 가변형 환경에서는 인스턴스의 Compute Engine 머신 유형을 원하는 대로 선택해 애플리케이션에서 더 많은 메모리와 CPU를 이용할 수 있습니다.

외부 서비스 액세스

표준 환경에서는 일반적으로 애플리케이션이 기본 제공되는 google.appengine API를 통해 Cloud Datastore와 같은 서비스에 액세스합니다. 하지만 이 API를 가변형 환경에서는 사용할 수 없습니다. 대신 Google Cloud 클라이언트 라이브러리를 사용합니다. 클라이언트 라이브러리는 어디서나 작동해 애플리케이션의 이동성이 향상됩니다. 필요한 경우 보통은 별다른 수정 없이 가변형 환경에서 실행되는 애플리케이션을 Kubernetes Engine 또는 Compute Engine에서 실행할 수 있습니다.

로컬 개발

표준 환경에서는 일반적으로 App Engine SDK를 사용해 로컬에서 애플리케이션을 실행합니다. SDK는 애플리케이션 실행을 처리하고 App Engine 서비스를 에뮬레이션합니다. 가변형 환경에서는 SDK를 사용해 애플리케이션을 실행할 수 없습니다. 대신 가변형 환경에 맞게 작성된 애플리케이션을 어디서나 실행 가능한 표준 웹 애플리케이션처럼 작성해야 합니다. 언급했다시피 가변형 환경은 애플리케이션을 Docker 컨테이너에서 실행합니다. 따라서 애플리케이션을 로컬에서 테스트하려면 애플리케이션을 직접 실행하면 됩니다. 예를 들어 Django를 사용해 Python 애플리케이션을 실행하려면 python manage.py runserver를 실행하면 됩니다.

또한 로컬에서 실행되는 가변형 환경 애플리케이션은 Cloud Datastore와 같은 실제 Cloud Platform 서비스를 사용한다는 차이도 있습니다. 별도의 프로젝트를 사용해 로컬에서 테스트하고 가능한 경우 에뮬레이터를 사용합니다.

확장 특성

두 환경 모두 App Engine의 자동 확장 인프라를 사용하지만 확장 방법이 서로 다릅니다. 표준 환경은 인스턴스를 0개에서 수천 개로 빠르게 확장할 수 있습니다. 반대로 가변형 환경에는 실행 중인 애플리케이션의 인스턴스가 적어도 하나 있어야 하며 트래픽에 따라 확장하는 데 더 오랜 시간이 걸릴 수 있습니다.

가변형 환경을 사용하는 경우

가변형 환경은 표준 환경을 보완하기 위해 마련된 것입니다. 기존 애플리케이션이 표준 환경에서 실행되는 경우 보통은 전체 애플리케이션을 가변형 환경으로 이전할 필요가 없습니다. 대신 애플리케이션에서 CPU 또는 RAM이 추가로 필요하거나 특수한 타사 라이브러리 또는 프로그램이 필요하거나 표준 환경에서는 불가능한 작업을 수행해야 하는 부분을 파악하세요. 애플리케이션에서 이러한 부분을 찾은 후 가변형 환경을 사용해 이를 처리하는 작은 App Engine 서비스를 만듭니다. 표준 환경에서 실행되는 기존 서비스에서 HTTP, Cloud Tasks 알파 또는 Cloud Pub/Sub를 사용하는 다른 서비스를 호출할 수 있습니다.

예를 들어 표준 환경에서 실행되는 기존 웹 애플리케이션이 있는데 파일을 PDF로 변환하는 새 기능을 추가하려면 가변형 환경에서 PDF 변환만 처리하는 별도의 마이크로 서비스를 작성하면 됩니다. 이 마이크로 서비스는 한두 개의 요청 핸들러로 구성된 간단한 프로그램일 수 있습니다. 마이크로 서비스는 사용 가능한 Linux 프로그램을 설치하고 사용해 unoconv와 같은 변환을 지원할 수 있습니다.

기본 애플리케이션을 표준 환경에 유지하고 HTTP를 통해 직접 이 마이크로 서비스를 호출하거나 변환 시간이 오래 걸릴 것으로 예상되는 경우 애플리케이션에서 Cloud Tasks 알파 또는 Cloud Pub/Sub를 사용해 요청을 대기열에 추가할 수도 있습니다.

다음 과정

앱이 표준 환경에서 사용하는 서비스를 가변형 환경의 아날로그에 매핑

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

App Engine flexible environment for Python docs