Python Bookshelf 앱

Bookshelf 앱은 다음을 비롯해서 다양한 Google Cloud Platform(GCP) 제품의 사용 방법을 보여주기 위해 Python으로 작성된 샘플 웹 앱입니다.

  • App Engine 가변형 환경
  • Cloud SQL
  • Cloud Datastore
  • Cloud Storage
  • Cloud Pub/Sub

이 가이드에서는 Bookshelf 앱을 살펴보고 GCP에서 제공하는 익숙한 기술과 서비스를 사용하여 앱의 각 기능이 구현되는 방식도 설명합니다.

Bookshelf 앱은 Flask 웹 애플리케이션 프레임워크를 기반으로 합니다. 샘플 앱에서는 단순성과 편의성으로 인해 Flask를 사용하지만, 여기에서 설명하는 개념과 기술은 어떠한 프레임워크에도 적용될 수 있습니다. 이 앱은 Django와 같이 사용자가 선택한 다른 웹 앱 프레임워크에서도 구현할 수 있습니다.

가이드에서 설명되는 코드는 대규모 Flask 앱의 일반적인 패턴과 권장사항을 따릅니다. 특히 이 앱에서는 청사진앱 팩토리를 활용합니다. 이러한 패턴에 익숙하지 않은 경우 Flask 문서를 살펴보는 것이 좋습니다.

컨트롤 및 도서 표지를 표시하는 Bookshelf 앱의 스크린샷

Bookshelf 샘플 앱은 도서 제목 모음을 저장합니다. 앱에 액세스할 수 있는 사용자는 목록에 도서를 추가할 수 있습니다. 샘플 앱은 사용자에게 다음 기능을 제공합니다.

  • 도서 목록을 볼 수 있습니다.
  • 목록에서 도서를 추가 및 삭제할 수 있습니다.
  • 도서 세부정보를 수정할 수 있습니다.
  • 도서의 표지 이미지를 업로드할 수 있습니다.
  • Google 계정으로 로그인하고 목록에 추가한 도서를 볼 수 있습니다.

목표

  • 샘플 앱 복제 또는 다운로드
  • 앱 빌드 및 로컬 머신에서 앱 실행
  • App Engine에 앱 배포
  • 샘플 코드 살펴보기
  • 앱에서 구조화된 데이터를 저장하는 방법 알아보기
  • 앱에서 Cloud Storage에 바이너리 데이터를 저장하는 방법 알아보기
  • 앱에서 사용자를 인증하는 방법 알아보기
  • 앱에서 Google Cloud Platform Console에 표시되는 이벤트 로그를 만드는 방법 알아보기
  • 앱이 Cloud Pub/Sub를 사용하여 백그라운드 작업자에게 작업을 보내는 방법 알아보기

비용

이 가이드에서는 Compute Engine 등 비용이 청구될 수 있는 GCP 구성요소를 사용합니다.

이 가이드는 여러 단계로 이루어졌으며 각 단계는 자체 페이지에 설명되어 있습니다. 이 가이드의 마지막 페이지에 있는 리소스 삭제 안내는 GCP 서비스 비용이 계속 청구되지 않도록 방지하기 위한 내용입니다. 가이드의 모든 단계를 완료하지 않으려는 경우에는 마지막 페이지의 삭제 안내를 참조하세요.

