App Engine에 데이터와 파일을 저장하려면 Google Cloud 서비스 또는 사용자 언어가 지원되고 App Engine 인스턴스에서 액세스할 수 있는 다른 스토리지 서비스를 사용하면 됩니다. 타사 데이터베이스를 Compute Engine에 호스팅하거나, 다른 클라우드 제공업체에 호스팅하거나, 온프레미스에 호스팅하거나, 타사 공급업체에 관리를 맡길 수 있습니다.
Google Cloud Storage 서비스
가변형 환경에서 실행되는 App Engine 앱의 경우 다음 Google Cloud Storage 서비스 중 하나를 사용하는 것이 좋습니다.
- Datastore 모드의 Firestore: NoSQL 데이터베이스에 데이터 저장. Datastore 모드의 Firestore는 .NET 런타임을 제외한 모든 런타임에서 사용할 수 있습니다.
- MySQL용 Cloud SQL: MySQL 데이터베이스에 데이터 저장
- PostgreSQL용 Cloud SQL: PostgreSQL 데이터베이스에 데이터를 저장합니다.
- Cloud Storage: 런타임 환경에서 파일 읽고 쓰며 동영상, 이미지 또는 기타 정적 콘텐츠와 같은 정적 파일을 저장하고 제공합니다.
Cloud Storage 제품 페이지의 Google Cloud Storage 제품 전체 목록을 참조하세요.
Compute Engine에 호스팅
App Engine 인스턴스는 Compute Engine 인스턴스와 동일한 비공개 내부 네트워크에 속합니다. App Engine 앱은 같은 프로젝트에 속한 Compute Engine에 호스팅된 서비스와 통신할 때는 공개 인터넷을 경유할 필요가 없습니다. 대부분의 경우 앱이 인스턴스의 내부 IP 주소를 사용하여 서비스에 연결하므로, 데이터베이스에 외부 공개 IP 주소를 할당할 필요가 없습니다. 원하는 경우 공개 IP 주소를 할당하여 Google Cloud 외부에서 데이터베이스에 액세스할 수 있습니다.
Google Cloud Marketplace를 사용하면 Redis, MongoDB, PostgreSQL, Cassandra, Hadoop, Microsoft SQL Server와 같이 널리 사용되는 다수의 타사 데이터베이스를 신속하게 Compute Engine에 배포할 수 있습니다. MySQL 또는 PostgreSQL 배포에 대한 자세한 내용은 다음 가이드를 참조하세요.
기타 클라우드 제공업체
App Engine 앱은 다른 퍼블릭 클라우드에 호스팅된 외부 데이터베이스에 연결될 수 있습니다. 단, 해당 데이터베이스 서버와 방화벽이 연결을 허용하도록 적절히 구성되어 있어야 합니다. App Engine 앱은 해당 외부 서비스의 공개 IP 주소를 사용하여 인터넷을 통해 연결됩니다.
타사 공급업체가 관리하는 데이터베이스
다수의 공급업체가 MongoDB용 mLab과 같은 관리형 데이터베이스 서비스를 제공하며, Redis Labs는 호스팅된 Redis 캐싱을 제공합니다. 이러한 공급업체는 데이터베이스의 호스팅, 구성, 유지보수를 담당합니다. App Engine은 다른 퍼블릭 클라우드와 마찬가지로 해당 서비스의 공개 IP 주소를 사용하여 인터넷을 통해 외부 서비스에 연결될 수 있습니다.
온프레미스
기존 온프레미스 데이터베이스가 App Engine 앱에 액세스할 수 있도록 하려면 내부 네트워크와 방화벽을 구성하여 데이터베이스에 공개 IP 주소를 부여하거나 VPN을 사용하여 연결할 수 있습니다.
Cloud VPN을 설정하면 데이터베이스 서버를 공개 인터넷에 직접 노출하지 않고 App Engine 앱이 온프레미스 네트워크에 액세스할 수 있습니다. App Engine과 Compute Engine은 동일한 네트워킹 인프라를 사용하므로, VPN 연결과 데이터베이스 서버의 내부 IP 주소를 사용하여 App Engine 앱과 온프레미스 데이터베이스 간의 연결을 설정할 수 있습니다.
프로덕션 고려사항
다양한 측정항목에 따라 애플리케이션이 수평적으로 자동 확장되도록 App Engine을 구성할 수 있습니다. 웹 애플리케이션과 달리 데이터베이스는 확장에 대응하기 위해 까다로운 변경을 거쳐야 하는 경우가 많습니다. 프로덕션 애플리케이션에서 App Engine은 트래픽 급증 시 데이터베이스를 빠르게 가득 채울 수 있습니다. 따라서 데이터베이스를 구성하고 배포할 때 예상되는 평균 트래픽 부하뿐만 아니라 급증 시 부하도 고려해야 합니다.