Menguji dan Men-deploy Aplikasi

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.

Pelajari cara menjalankan aplikasi secara lokal, men-deploy aplikasi, dan menguji aplikasi di App Engine.

Berjalan secara lokal

Untuk menguji fungsi aplikasi sebelum men-deploy, jalankan aplikasi Anda di lingkungan lokal dengan alat pengembangan yang biasa Anda gunakan. Misalnya, perintah go run.

Sebelum men-deploy aplikasi

Sebelum Anda dapat men-deploy aplikasi:

Men-deploy aplikasi Anda

Deploy aplikasi Anda ke App Engine menggunakan perintah gcloud app deploy.

Selama deployment, layanan Cloud Build akan membuat image container aplikasi Anda untuk dijalankan di lingkungan standar App Engine. Build dibuat di region aplikasi. Pelajari lebih lanjut di Mengelola image build.

Untuk men-deploy aplikasi secara terprogram, gunakan Admin API.

Men-deploy layanan

Anda dapat men-deploy aplikasi ke App Engine dengan men-deploy versi layanan aplikasi Anda dan setiap file konfigurasinya.

Untuk men-deploy versi layanan aplikasi Anda, jalankan perintah berikut dari direktori tempat file app.yaml layanan Anda berada:

gcloud app deploy

Jika Anda tidak menentukan file dengan perintah tersebut, hanya file app.yaml yang akan di-deploy di direktori Anda saat ini. Secara default, perintah deploy menghasilkan ID unik untuk versi yang Anda deploy, men-deploy versi tersebut ke project Google Cloud yang Anda konfigurasikan untuk digunakan Google Cloud CLI, dan merutekan semua traffic ke versi baru.

Anda dapat mengubah perilaku default perintah dengan menargetkan file tertentu atau menyertakan parameter tambahan:

  • Untuk men-deploy file konfigurasi lain dari layanan Anda, Anda harus menargetkan dan men-deploy setiap file secara terpisah. Contoh:
    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
  • Untuk menentukan ID versi kustom, gunakan flag --version.
  • Untuk mencegah agar traffic tidak dirutekan secara otomatis ke versi baru, gunakan flag --no-promote.
  • Untuk men-deploy ke project Google Cloud tertentu, gunakan flag --project.

Misalnya, untuk men-deploy layanan yang ditentukan oleh file app.yaml ke project Google Cloud tertentu, tetapkan ID versi kustom pada project tersebut, dan cegah agar traffic tidak dirutekan ke versi baru:

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

Untuk mengetahui informasi selengkapnya tentang lihat referensi gcloud app deploy.

Men-deploy beberapa layanan

Gunakan perintah deployment yang sama untuk men-deploy atau memperbarui beberapa layanan yang membentuk aplikasi Anda.

Untuk men-deploy beberapa layanan, deploy file app.yaml setiap layanan secara terpisah. Anda dapat menentukan beberapa file dengan satu perintah gcloud app deploy:

gcloud app deploy service1/app.yaml service2/app.yaml

Persyaratan untuk men-deploy beberapa layanan

  • Pertama-tama, Anda harus men-deploy versi aplikasi ke layanan default sebelum dapat membuat dan men-deploy layanan berikutnya.
  • ID setiap layanan Anda harus ditentukan dalam file konfigurasi app.yaml yang sesuai. Untuk menentukan ID layanan, sertakan definisi elemen service di setiap file konfigurasi. Secara default, mengecualikan definisi elemen ini dari file konfigurasi Anda akan men-deploy versi ke layanan default.

Melihat log build

Cloud Build melakukan streaming build dan men-deploy log yang dapat dilihat di bagian histori Cloud Build di Konsol Google Cloud. Untuk melihat build dalam region aplikasi, gunakan menu drop-down Region di bagian atas halaman untuk memilih region yang ingin Anda filter.

Mengabaikan file

Anda dapat menggunakan file .gcloudignore untuk menentukan file dan direktori yang tidak akan diupload ke App Engine saat men-deploy layanan Anda. Ini berguna jika Anda ingin mengabaikan artefak build dan file lain yang tidak perlu diupload dengan deployment.

Mengelola image build

Setiap kali Anda men-deploy versi baru, image container akan dibuat menggunakan layanan Cloud Build. Image container tersebut dibangun di region aplikasi, lalu dijalankan di lingkungan standar App Engine.

Image container yang telah dibangun disimpan dalam folder app-engine-tmp/app di Container Registry. Anda dapat mendownload gambar ini untuk disimpan atau dijalankan di tempat lain. Setelah deployment selesai, App Engine tidak lagi memerlukan image container. Perlu diperhatikan bahwa image tidak dihapus secara otomatis, jadi agar tidak melampaui kuota penyimpanan, tidak masalah jika Anda menghapus image yang tidak diperlukan. Untuk mengetahui informasi selengkapnya tentang cara mengelola image di Container Registry, lihat dokumentasi Container Registry.

