Membuat Struktur Layanan Web di App Engine

ID region

REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.

Pelajari ID region lebih lanjut.

Gunakan dokumen berikut untuk memahami cara membuat struktur layanan dan resource terkait aplikasi Anda untuk App Engine.

Struktur direktori

Setiap versi layanan App Engine Anda ditentukan di file konfigurasi app.yaml. Untuk aplikasi sederhana, persyaratan minimum deployment adalah menentukan file app.yaml. File app.yaml bertindak sebagai deployment descriptor dan menentukan setelan jenis dan runtime penskalaan, pengendali, dan resource lainnya untuk versi layanan tertentu. Jika men-deploy beberapa versi layanan, Anda dapat membuat beberapa file YAML di direktori yang sama untuk merepresentasikan konfigurasi setiap versi.

Untuk setiap layanan, Anda dapat membuat direktori terpisah di root aplikasi saat Anda melakukan pengembangan secara lokal. Jika menghosting aplikasi di luar sistem kontrol versi (VCS), misalnya GitHub, Anda juga dapat menyusun struktur aplikasi agar menggunakan direktori terpisah dalam repositori, atau menggunakan repositori terpisah untuk setiap layanan. Setiap direktori atau repositori harus mewakili satu layanan dan berisi file app.yaml layanan tersebut beserta kode sumber yang terkait.

Anda memiliki opsi untuk menentukan nama unik untuk setiap file app.yaml layanan Anda. Misalnya, Anda dapat memberi nama file konfigurasi dengan nama layanan, atau menggunakan nama unik untuk mewakili setiap versi layanan tertentu tersebut, seperti service1.yaml atau app.standard.yaml.

File konfigurasi opsional lainnya harus berada di direktori root atau repositori layanan default aplikasi Anda. File konfigurasi opsional ini menerapkan setelan seluruh aplikasi yang tidak spesifik untuk layanan tertentu, termasuk file dispatch.yaml, index.yaml, dan cron.yaml.

Contoh

Contoh berikut menunjukkan tampilan aplikasi dengan tiga layanan jika Anda mengembangkan aplikasi secara lokal. dispatch.yaml opsional telah ditambahkan ke aplikasi tersebut di direktori root. Di root juga terdapat tiga direktori untuk setiap layanan aplikasi. Subdirektori untuk service1 menyertakan file sumber dan konfigurasi untuk layanan tersebut. Demikian pula, service2 dan service3 berada di direktori terpisah yang berisi file setiap layanan, meskipun service3 mencakup dua versi file konfigurasi YAML:

Grafik hierarki layanan YAML

Untuk satu aplikasi layanan, aplikasi tersebut hanya akan menyertakan layanan default dan semua file bisa berada di direktori yang sama, pada root aplikasi tersebut. Dalam contoh berikut, kemungkinan struktur dari satu aplikasi layanan didemonstrasikan dan mencakup file konfigurasi dispatch.yaml opsional dan dua file konfigurasi yang merepresentasikan versi berbeda dari layanan tersebut, service1.yaml dan service2.yaml:

Grafik hierarki layanan YAML kecil

Pertimbangan desain untuk waktu beroperasi instance

Kegagalan hardware atau software yang menyebabkan penghentian awal atau seringnya pemulaian ulang instance dapat terjadi tanpa peringatan dan dapat memerlukan waktu yang cukup lama untuk menyelesaikannya. Aplikasi Anda harus dapat menangani kegagalan tersebut.

Berikut beberapa strategi bagus untuk menghindari periode nonaktif karena instance dimulai ulang:

  • Kurangi jumlah waktu yang diperlukan untuk memulai ulang atau memulai instance baru.
  • Untuk komputasi yang berjalan lama, buat checkpoint secara berkala agar Anda dapat melanjutkan dari kondisi tersebut.
  • Aplikasi Anda harus dalam kondisi "stateless" sehingga tidak ada yang disimpan pada instance.
  • Gunakan antrean untuk menjalankan eksekusi tugas asinkron.
  • Jika Anda mengonfigurasi instance ke penskalaan manual:
    • Gunakan load balancing di berbagai instance.
    • Konfigurasikan lebih banyak instance dari yang diperlukan untuk menangani traffic normal.
    • Menulis logika penggantian yang menggunakan hasil yang disimpan dalam cache saat instance penskalaan manual tidak tersedia.

Pelajari instance selengkapnya di Cara Instance Dikelola.

Layanan default

Setiap aplikasi App Engine menyertakan layanan default. Anda harus men-deploy versi awal aplikasi Anda ke layanan default sebelum dapat membuat dan men-deploy layanan tambahan ke aplikasi Anda.

Layanan default dapat ditentukan secara opsional dalam app.yaml dengan setelan service: default.

Permintaan yang dikirim ke aplikasi Anda menggunakan project Google Cloud akan dikirim ke layanan default, misalnya, https://PROJECT_ID.REGION_ID.r.appspot.com. Untuk mempelajari lebih lanjut cara menargetkan layanan lainnya, lihat Berkomunikasi Antar-Layanan.

File konfigurasi opsional

File konfigurasi berikut mengontrol fitur opsional yang berlaku untuk semua layanan dalam satu aplikasi. Lihat topik berikut untuk mengetahui detail tentang setiap fitur opsional:

  • dispatch.yaml mengganti aturan default pemilihan rute dengan mengirimkan permintaan masuk ke layanan tertentu berdasarkan jalur atau nama host di URL.
  • index.yaml menentukan indeks yang diperlukan aplikasi Anda jika menggunakan kueri Datastore.
  • cron.yaml mengonfigurasi tugas terjadwal secara teratur yang beroperasi pada waktu yang telah ditentukan atau secara berkala.

Pertimbangan penyimpanan data dan file

Dari App Engine, Anda dapat dengan mudah mengakses layanan Google Cloud lainnya seperti Datastore, Cloud SQL, dan Cloud Storage.

Anda juga memiliki opsi untuk menggunakan database eksternal atau pihak ketiga jika database tersebut didukung oleh bahasa Anda dan dapat diakses dari instance App Engine.

Untuk mengetahui detail tentang cara menyimpan file di Google Cloud atau secara eksternal, baca artikel Memahami Penyimpanan Data dan File.

Anda juga dapat memilih cara menayangkan konten statis. Anda dapat menayangkan konten statis aplikasi langsung dari aplikasi tersebut di App Engine, menghosting konten statis di opsi Google Cloud seperti Cloud Storage, atau menggunakan jaringan penayangan konten (CDN) pihak ketiga. Untuk mengetahui informasi selengkapnya tentang cara menayangkan konten statis, lihat Menayangkan File Statis.

Langkah selanjutnya

Jika Anda menggunakan beberapa layanan dan ingin men-deploy-nya secara bersamaan, lihat langkah-langkah untuk men-deploy beberapa layanan.