App Engine 가변형 환경 Python 빠른 시작

이 빠른 시작에서는 짧은 메시지를 표시하는 작은 App Engine 앱을 만드는 방법을 보여줍니다.

시작하기 전에

이 샘플을 실행 및 배포하려면 다음 단계를 수행합니다.

  1. GCP Console을 사용하여 새 GCP 프로젝트를 만들고 App Engine 앱을 만든 후 결제를 사용 설정합니다.
    App Engine으로 이동

    메시지가 표시되면 App Engine 앱을 배치할 지역을 선택한 후 결제를 사용 설정합니다.

  2. 다음 필수 구성요소를 로컬로 설치합니다.
    1. git를 다운로드 및 설치합니다.
    2. Python 개발 환경을 준비합니다.
    3. Cloud SDK를 다운로드 및 설치합니다. Cloud SDK 페이지의 안내를 따라 gcloud 명령줄 도구에서 GCP 프로젝트 ID를 초기화 및 설정합니다.
      Cloud SDK 다운로드

App Engine 위치

App Engine은 지역을 기반으로 합니다. 즉, 앱을 실행하는 인프라가 특정 지역에 있으며, 해당 지역 내의 모든 영역에서 중복으로 사용할 수 있도록 Google이 관리합니다.

앱을 실행하는 지역을 선택하는 데 있어 중요한 요인은 지연 시간, 가용성, 내구성 요구사항을 충족하는 것입니다. 일반적으로 앱 사용자와 가장 가까운 지역을 선택할 수 있지만 앱에서 사용되는 다른 GCP 제품과 서비스 위치도 고려해야 합니다. 여러 위치에서 서비스를 사용하면 앱의 지연 시간과 가격에 영향을 미칠 수 있습니다.

다음 지역에서 App Engine을 사용할 수 있습니다.

  • northamerica-northeast1(몬트리올)
  • us-central(아이오와)
  • us-west2(로스앤젤레스)
  • us-east1(사우스캐롤라이나)
  • us-east4(북 버지니아)
  • southamerica-east1(상파울루)
  • europe-west(벨기에)
  • europe-west2(런던)
  • europe-west3(프랑크푸르트)
  • asia-northeast1(도쿄)
  • asia-east2(홍콩)
  • asia-south1(뭄바이)
  • australia-southeast1(시드니)

앱의 지역을 설정한 후에는 변경할 수 없습니다.

App Engine 애플리케이션을 이미 만든 경우, gcloud app describe 명령어를 실행하거나 GCP Console에서 App Engine 대시보드를 열어 지역을 확인할 수 있습니다. App Engine 애플리케이션 지역은 http://[YOUR_PROJECT_ID].appspot.com에 나열됩니다.

이 빠른 시작에서는 App Engine에 배포할 수 있는 Flask 웹 프레임워크로 작성된 간단한 Python 애플리케이션을 보여줍니다. 이 샘플에서는 Flask를 사용하지만 위와 같은 요구사항을 충족하는 모든 웹 프레임워크를 사용할 수 있습니다. 예를 들어 Django, Pyramid, Bottle, web.py 등의 프레임워크가 가능합니다.

Hello World 앱 다운로드

App Engine 가변형 환경에 앱을 배포하는 방법을 쉽게 이해할 수 있도록 간단한 Python용 Hello World 앱을 준비했습니다. Hello World를 로컬 머신에 다운로드하려면 Cloud Shell에서 다음 명령어를 실행하세요.

  1. Hello World 샘플 앱 저장소를 로컬 머신에 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    

    또는 ZIP 파일로 샘플을 다운로드하고 압축을 풉니다.

  2. 샘플 코드가 있는 디렉토리로 변경합니다.

    cd python-docs-samples/appengine/flexible/hello_world
    

로컬 머신에서 Hello World 실행

로컬 컴퓨터에서 Hello World 앱을 실행하려면 다음 단계를 따르세요.

Mac OS/Linux

  1. 격리된 Python 환경을 프로젝트 외부의 디렉토리에 만들고 활성화합니다.
    virtualenv env
    source env/bin/activate
  2. 프로젝트 디렉토리로 이동하여 종속 항목을 설치합니다.
    cd YOUR_PROJECT
    pip install  -r requirements.txt
  3. 애플리케이션을 실행합니다.
    python main.py
  4. 웹브라우저에 다음 주소를 입력합니다.
    http://localhost:8080

Windows

Cloud SDK를 설치한 경우 일반적으로 C:\python27_x64\(64비트 시스템)에 Python 2.7이 이미 설치되어 있습니다. PowerShell을 사용하여 Python 패키지를 실행합니다.

  1. PowerShell 설치 위치를 찾습니다.
  2. PowerShell 바로가기를 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 시작합니다.
  3. python 명령어를 실행해 봅니다. Python을 찾지 못한 경우 환경의 PATH에 Python 폴더를 추가합니다.
    $env:Path += ";C:\python27_x64\"
  4. 격리된 Python 환경을 프로젝트 외부의 디렉토리에 만들고 활성화합니다.
    python -m virtualenv env
    env\Scripts\activate
  5. 프로젝트 디렉토리로 이동하여 종속 항목을 설치합니다.
    cd YOUR_PROJECT
    python -m pip install -r requirements.txt
  6. 애플리케이션을 실행합니다.
    python main.py
  7. 웹브라우저에 다음 주소를 입력합니다.
    http://localhost:8080

