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.

Menjalankan secara lokal

Untuk menguji aplikasi sebelum men-deploy, jalankan aplikasi Anda di lingkungan lokal dengan alat pengembangan yang biasa Anda gunakan. Sebaiknya gunakan alat Python standar, seperti virtualenv untuk membuat lingkungan yang terisolasi dan pytest untuk menjalankan pengujian unit dan pengujian integrasi, bukan bergantung pada dev_appserver, server pengembangan lokal yang disediakan dengan Google Cloud SDK.

Misalnya, Anda biasanya dapat menjalankan aplikasi Flask dengan server pengembangan Flask menggunakan:

python main.py

Mulai aplikasi Django menggunakan:

python manage.py runserver

Untuk menyimulasikan lingkungan App Engine produksi, jalankan server Antarmuka Gateway Server Web (WSGI) lengkap secara lokal. Gunakan perintah yang sama yang ditetapkan sebagai titik entri dalam file app.yaml, misalnya:

gunicorn -b :$PORT main:app

Sebelum men-deploy aplikasi

Sebelum men-deploy aplikasi:

Men-deploy aplikasi Anda

Deploy aplikasi Anda ke App Engine menggunakan perintah gcloud app deploy. Selama deployment, layanan Cloud Build membangun image container aplikasi Anda untuk dijalankan di lingkungan standar. Setiap build dijalankan di region yang sama dengan project Google Cloud Anda. Untuk mengetahui informasi selengkapnya, lihat 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 projectGoogle 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 projectGoogle 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.

Sebelum memulai:

  • 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.

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

Melihat log build

Cloud Build melakukan streaming build dan men-deploy log yang dapat dilihat di bagian Histori build Cloud Build di konsol Google Cloud. Untuk melihat build di region aplikasi, gunakan menu Region untuk memfilter berdasarkan region.

Mengelola image build

Setiap kali Anda men-deploy versi baru:

  1. App Engine membuat image container menggunakan layanan Cloud Build.

  2. Cloud Build mem-build image container di region aplikasi, dan berjalan di lingkungan standar App Engine.

  3. App Engine menyimpan image container yang telah di-build di Artifact Registry. Anda dapat mendownload gambar ini untuk disimpan atau dijalankan di tempat lain.

Setelah deployment selesai, App Engine tidak lagi memerlukan image container. Image container tidak otomatis dihapus. Agar tidak melampaui kuota penyimpanan, Anda dapat menghapus image yang tidak diperlukan dengan aman. Namun, jika Anda mungkin memerlukan gambar tersebut di masa mendatang atau ingin menyimpan salinan gambar, Anda harus mengekspor salinan sebelum penghapusan. Untuk mengetahui informasi selengkapnya tentang cara mengelola image di Artifact Registry, lihat Mengelola image.

Abaikan file

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

Melihat permohonan 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 agar traffic tidak 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. Jika Anda ingin mengirim traffic ke versi baru, gunakan Konsol Google Cloud untuk 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 mengetahui informasi selengkapnya tentang cara menargetkan layanan dan versi tertentu, lihat Cara permintaan dirutekan.

Menggunakan variabel lingkungan build

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

Variabel lingkungan build adalah key-value pair yang dapat Anda tentukan untuk mengonfigurasi buildpack yang digunakan untuk men-deploy aplikasi. Misalnya, Anda mungkin ingin menentukan opsi compiler.

Sebelum memulai:

  • Kunci harus diawali dengan huruf ASCII besar, dan dapat menyertakan huruf ASCII besar, angka, dan garis bawah.
  • Sebaiknya jangan membuat variabel dengan imbuhan kunci GOOGLE_*.
  • Kunci berikut dicadangkan untuk penggunaan Google:
    • GOOGLE_RUNTIME
    • GOOGLE_RUNTIME_VERSION
    • GOOGLE_ENTRYPOINT
    • GOOGLE_DEVMODE
  • Anda dapat menggunakan kunci apa pun yang didukung oleh buildpack.

Untuk menggunakan variabel lingkungan dengan buildpack, tentukan kolom build_env_variables dalam file app.yaml Anda.

Pelajari buildpack lebih lanjut.

Menggunakan server pengembangan lokal

Google Cloud CLI menyertakan server pengembangan lokal bernama dev_appserver yang dapat Anda jalankan secara lokal untuk 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.

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 Anda 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:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --application=PROJECT_ID app.yaml

    Untuk mengubah port, sertakan opsi --port:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --application=PROJECT_ID app.yaml --port=9999

    Untuk menguji aplikasi Python 3, jalankan dev_appserver.py dengan penafsir Python 3, Anda harus menentukan biner Python 3 dalam flag --runtime_python_path, misalnya:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --runtime_python_path=/usr/bin/python3 --application=PROJECT_ID app.yaml --port=9999

    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 Google Cloud yang bergantung pada keberadaan variabel lingkungan GOOGLE_CLOUD_PROJECT, yang akan menjadi 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 bahwa variabel lingkungan ini ditetapkan dengan benar selama pengembangan lokal, lakukan inisialisasi dev_appserver menggunakan parameter --application=PROJECT_ID seperti yang ditunjukkan pada contoh di atas.

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 dirutekan 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.

Menggunakan Cloud Trace

Cloud Trace berguna untuk memahami cara permintaan diterapkan melalui aplikasi Anda. Anda dapat memeriksa informasi latensi yang mendetail untuk sebuah permintaan atau melihat latensi agregat di seluruh aplikasi.

Untuk melihat detail trace di Cloud Trace, Anda dapat mengikuti Menemukan dan menjelajahi trace. Di Penjelajah Trace, Anda dapat menggunakan filter untuk memfilter berdasarkan layanan dan versi App Engine tertentu.