시작하기 전에

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

      메시지가 표시되면 App Engine 앱을 배치할 지역을 선택한 후 결제를 사용 설정합니다. GCP 프로젝트가 만들어지면 대시보드가 열립니다.

    2. {% dynamic if "no_credentials" in setvar.task_params %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic if not setvar.redirect_url %}{% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if setvar.in_henhouse_no_auth_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic endif %}{% dynamic elif setvar.in_henhouse_service_account_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %}{% dynamic setvar service_account_roles %}{% dynamic endsetvar %}{% dynamic endif %}{% dynamic setvar console %}{% dynamic if "no_steps" not in setvar.task_params %}
    3. {% dynamic endif %}{% dynamic if setvar.api_list %}{% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %}GCP Console 프로젝트를 설정합니다.

      프로젝트 설정

      다음을 수행하려면 클릭:

      • 프로젝트를 만들거나 선택합니다.
      • 해당 프로젝트에 {% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}필요한{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %}를 사용 설정합니다.
      • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
      • 서비스 계정을 만듭니다.
      • 비공개 키를 JSON으로 다운로드합니다.
      • {% dynamic endif %}

      언제든지 GCP Console에서 이 리소스를 보고 관리할 수 있습니다.

      {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %}{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}필요한{% dynamic endif %}{% dynamic if "," in setvar.api_list %} APIs{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %}를 사용 설정합니다. {% dynamic endif %}

      {% dynamic if "," in setvar.api_list %} APIs{% dynamic else %} API{% dynamic endif %} 사용 설정

      {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
    4. {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}
  2. Cloud SDK를 다운로드, 설치, 초기화합니다.
    Cloud SDK 다운로드
  3. GCP 서비스로 인증하기 위한 로컬 사용자 인증 정보를 가져옵니다.
    gcloud auth application-default login
  4. 기본 프로젝트가 올바른지 확인합니다.
    gcloud config list
    출력에 나열된 프로젝트 ID가 이 가이드에서 사용하려는 프로젝트가 아닌 경우 프로젝트를 설정하세요.
    gcloud config set project [YOUR_PROJECT_ID]
    [YOUR_PROJECT_ID]는 이 가이드에 사용하기 위해 만들거나 선택한 프로젝트 ID입니다.
  5. 샘플 저장소를 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/getting-started-python.git

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

이 가이드에서는 개발자가 Python 프로그래밍에 익숙하고 Python 개발 환경을 갖추고 있다고 가정합니다. Python이 설치되어 있지 않으면 Python 개발 환경 설정을 참조하세요. Python이 설치되어 있는 경우에도 설치 안내를 검토하면 최신 Python 도구가 있는지 확인하는 데 유용합니다.

가이드 구조

Bookshelf 가이드는 여러 부분으로 구성되어 있으며 샘플 앱에서 다양한 GCP 서비스를 사용하는 방법을 보여줍니다.

이 가이드의 구조화된 데이터 부분에서는 샘플 앱이 SQL 또는 NoSQL 데이터베이스에 도서 정보를 저장하는 방법을 보여줍니다.

앱의 웹페이지에는 사용자가 도서의 제목, 저자, 설명, 발행일을 입력할 수 있는 양식이 표시됩니다. 앱은 입력한 각 도서에 대한 정보를 데이터베이스에 저장하므로 나중에 보거나 편집하기 위해 검색할 수 있습니다. 가이드의 이 단계에서는 Cloud SQL, Cloud Datastore, MongoDB의 세 가지 데이터베이스 중에서 선택할 수 있습니다. 이 중 한 데이터베이스로 이 단계를 완료한 후 다음 단계로 이동할 수 있습니다.

가이드의 Cloud Storage 부분에서는 샘플 앱이 Cloud Storage에 바이너리 데이터를 저장하는 방법을 보여줍니다. 사용자는 앱의 웹페이지에서 각 도서의 표지 이미지를 지정할 수 있습니다. 그러면 앱은 Cloud Storage 버킷에 표지 이미지를 저장합니다.

가이드의 승인 부분에서는 앱이 사용자에게 로그인 과정을 제공하는 방법을 보여줍니다. 사용자가 로그인하면 입력한 도서는 개별 사용자와 연결됩니다. 로그인한 사용자는 익명의 사용자가 만든 도서와 자신의 도서를 모두 볼 수 있습니다. 다른 사용자는 로그인한 사용자가 만든 도서를 볼 수 없습니다.

가이드의 로깅 부분에서는 앱이 Google Cloud Platform Console에 표시되는 로그를 작성하는 방법을 보여줍니다. 앱을 개발하는 동안 이러한 유형의 로그에서 진단 정보를 얻을 수 있습니다.

가이드의 Cloud Pub/Sub 부분에서는 앱이 Cloud Pub/Sub를 사용하여 백그라운드 작업자에게 작업을 보내는 방법을 보여줍니다. 작업자는 Google Books API에서 정보를 수집하고 데이터베이스에서 도서 정보를 업데이트합니다.

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

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