Setiap versi layanan ditentukan dalam file .yaml
, yang memberikan nama layanan dan versi. File YAML biasanya menggunakan nama yang sama dengan layanan yang ditetapkan, tetapi hal ini tidak wajib. Jika men-deploy beberapa versi layanan, Anda dapat membuat beberapa file yaml di direktori yang sama, satu untuk setiap versi.
Biasanya, Anda membuat direktori untuk setiap layanan, yang berisi file YAML layanan dan kode sumber terkait. File konfigurasi tingkat aplikasi opsional (dispatch.yaml
, cron.yaml
, index.yaml
, dan queue.yaml
) disertakan dalam direktori aplikasi level teratas. Contoh di bawah ini menunjukkan tiga layanan.
Di service1
dan service2
, file sumber berada di level yang sama dengan file YAML. Di service3
, ada file YAML untuk dua versi.
Untuk project kecil dan sederhana, semua file aplikasi dapat berada di satu direktori:
Setiap file YAML harus menyertakan parameter versi. Untuk menentukan layanan default, Anda dapat menyertakan parameter service: default
secara eksplisit atau membiarkan parameter layanan tidak ada dalam file.
Setiap file konfigurasi layanan menentukan jenis penskalaan dan class instance untuk layanan/versi tertentu. Parameter penskalaan yang berbeda digunakan bergantung pada jenis penskalaan yang Anda tentukan. Jika Anda tidak menentukan penskalaan, penskalaan otomatis akan menjadi setelan default. Setelan penskalaan dan class instance dijelaskan di bagian referensi appengine-web.xml
.
Untuk setiap layanan, Anda juga dapat menentukan setelan yang memetakan permintaan URL ke skrip tertentu dan mengidentifikasi file statis untuk efisiensi server yang lebih baik. Setelan ini juga disertakan dalam file yaml dan dijelaskan di bagian referensi appengine-web.xml
.
Layanan default
Setiap aplikasi memiliki satu layanan default. Anda dapat menentukan layanan default di appengine-web.xml
dengan setelan service: default
, tetapi hal ini tidak perlu dilakukan. Semua parameter konfigurasi yang relevan dengan layanan dapat diterapkan ke layanan default.
File konfigurasi opsional
File konfigurasi ini mengontrol fitur opsional yang berlaku untuk semua layanan di aplikasi:
dispatch.yaml
mengganti aturan default pemilihan rute dengan mengirimkan permintaan masuk ke layanan tertentu berdasarkan jalur atau nama host di URL.queue.yaml
mengonfigurasi push queue dan pull queue.index.yaml
menentukan indeks yang diperlukan aplikasi Anda jika menggunakan kueri Datastore.cron.yaml
mengonfigurasikan secara teratur tugas terjadwal yang beroperasi pada waktu yang telah ditentukan atau secara berkala.
Untuk men-deploy update file konfigurasi ini ke App Engine, jalankan perintah berikut dari direktori tempat file tersebut berada:
gcloud app deploy [CONFIG_FILE]
Misalnya
Berikut adalah contoh cara mengonfigurasi berbagai file dalam struktur direktori WAR untuk aplikasi yang memiliki dua layanan: layanan default yang menangani permintaan web, ditambah layanan lain (bernama my-service
) untuk pemrosesan backend.
Dengan asumsi bahwa direktori EAR level atas adalah "my-application", tentukan file my-application/META-INF/appengine-application.xml
:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-application xmlns="http://appengine.google.com/ns/1.0">
<application>my-application</application>
</appengine-application>
Buat direktori WAR untuk dua layanan: my-application/default
dan my-application/my-service
.
Sekarang, buat file appengine-web.xml
di setiap WAR yang menentukan parameter untuk layanan. File harus menyertakan nama versi untuk layanan. Untuk menentukan layanan default, Anda dapat menyertakan parameter <service>default</service>
secara eksplisit atau membiarkannya di luar file. Berikut adalah file my-application/default/WEB-INF/appengine-web.xml
yang menentukan layanan default:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>my-application</application>
<module>default</module>
<version>uno</version>
<threadsafe>true</threadsafe>
</appengine-web-app>
File my-application/my-service/WEB-INF/appengine-web.xml
menentukan layanan yang akan menangani permintaan latar belakang:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>my-application</application>
<module>my-service</module>
<version>uno</version>
<threadsafe>true</threadsafe>
<manual-scaling>
<instances>5</instances>
</manual-scaling>
</appengine-web-app>
Terakhir, tentukan file my-application/META-INF/application.xml
yang menghitung layanan tersebut. Perhatikan bahwa layanan default harus menjadi layanan pertama yang tercantum.
<?xml version="1.0"
encoding="UTF-8"?>
<application
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/application_5.xsd"
version="5">
<description>GAE Java SuperFun app</description>
<display-name>SuperFun</display-name>
<!-- Services -->
<!-- The default service should be listed first -->
<module>
<web>
<web-uri>default</web-uri>
<context-root>default</context-root>
</web>
</module>
<module>
<web>
<web-uri>my-service</web-uri>
<context-root>my-service</context-root>
</web>
</module>
</application>
App Engine akan mengabaikan elemen <context-root>
, sehingga klien HTTP tidak perlu mengawalinya ke jalur URL saat menangani layanan.