Django 시작하기

Google Cloud에서 실행되는 Django 앱은 모든 Google 제품과 동일한 인프라에서 실행되므로 전반적으로 확장성이 향상됩니다.

호스팅 플랫폼

Google Cloud에서 Django를 배포할 때 사용할 수 있는 옵션은 다음과 같습니다.

Django 배포 옵션 원하는 경우 사용 필요한 경우 사용 안 함 시작하기
App Engine 표준 환경
  • 최소 구성
  • 서버 유지보수 불필요
  • 손쉬운 확장성
  • App Engine 표준 Python 환경에서 바이너리 실행 파일을 사용할 수 없음
App Engine 표준 환경의 Django
App Engine 가변형 환경
  • 대부분의 App Engine 이점
  • 커스텀 Docker 런타임
  • 전체 VM 제어(애플리케이션의 Docker 컨테이너 외부)
App Engine 가변형 환경의 Django
Cloud Run(완전 관리형)
  • 독립 실행형 컨테이너 환경의 Django
  • App Engine 없는 서버리스
  • 일련의 독립 실행형 마이크로서비스를 세밀하게 제어
  • GPU 또는 Kubernetes 클러스터 등의 커스텀 하드웨어
Cloud Run의 Django(완전 관리형)

VS Code용 Cloud Code를 사용하는 Cloud Run의 Django

Cloud Run for IntelliJ를 사용하는 Cloud Run의 Django
Google Kubernetes Engine(GKE)
  • 마이크로서비스 환경의 Django 컨테이너
  • 자체 컨테이너 기반 플랫폼 설계용 도구
  • 개발자가 인터넷을 통해 앱과 서비스를 구축할 수 있는 모든 기능을 갖춘 플랫폼 및 환경 컨테이너 기반 솔루션의 경우 App Engine 가변형 환경 또는 Cloud Run을 고려하세요.
Google Kubernetes Engine의 Django
Compute Engine
  • VM을 사용하는 컴퓨팅 인프라
  • Windows VM
  • 자체 인프라를 구성할 필요가 없는 서버리스 환경
Google Cloud Marketplace의 Django

데이터베이스

Django 객체 관계형 매퍼(ORM)는 SQL 관계형 데이터베이스에서 가장 잘 작동합니다. 새 프로젝트를 시작하는 경우 Cloud SQL을 선택하는 것이 좋습니다. Google이 관리 및 확장해주는 MySQL 또는 PostgreSQL 데이터베이스를 클릭 몇 번만으로 만들 수 있습니다.

Compute Engine 또는 다른 서비스에서 직접 관리하려는 경우 다른 SQL 데이터베이스를 사용할 수도 있습니다.

때로는 데이터 모델에 대한 확장성 또는 적합성과 같은 이유로 인해 NoSQL 데이터베이스를 사용합니다. Django ORM을 NoSQL 데이터베이스와 함께 사용할 수 있지만 몇 가지 제한사항이 있습니다. 예를 들어 Django에서는 다양한 유형의 데이터베이스 조인을 표현할 수 있지만 Datastore 및 기타 NoSQL 데이터베이스(예: MongoDB)에서는 이러한 조인이 지원되지 않습니다.

한 가지 가능한 방법은 데이터 유형마다 서로 다른 데이터베이스를 사용하도록 SQL과 NoSQL을 혼합하여 사용하는 것입니다.

확장성이 높은 관리형 NoSQL 솔루션이 필요하다면 SQL 솔루션보다 확장성이 뛰어난 비관계형 데이터베이스인 Datastore를 고려하세요.

MongoDB를 사용하기로 선택한 경우 Cloud Marketplace를 사용하여 배포하고 직접 관리하거나 mLab에서 제공하는 관리형 MongoDB 호스팅 서비스를 사용할 수 있습니다.

Django ORM을 NoSQL 솔루션과 함께 사용하는 방법으로 오랫동안 Django non-rel이 가장 많이 사용되었지만 이 프로젝트는 유지보수되지 않고 있습니다. Djangae라는 또 다른 프로젝트는 Django를 포크하지 않고도 Datastore에 Django ORM 백엔드를 제공하지만 App Engine에서는 지원되지 않습니다.

캐시

App Engine은 기본 제공 Memcache 서비스와 함께 제공됩니다. Compute Engine에 Memcache 시스템을 설치하려면 Cloud Marketplace를 사용하세요. Compute Engine 또는 GKE에 Memcache 시스템을 설치하려면 Memcached Docker 이미지를 사용하세요. 마찬가지로 Redis를 설치하려면 Cloud Marketplace 또는 Redis Docker 이미지를 사용하면 됩니다.

태스크 큐

App Engine은 장기 실행 백그라운드 작업을 위해 태스크 큐 기능이 기본 제공됩니다. App Engine 외부에서 Pub/Sub를 사용하여 Python용 Cloud Pub/Sub 태스크 큐(psq)로 태스크를 큐에 추가할 수 있습니다.

Cloud Marketplace에서 사용 가능한 다른 인기 있는 태스크 큐 옵션으로는 RabbitMQKafka가 있습니다. RabbitMQ 및 Kafka용 Docker 이미지도 있습니다.