Melihat aplikasi Anda

Setelah men-deploy aplikasi ke App Engine, Anda dapat menjalankan perintah berikut untuk meluncurkan browser dan melihatnya di https://PROJECT_ID.REGION_ID.r.appspot.com:

gcloud app browse

Menguji di App Engine sebelum mengalihkan traffic

Sebelum mengonfigurasi versi baru untuk menerima traffic, Anda dapat mengujinyadi App Engine. Misalnya, untuk menguji versi baru layanan default Anda:

  1. Deploy versi baru Anda, tetapi cegah traffic dirutekan secara otomatis ke versi baru:

    gcloud app deploy --no-promote

  2. Akses versi baru Anda dengan membuka URL berikut:

    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

    Sekarang Anda dapat menguji versi baru di lingkungan runtime App Engine. Anda dapat men-debug aplikasi dengan melihat log-nya. Untuk informasi selengkapnya, lihat Menulis Log Aplikasi.

    App Engine merutekan permintaan yang dikirim ke https://PROJECT_ID.REGION_ID.r.appspot.com ke versi yang sebelumnya dikonfigurasi untuk menerima traffic.

  3. Saat Anda ingin mengirim traffic ke versi baru, gunakan konsol Google Clouduntuk memigrasikan traffic:

    Mengelola versi

    Pilih versi yang baru saja Anda deploy dan klik Migrasikan traffic.

Anda dapat menggunakan proses yang sama untuk menguji versi baru layanan lain dengan mengganti default di URL dengan nama layanan Anda:

https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

Untuk informasi selengkapnya tentang menargetkan layanan dan versi tertentu, lihat Cara Permintaan Dirutekan.

Menggunakan variabel lingkungan build

Anda juga dapat menetapkan variabel lingkungan build untuk runtime yang mendukung buildpack Google Cloud.

Variabel lingkungan build adalah key-value pair yang di-deploy bersama aplikasi yang memungkinkan Anda meneruskan informasi konfigurasi ke buildpack. Misalnya, Anda mungkin ingin menyesuaikan opsi compiler. Anda dapat menambahkan atau menghapus variabel lingkungan build ini dengan mengonfigurasi kolom build_env_variables di file app.yaml.

Menggunakan server pengembangan lokal

Anda dapat menggunakan dev_appserver untuk menjalankan aplikasi secara lokal guna menyimulasikan aplikasi yang berjalan di App Engine produksi. Server pengembangan ini menyimulasikan sebagian lingkungan tempat aplikasi Anda berjalan, sehingga Anda dapat menguji aplikasi yang ditulis untuk runtime lingkungan standar apa pun.

Karena Go 1.11 telah mencapai akhir dukungan, Anda tidak dapat lagi menggunakan versi terbaru dev_appserver.py untuk menjalankan aplikasi secara lokal. Untuk terus menggunakan dev_appserver.py, ikuti petunjuk dalam Menggunakan server pengembangan lokal.

Menjalankan server pengembangan lokal

Setelah membuat file konfigurasi app.yaml untuk aplikasi, Anda dapat memulai server pengembangan lokal dengan perintah dev_appserver.py guna menjalankan aplikasi secara lokal.

  1. Guna mendapatkan kredensial akses untuk akun pengguna Anda, jalankan:

    gcloud auth login
    
  2. Izinkan aplikasi lokal Anda untuk sementara menggunakan kredensial pengguna guna mengakses API:

    gcloud auth application-default login
    
  3. Untuk memulai server pengembangan lokal:

    Dalam direktori yang berisi file konfigurasi app.yaml, jalankan perintah dev_appserver.py serta tentukan project ID dan jalur ke file app.yaml:

    python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py/dev_appserver.py --application=PROJECT_ID app.yaml

    Untuk mengubah port, sertakan opsi --port:

    python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py/dev_appserver.py --application=PROJECT_ID app.yaml --port=9999

    Ganti DEVAPPSERVER_ROOT dengan jalur ke folder tempat Anda mengekstrak versi devapp_server.py yang diarsipkan. Untuk informasi selengkapnya tentang mendownload dan menggunakan versi dev_appserver.py yang diarsipkan, lihat Menggunakan server pengembangan lokal.

    Untuk mempelajari opsi perintah dev_appserver.py lebih lanjut, lihat Opsi server pengembangan lokal.

  4. Saat server pengembangan lokal dimulai, server tersebut akan menyiapkan lingkungan pengembangan yang telah menginstal dependensi yang ditemukan dalam file requirements.txt Anda.

  5. Server pengembangan lokal sekarang berjalan dan memproses permintaan. Buka http://localhost:8080/ di browser web Anda untuk melihat cara kerja aplikasi.

    Jika Anda menentukan port kustom dengan opsi --port, jangan lupa untuk membuka browser ke port tersebut.

  6. Untuk menghentikan server lokal dari command line, tekan Control-C di keyboard.