샘플 앱의 Hello World 메시지가 페이지에 표시됩니다. 터미널 창에서 Ctrl+C 키를 눌러 웹 서버를 종료합니다.

App Engine에서 Hello World 배포 및 실행

App Engine 가변형 환경에 앱을 배포하려면 다음 단계를 따르세요.

  1. hello_world 디렉토리에서 다음 명령어를 실행하여 Hello World 앱을 배포합니다.

    gcloud app deploy

    선택적 플래그에 대해 알아보세요.

    일반적인 gcloud 명령어 플래그

    • 앱 버전을 고유하게 식별하는 ID를 지정하려면 --version 플래그를 포함합니다. 그렇지 않으면 플래그 한 개가 자동으로 생성됩니다. 예: --version [YOUR_VERSION_ID]
    • --project 도구에서 기본값으로 초기화한 값의 대체 GCP 프로젝트 ID를 지정하려면 gcloud 플래그를 포함합니다. 예: --project [YOUR_PROJECT_ID]

    예:

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    명령줄에서 앱을 배포하는 방법에 대한 자세한 내용은 앱 테스트 및 배포를 참조하세요. 전체 명령어 플래그 목록에 대해서는 gcloud app deploy 참조를 참조하세요.

  2. 브라우저를 실행하여 http://YOUR_PROJECT_ID.appspot.com에서 앱을 확인합니다.

    gcloud app browse
    여기서 YOUR_PROJECT_ID는 GCP 프로젝트 ID를 나타냅니다.

이번에는 App Engine 인스턴스에서 실행 중인 웹 서버가 Hello World 메시지를 전송하는 페이지를 제공합니다.

수고 많으셨습니다. App Engine 가변형 환경에 첫 Python 앱을 배포했습니다.

삭제 방법과 진행할 수 있는 다음 단계에 대해서는 다음 섹션을 참조하세요.

삭제

비용이 청구되지 않도록 GCP 프로젝트를 삭제하여 해당 프로젝트 내에서 사용되는 모든 리소스에 대한 청구를 중지할 수 있습니다.

  1. GCP Console에서 프로젝트 페이지로 이동합니다.

    프로젝트 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계

Hello World 앱을 완료했으므로 다음 샘플 앱인 Bookshelf 앱을 살펴볼 수 있습니다. Bookshelf 앱은 좀 더 완전한 앱이지만 데이터 저장소, 인증, 로깅, 게시/구독 등 여러 Cloud Platform 기능을 사용하는 기본 Python 웹 앱입니다.

Bookshelf 앱 가이드 시작

App Engine 가변형 환경에 대한 자세한 내용은 App Engine 개요를 참조하세요.

Hello World 코드 검토

Hello World는 가장 간단한 App Engine 앱으로, 서비스를 한 개만 포함하고 버전도 하나뿐이며 모든 코드가 앱의 루트 디렉토리에 있습니다. 이 섹션은 각 앱 파일을 자세히 설명합니다.

main.py

Hello World 앱은 파일 하나로 이루어진 기초적인 Flask 앱입니다.

import logging

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    return 'Hello World!'

@app.errorhandler(500)
def server_error(e):
    logging.exception('An error occurred during a request.')
    return """
    An internal error occurred: <pre>{}</pre>
    See logs for full stacktrace.
    """.format(e), 500

if __name__ == '__main__':
    # This is used when running locally. Gunicorn is used to run the
    # application on Google App Engine. See entrypoint in app.yaml.
    app.run(host='127.0.0.1', port=8080, debug=True)

app.yaml

app.yaml 파일은 앱의 배포 구성을 설명합니다.

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

여기에서 app.yaml은 앱에서 사용되는 런타임을 지정하고 env: flex를 설정하여 앱이 가변형 환경을 사용하도록 지정합니다.

entrypoint는 App Engine에 앱을 시작할 방법을 알려줍니다. 이 앱에서는 gunicorn을 사용하여 Python 앱을 제공합니다. $PORT 변수는 App Engine이 앱을 시작할 때 설정합니다. entrypoint에 대한 자세한 내용은 앱 시작을 참조하세요.

또한 선택적인 runtime_config 섹션은 Python 3을 사용하도록 python_version을 설정합니다. python_version을 지정하지 않으면 기본적으로 Python 2가 사용됩니다. python_version: 2를 명시적으로 지정할 수도 있습니다.

  • Python 런타임의 작동 방식에 대한 자세한 내용은 Python 런타임을 참조하세요.

  • 버전과 서비스를 활용할 수 있도록 앱을 설계하는 방법에 대한 자세한 내용은 App Engine 개요를 참조하세요.

  • App Engine의 구성 설정에 대한 자세한 내용은 app.yaml로 앱 구성을 참조하세요.

requirements.txt

requirements.txt 및 Python 패키지 관리자 pip를 사용하여 애플리케이션 종속 항목을 선언 및 설치합니다. Hello World에는 웹 프레임워크인 Flask 및 WSGI 서버인 Gunicorn이 필요합니다.

Flask==1.0.2
gunicorn==19.9.0

requirements.txt는 로컬에도 설치되고 App Engine에 배포할 때도 설치되는 라이브러리를 정의합니다.

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

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