File Konfigurasi

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.

Grafik hierarki layanan YAML

Untuk project kecil dan sederhana, semua file aplikasi dapat berada di satu direktori:

Grafik hierarki layanan YAML kecil

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.