Mendeteksi lingkungan runtime aplikasi

Untuk menentukan apakah kode Anda berjalan di produksi atau di server pengembangan lokal, Anda dapat memeriksa variabel lingkungan GAE_ENV:

if os.getenv('GAE_ENV', '').startswith('standard'):
  # Production in the standard environment
else:
  # Local execution.

Menggunakan server pengembangan lokal dengan layanan Google Cloud

Anda dapat mengintegrasikan dev_appserver dengan komponen Google Cloud lainnya.

Library klien cloud

Banyak Library Klien Cloud bergantung pada keberadaan variabel lingkungan GOOGLE_CLOUD_PROJECT, yang seharusnya berupa project ID Google Cloud Anda. Anda dapat menemukan nilainya dengan menjalankan perintah gcloud config list project atau melihat halaman project Anda di Konsol Google Cloud.

Untuk memastikan variabel lingkungan ini ditetapkan dengan benar selama pengembangan lokal, lakukan inisialisasi dev_appserver menggunakan parameter --application=PROJECT_ID seperti yang ditunjukkan pada contoh sebelumnya.

Emulator Cloud

Anda dapat menguji aplikasi dengan emulator untuk Cloud Datastore, Cloud Bigtable, dan Cloud Pub/Sub.

Memuat ulang perubahan requirements.txt dan app.yaml secara otomatis

Server pengembangan lokal akan otomatis menginstal dependensi yang ditemukan dalam file requirements.txt Anda. dev_appserver juga memungkinkan Anda menguji fungsionalitas yang dikonfigurasi melalui app.yaml. Misalnya, Anda dapat menguji kemampuan aplikasi untuk menampilkan file statis. Saat dev_appserver berjalan, setiap perubahan yang dibuat pada requirements.txt dan app.yaml akan membuat aplikasi otomatis dimulai ulang untuk mencerminkan perubahan ini. Hal ini dapat mengakibatkan penundaan sementara karena dependensi didownload dan diinstal.

Perutean dan pengelolaan instance di server pengembangan

Menemukan alamat instance

Server pengembangan lokal membuat semua instance penskalaan manual saat startup. Instance untuk layanan penskalaan otomatis dan dasar dikelola secara dinamis. Server menetapkan port untuk setiap layanan, dan klien dapat bergantung pada server untuk melakukan load balancing dan memilih instance secara otomatis. Penetapan port untuk menangani setiap layanan akan muncul di aliran pesan log server.

Berikut adalah port untuk aplikasi yang menentukan tiga layanan:

INFO Starting module "default" running at: http://localhost:8084
INFO Starting module "service1" running at: http://localhost:8082
INFO Starting module "service2" running at: http://localhost:8083

Saat Anda menggunakan alamat layanan, misalnya http://localhost:8082/, server akan membuat atau memilih instance layanan dan mengirimkan permintaan ke instance tersebut.

Server menetapkan port unik ke setiap instance layanan. Anda dapat menggunakan server admin untuk menemukan port ini. Ada port unik untuk server admin, yang muncul di log pesan:

INFO Starting admin server at: http://localhost:8000

Alamat ini akan mengarahkan Anda ke konsol server admin. Klik Instance untuk melihat status dinamis instance aplikasi Anda.

Entri terpisah akan muncul untuk setiap instance manual dan dasar. Nomor instance adalah link dengan alamat port unik untuk setiap instance. Klik link untuk mengirim permintaan langsung ke instance tersebut.

File dispatch

Jika aplikasi Anda menyertakan file dispatch.yaml, aliran pesan log akan menyertakan port dispatcher:

INFO Starting dispatcher running at: http://localhost:8080

Permintaan ke port ini diarahkan sesuai dengan aturan dalam file dispatch. Server tidak mendukung aturan file dispatch.yaml yang menyertakan nama host, misalnya, url: "customer1.myapp.com/*"). Aturan dengan pola jalur relatif (url: "*/fun", benar-benar berfungsi, sehingga Anda dapat menggunakan URL seperti http://localhost/fun/mobile untuk menjangkau instance. Server melaporkan error dalam aliran log jika Anda mencoba memulai aplikasi dengan file dispatch.yaml yang berisi aturan berbasis host.