App Engine Standard Environment VS Flexible Environment on Google Cloud Platform (GCP) Versi Indonesia

   

Hai, Standard Environment & Flexible Environment memberi kita infrastruktur penerapan, penyajian, dan penskalaan App Engine (deployment, serving, and scaling infrastructure). Perbedaan utamanya adalah cara lingkungan menjalankan aplikasi Kita, cara aplikasi Kita mengakses layanan eksternal, cara Kita menjalankan aplikasi secara lokal, dan cara aplikasi Kita menskalakan (scales). Kita juga dapat merujuk pada memilih environment untuk ringkasan tingkat tinggi dari perbedaan ini.

Dalam Standard Environment, aplikasi Kita berjalan pada instance ringan di dalam sandbox. Sandbox membatasi apa yang dapat dilakukan aplikasi Kita. Misalnya, Sandbox hanya memungkinkan aplikasi yang kita buat menggunakan kumpulan pustaka biner terbatas (binary libraries), dan aplikasi kita tidak dapat menulis ke disk. Standard Environment juga membatasi pilihan CPU dan memori yang tersedia untuk aplikasi yang kita buat. Karena batasan ini, sebagian besar aplikasi standar App Engine cenderung menjadi aplikasi stateless web yang merespons permintaan HTTP dengan cepat.

Stateless Application adalah suatu model aplikasi yang selalu memberikan respon sama terhadap setiap client yang mengakses web ataupun aplikasi tertentu. Contoh Stateless Application : Web Statis atau bisa juga web HTML buatan sendiri, Aplikasi Kalkulator yg biasa ada di windows, dan bisa juga Protokol HTTP.

Sebaliknya, Flexible Environment menjalankan aplikasi yang kita buat di container Docker di mesin virtual (VM) Google Compute Engine, yang memiliki lebih sedikit batasan. Misalnya, Kita dapat menggunakan bahasa pemrograman apa pun pilihan KIta, menulis ke disk, menggunakan pustaka apa pun yang Anda inginkan, dan bahkan menjalankan banyak proses. Lingkungan yang fleksibel juga memungkinkan Anda memilih jenis mesin Compute Engine apa pun untuk instance Anda sehingga aplikasi Anda memiliki akses ke lebih banyak memori dan CPU.

Dalam Standard Environment, aplikasi yang kita buat, biasanya mengakses layanan seperti Datastore melalui API google.appengine bawaan. Namun, dalam Flexible Environment, API ini tidak lagi tersedia. Sebagai gantinya, gunakan pustaka klien Google Cloud. Pustaka klien ini bekerja di mana saja, yang berarti aplikasi Anda lebih portabel. Jika perlu, aplikasi yang berjalan di Flexible Environment biasanya dapat berjalan di Google Kubernetes Engine atau Compute Engine tanpa modifikasi yang banyak.

Di Standard Environment, Kita biasanya menjalankan aplikasi secara lokal menggunakan App Engine SDK. SDK menangani menjalankan aplikasi Anda dan mengemulasi layanan App Engine. Dalam Flexible Environment, SDK tidak lagi digunakan untuk menjalankan aplikasi Anda. Sebaliknya, aplikasi yang ditulis untuk Flexible Environment harus ditulis seperti aplikasi web standar yang dapat berjalan di mana saja. Seperti yang disebutkan, Flexible Environment hanya menjalankan aplikasi kita di container Docker. Artinya untuk menguji aplikasi secara lokal, Anda tinggal menjalankan aplikasi tersebut secara langsung. Misalnya, untuk menjalankan aplikasi Python menggunakan Django, Anda cukup menjalankan python manage.py runserver.

Perbedaan utama lainnya adalah aplikasi Flexible Environment yang berjalan secara lokal menggunakan layanan Cloud Platform yang sebenarnya, seperti Datastore. Gunakan proyek terpisah untuk pengujian secara lokal dan jika tersedia, gunakan emulator.

Karakteristik penskalaan (Scalling)

Meskipun kedua environment menggunakan infrastruktur Scalling otomatis App Engine, cara penskalaannya berbeda. Standard Environment dapat menskalakan dari nol instans hingga ribuan dengan sangat cepat. Sebaliknya, Flexible Environment harus memiliki setidaknya satu instance yang berjalan untuk setiap versi aktif dan dapat membutuhkan waktu lebih lama untuk meningkatkan skala sebagai respons terhadap lalu lintas.

