Memigrasikan layanan dari lingkungan standar ke lingkungan fleksibel

Lingkungan fleksibel App Engine tidak menyediakan library API yang ada di App Engine SDK. Jika memutuskan untuk memigrasikan aplikasi Anda dari lingkungan standar App Engine ke lingkungan fleksibel, Anda harus memperbarui kode agar dapat menggunakan layanan dan API yang tersedia di seluruh lingkungan Google Cloud.

Lihat bagian berikut untuk mengetahui petunjuk tentang cara memigrasikan layanan dan API tertentu dalam paket lama dari lingkungan standar ke lingkungan fleksibel.

Perbedaan antara lingkungan standar dan lingkungan fleksibel

Selain perbedaan utama yang diuraikan di sini, jalur dengan /_ah/ tidak diblokir di lingkungan fleksibel. Jika aplikasi Anda di lingkungan standar menggunakan jalur dengan /_ah/ untuk mengakses layanan tertentu, lihat bagian untuk layanan yang sesuai di bawah ini.

Identitas aplikasi

Saat berjalan di lingkungan fleksibel, Anda dapat menggunakan kombinasi variabel lingkungan dan layanan Metadata Compute Engine untuk mendapatkan informasi tentang aplikasi Anda:

Info aplikasi Cara mengakses
ID aplikasi/project Variabel lingkungan GOOGLE_CLOUD_PROJECT atau resource /project/project-id di server metadata
Nama host default Metode App Engine Admin API apps.get
Nama akun layanan Resource /instance/service-accounts di server metadata
Token akses OAuth 2.0 Resource /instances/service-accounts di server metadata. Lihat dokumentasi Mengautentikasi dengan kredensial akun layanan Compute Engine

Fungsi berikut tidak tersedia secara langsung:

  • Tidak ada bucket Cloud Storage default untuk project Anda. Untuk menggunakan bucket di aplikasi, Anda dapat membuat bucket Cloud Storage dan menggunakan project ID sebagai nama bucket. Anda kemudian dapat menggunakan variabel lingkungan GOOGLE_CLOUD_PROJECT dalam aplikasi sebagai nama bucket.
  • Anda tidak dapat menandatangani blob dengan akun layanan default. Anda dapat mengatasi masalah ini menggunakan Identity and Access Management (IAM) API atau dengan memberikan kunci pribadi akun layanan ke aplikasi Anda saat melakukan deployment.
  • Demikian pula, tidak ada API bawaan untuk mendapatkan sertifikat publik guna memverifikasi tanda tangan. Namun, setiap sertifikat publik akun layanan tersedia di https://www.googleapis.com/robot/v1/metadata/x509/{service account email}.
  • Perhatikan bahwa jika Anda menggunakan runtime Java, SystemProperty API App Engine tidak tersedia untuk lingkungan fleksibel App Engine. Namun, Anda dapat menetapkan variabel lingkungan di app.yaml dan menggunakan System.env untuk mendapatkan nilai, seperti yang dijelaskan dalam Menentukan variabel lingkungan.

Untuk mengetahui detail selengkapnya tentang variabel lingkungan, lihat halaman ringkasan runtime atau halaman referensi app.yaml.

Thread latar belakang

Karena lingkungan fleksibel tidak memiliki batasan sandbox, Anda bebas untuk membuat thread atau proses yang berada di luar lingkungan permintaan. Anda biasanya tidak perlu menggunakan apa pun selain alat multipemrosesan atau threading bawaan bahasa Anda.

Blobstore

Penggunaan layanan Blobstore sebagian besar telah digantikan oleh lingkungan standar dan lingkungan fleksibel dengan Cloud Storage. Gunakan library klien Google Cloud untuk menyimpan dan mengambil data di Cloud Storage.

Untuk informasi selengkapnya, lihat Menggunakan Cloud Storage

Kemampuan

Tidak ada fungsi yang mirip dengan layanan Kemampuan yang tersedia di luar lingkungan standar.

WebSockets

Lingkungan fleksibel App Engine mendukung WebSockets. Untuk informasi selengkapnya, lihat Membuat koneksi persisten dengan WebSockets.

Firestore dalam mode Datastore (Datastore)

Anda dapat mengakses Datastore dari mana saja menggunakan Datastore API. Gunakan library klien Google Cloud untuk menyimpan dan mengambil data dari Datastore.

Data Datastore yang sama tersedia terlepas dari apakah Anda menggunakan library App Engine, library klien Google Cloud, atau memanggil API secara langsung.

Jika Anda menggunakan library Python ndb dan lebih memilih akses Datastore bergaya NDB, sebaiknya Anda bermigrasi ke Cloud NDB. Lihat repositori Cloud NDB untuk mengetahui informasi selengkapnya.

Meskipun library klien Cloud NDB dan Datastore didukung pada Python 2 dan 3, dan berfungsi untuk lingkungan standar App Engine atau lingkungan fleksibel serta aplikasi non-App Engine, tujuan utamanya adalah untuk membantu developer Python 2 pindah dari paket layanan lama seperti App Engine ndb. Cloud NDB memiliki tujuan tambahan untuk mempertahankan pengalaman pengguna NDB.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan Datastore.

Image

Layanan Image tidak tersedia di luar lingkungan standar. Namun, Anda dapat menyajikan gambar dengan mudah secara langsung dari aplikasi atau langsung dari Cloud Storage.

Jika perlu melakukan pemrosesan gambar, Anda dapat menginstal dan menggunakan library pemrosesan gambar apa pun, seperti:

Layanan Gambar juga menyediakan fungsi untuk menghindari permintaan dinamis ke aplikasi Anda dengan menangani pengubahan ukuran gambar menggunakan URL penayangan. Jika menginginkan fungsi serupa, Anda dapat membuat image yang diubah ukurannya terlebih dahulu dan menguploadnya ke Cloud Storage untuk ditayangkan. Atau, Anda dapat menggunakan layanan jaringan penayangan konten (CDN) pihak ketiga yang menawarkan perubahan ukuran image.

Untuk referensi lainnya, lihat panduan berikut:

Logging

Seperti lingkungan standar, logging berfungsi secara otomatis di lingkungan fleksibel. Namun, log dikumpulkan dalam format yang berbeda. Log tidak akan dikelompokkan berdasarkan permintaan, dan log dari stdout serta stderr dikumpulkan secara terpisah.

Jika Anda menginginkan lebih banyak kontrol atas logging aplikasi, kemampuan untuk mengelompokkan log, dan kemampuan untuk mencatat metadata tambahan, Anda dapat menggunakan Cloud Logging API secara langsung dengan Library klien Google Cloud.

Untuk mengetahui detail selengkapnya, lihat Menulis log aplikasi.

Email

Layanan Email App Engine tidak tersedia di luar lingkungan standar. Anda harus menggunakan penyedia email pihak ketiga seperti SendGrid, Mailgun, atau Mailjet untuk kirim email. Semua layanan ini menawarkan API untuk mengirim email dari aplikasi yang berjalan di mana saja.

Untuk mengetahui detail selengkapnya, lihat Mengirim pesan dengan layanan pihak ketiga.

Memcache

Layanan Memcache tidak tersedia di lingkungan fleksibel App Engine. Untuk meng-cache data aplikasi, gunakan Memorystore untuk Redis.

Modul

Modules API tidak tersedia di luar lingkungan standar. Namun, Anda dapat menggunakan kombinasi variabel lingkungan dan App Engine Admin API untuk mendapatkan informasi tentang dan mengubah layanan aplikasi yang berjalan:

Informasi layanan Cara mengakses
Nama layanan saat ini Variabel lingkungan GAE_SERVICE
Versi layanan saat ini Variabel lingkungan GAE_VERSION
ID instance saat ini Variabel lingkungan GAE_INSTANCE
Nama host default Metode App Engine Admin API apps.get
Daftar layanan Metode App Engine Admin API apps.services.list
Daftar versi layanan Metode App Engine Admin API apps.services.versions.list
Versi default untuk layanan, termasuk pemisahan traffic Metode App Engine Admin API apps.services.get
Daftar instance yang berjalan untuk versi Metode App Engine Admin API apps.services.versions.instances.list

Anda juga dapat menggunakan App Engine Admin API untuk men-deploy dan mengelola layanan serta versi di aplikasi Anda.

Untuk mengetahui detail selengkapnya tentang variabel lingkungan, lihat halaman ringkasan runtime atau halaman referensi app.yaml.

Namespace

Di luar lingkungan standar, hanya Datastore yang mendukung multitenancy secara langsung. Untuk layanan lain, Anda perlu menangani multitenancy secara manual. Untuk memiliki instance layanan yang sepenuhnya terisolasi, Anda dapat membuat project baru secara terprogram menggunakan Cloud Resource Manager API dan mengakses resource di berbagai project.

OAuth

Layanan OAuth tidak tersedia di lingkungan fleksibel. Jika perlu memverifikasi token OAuth 2.0, Anda dapat melakukannya dengan metode oauth2.tokeninfo dari OAuth 2.0 API.

Eksternal

Layanan Remote API tidak berlaku untuk lingkungan fleksibel. Sebagian besar layanan pendukung, seperti Datastore, yang dapat diakses dari lingkungan fleksibel juga dapat diakses dari mana saja.

Layanan Penelusuran saat ini tidak tersedia di luar lingkungan fleksibel. Anda dapat menghosting database penelusuran teks lengkap seperti Apache Solr di Compute Engine atau Layanan Elasticsearch di Elastic Cloud dan mengaksesnya dari lingkungan standar dan lingkungan fleksibel.

Soket

Lingkungan fleksibel tidak memiliki pembatasan sandbox, sehingga Anda dapat membuka dan menggunakan soket keluar secara normal.

Antrean Tugas

Untuk menggunakan layanan Antrean Tugas push di luar lingkungan standar generasi pertama, Anda dapat menggunakan Google Tasks.

Dalam banyak kasus saat Anda mungkin menggunakan pull queue, seperti tugas mengantre atau pesan yang akan ditarik dan diproses oleh pekerja terpisah, Pub/Sub dapat menjadi alternatif yang baik karena menawarkan fungsionalitas dan jaminan pengiriman yang serupa.

URL Fetch

Layanan URL Fetch tidak tersedia di lingkungan fleksibel. Namun, tidak ada pembatasan sandbox, sehingga aplikasi Anda dapat menggunakan library HTTP apa pun untuk mendapatkan fungsi URL Fetch.

Jika Anda menggunakan Python, sebaiknya gunakan Requests. Jika Anda menggunakan Java, sebaiknya gunakan Library Klien HTTP Google untuk Java atau OkHttp.

Pengguna

Layanan Pengguna tidak tersedia di luar lingkungan standar. Anda dapat menggunakan mekanisme autentikasi berbasis HTTP apa pun di lingkungan fleksibel, seperti:

Perhatikan bahwa karena layanan Pengguna tidak tersedia, Anda tidak dapat menggunakan appengine-web.xml untuk Java atau app.yaml untuk runtime lainnya guna membuat URL yang hanya dapat diakses oleh administrator. Anda harus menangani logika ini dalam aplikasi.

Langkah selanjutnya

Untuk ringkasan perbedaan utama antara lingkungan fleksibel dan lingkungan standar dengan panduan untuk aplikasi yang menggunakan kedua lingkungan tersebut, lihat lingkungan fleksibel App Engine untuk pengguna lingkungan standar.