Standard Environment menggunakan algoritme penskalaan otomatis yang dirancang khusus. Flexible Environment menggunakan Compute Engine Autoscaler. Perhatikan bahwa Flexible Environment tidak mendukung semua opsi penskalaan otomatis yang tersedia untuk Compute Engine. Pengembang harus menguji perilaku aplikasi mereka dalam berbagai kondisi. Misalnya, Anda harus memverifikasi bagaimana autoscaling merespons ketika aplikasi yang terikat CPU menjadi I / O-terikat selama periode ketika panggilan ke layanan jarak jauh memiliki latensi yang tinggi.

Maksimal Request Timeout

Request time out Standard Environment bervariasi dengan jenis penskalaan yang dipilih, Flexible Environment selalu memberlakukan batas waktu 60 menit. Untuk menghindari permintaan terhenti selama 60 menit penuh dan berpotensi menggunakan semua thread di server web.

Secara lengkap bisa kunjungi: https://cloud.google.com/appengine/docs/flexible/go/flexible-for-standard-users#:~:text=In%20the%20standard%20environment%2C%20you,used%20to%20run%20your%20application.

Pertanyaan:

Google App Engine memiliki dua mode pemilihan environment: Standard & Flexible. Pilihan selalu menimbulkan kebingungan, berikut merupakan penjelasan yang saya dapat dari medium.com https://medium.com/@venkat86.careers/how-to-choose-app-engine-environment-standard-flexible-9f4c26a723b0

Standard environment

Standard Environment adalah mode di mana Google Cloud memiliki kelas instance yang telah ditentukan sebelumnya seperti B1, B2… F4_1G. Ini lebih merupakan VM terkelola di mana appengine memiliki konfigurasi vm yang telah ditentukan sebelumnya dan kita akan dikenai biaya berdasarkan jam berjalan instance.

Keuntungan:
[1] Memungkinkan Zero downscaling.
[2] Patch keamanan otomatis untuk VM.
[3] Lingkungan pengembangan yang sangat canggih yang meniru pengaturan live environment sebenarnya untuk penerapan. Dapat menerapkan ke PROD bahkan dari Eclipse.
[4] Penerapan terjadi dalam beberapa detik
[5] Instance VM muncul dalam hitungan detik dalam kasus penskalaan otomatis.

Kekurangan:
[1] Salah satu kekurangan utamanya adalah tidak ada cara langsung untuk menggunakan resource mesin komputasi dari appengine. Untuk pengembang normal, ini seperti tidak dapat menghubungkan layanan REST-nya dengan MySQL yang berjalan di mesin komputasi.
[2] Tidak ada akses SSH.
[3] Tidak ada proses latar belakang yang dapat dijalankan. Alternatifnya Kita dapat menggunakan cron.yaml dan queues / TaskWorker untuk manipulasi latar belakang.
[4] Dengan proyek yang melibatkan multi threading dan proyek di mana kita memerlukan kinerja yang tinggi, lingkungan standar bisa menjadi penghalang.
[5] Untuk setiap instans, ada biaya mulai awal sebesar 15 menit waktu instans. Googe juga akan menagih Anda selama 15 menit setelah utas terakhir menyelesaikan eksekusi.

Flexible Environment

Lingkungan fleksibel adalah mode penggunaan dengan mesin aplikasi google tempat mesin virtual dikelola oleh tim menggunakan:
Kustomisasi runtime (Java8, Go, Ruby, dll., Runtime apa pun yang Anda butuhkan),
Kustomisasi infrastruktur (Docker, akses SSH, dll.) &
Kinerja (dijamin dengan pilihan VM yang penuh daya yang sesuai dengan kebutuhan Anda)

Kesimpulan

Gunakan Standard Environment appengine ketika kita menginginkan lebih sedikit penyesuaian (runtime, instance vm, keamanan, dll.) Dan ingin memasang dan bermain dengan Google App Engine
Gunakan Flexible Environment appengine ketika kita ingin menggunakan sumber daya mesin komputasi secara ekstensif dan menerapkan komponen / kerangka kerja pihak ketiga dalam infrastruktur Kita

Google merekomendasikan pendekatan campuran dan Anda dapat memigrasikan bagian dari aplikasi standar menjadi flexible.

   

Wahyu Amaldi, M.Kom has written 178 articles

Hallo Pembaca,
Saya merupakan konsultan di dunia SAP dan merupakan Spesialis .Net Programming.
Saya gemar berbagi pengalaman mengenai SAP & Dunia Programming, dan jika ada sesuatu yang perlu ditanyakan, bisa hubungi saya di email berikut ini:

Email 1 : wahyu.amaldi@outlook.com
Email 2 : wahyu.amaldi@ilmuprogram.com

Semoga Artikel yang Anda baca di website ini berguna dan dapat membantu Anda dalam menemukan solusi.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>