Menggunakan GKE dan Cloud Run secara bersamaan


Panduan ini dirancang untuk administrator infrastruktur dan operator aplikasi yang menjalankan beragam workload dalam container, serta ingin memanfaatkan keunggulan Google Kubernetes Engine (GKE) dan Cloud Run untuk men-deploy aplikasi ke Google Cloud Platform. Strategi campuran mendukung Anda untuk mengoptimalkan biaya, performa, dan overhead pengelolaan.

Anda harus sudah memahami:

Mengapa menggunakan GKE dan Cloud Run bersama-sama?

GKE dan Cloud Run menawarkan berbagai keuntungan dalam menjalankan aplikasi dalam container, dan mengakomodasi berbagai tingkat kompleksitas workload. Namun, Anda tidak perlu memilih di antara kedua platform tersebut. Anda dapat memanfaatkan keunggulan GKE dan Cloud Run secara bersamaan dengan memigrasikan workload di antara kedua platform tersebut sesuai kebutuhan.

Berikut adalah beberapa manfaat menggunakan kedua runtime untuk men-deploy workload:

  • GKE dan Cloud Run menawarkan tingkat portabilitas yang relatif tinggi:

    • Kedua platform menggunakan image container standar sebagai artefak deployment. Anda dapat menggunakan image yang sama untuk aplikasi Anda di kedua platform tanpa modifikasi apa pun, sehingga memungkinkan migrasi workload yang lancar antara GKE dan Cloud Run. Anda tidak perlu memperbarui penyiapan continuous integration untuk bermigrasi antara GKE dan Cloud Run, asalkan image container disimpan di Artifact Registry.

    • GKE dan Cloud Run menggunakan model API deklaratif. Cloud Run Admin API v1 dirancang agar kompatibel dengan Kubernetes API. Artinya, Anda dapat menggunakan konsep Kubernetes yang sudah dikenal seperti Deployment, Service, dan autoscaler Pod horizontal untuk mengelola layanan Cloud Run. Kemiripan ini memudahkan penerjemahan konfigurasi antara kedua platform.

    • Resource direpresentasikan dalam file YAML dengan struktur deklaratif dan standar yang sama, sehingga dapat dengan mudah dimigrasikan antar-runtime. Berikut ini contoh yang membandingkan file YAML dari deployment Kubernetes dan layanan Cloud Run.

  • GKE dan Cloud Run terintegrasi secara lancar dengan Cloud Logging dan Cloud Monitoring, sehingga Anda memiliki tampilan terpusat di Google Cloud Console untuk mengamati metrik aplikasi, apa pun platformnya. Anda juga dapat menggunakan pemantauan tujuan tingkat layanan (SLO) di kedua platform, dan melihat tampilan terpadu dari SLO di dasbor Cloud Monitoring.

  • Anda dapat mengimplementasikan continuous delivery ke resource GKE atau layanan Cloud Run menggunakan Cloud Deploy. Atau, jika mau, Anda dapat men-deploy aplikasi secara bersamaan ke GKE dan Cloud Run menggunakan deployment paralel.

  • Anda dapat memfasilitasi pengelolaan traffic lanjutan dengan menggunakan load balancer eksternal dan internal untuk layanan di GKE dan Cloud Run. Hal ini mencakup kemampuan untuk mengekspos endpoint eksternal sehingga Anda dapat men-deploy dan menjalankan URL yang berbeda untuk aplikasi yang sama di kedua platform. Anda juga dapat membagi traffic ke layanan yang sama di seluruh GKE dan Cloud Run, sehingga memungkinkan migrasi yang lancar dari satu platform ke platform lainnya.

  • Google Cloud menyediakan alat keamanan untuk meningkatkan postur keamanan Anda saat menggunakan kedua runtime. Pemindaian OS memungkinkan Anda memindai container untuk mencari kerentanan sebelum men-deploy ke salah satu platform. Kebijakan Otorisasi Biner pusat dapat menerapkan integrasi dengan bidang kontrol GKE dan Cloud Run untuk mengizinkan atau memblokir deployment image berdasarkan kebijakan yang Anda tentukan. Dengan Kontrol Layanan VPC, tim keamanan dapat menentukan kontrol perimeter yang terperinci di seluruh resource GKE dan Cloud Run Anda.

Membandingkan GKE dan Cloud Run

Untuk memanfaatkan fitur terbaik GKE dan Cloud Run, serta mengetahui kapan harus memindahkan workload di antara keduanya, penting untuk memahami perbedaan antara kedua layanan tersebut.

Fitur GKE Cloud Run
Deployment dan pengelolaan

Mengelola cluster Kubernetes, termasuk konfigurasi node, jaringan, penskalaan, dan upgrade.

Google Cloud mengelola infrastruktur dasar dan menyediakan alat untuk menyederhanakan operasi cluster, tetapi Anda tetap bertanggung jawab atas aspek inti Kubernetes.

Jalankan container langsung di atas infrastruktur Google Cloud yang skalabel.

Anda hanya perlu menyediakan kode sumber atau image container, dan Cloud Run dapat membangun container tersebut untuk Anda. Anda tidak perlu membuat cluster, atau menyediakan dan mengelola infrastruktur.

Kontrol dan fleksibilitas

Kontrol penuh atas cluster Kubernetes.

Anda dapat membuat penyesuaian lanjutan konfigurasi node, kebijakan jaringan, setelan keamanan, dan add-on.

Kontrol terbatas atas infrastruktur dasar.

Anda dapat mengonfigurasi hal-hal seperti variabel lingkungan, konkurensi, dan koneksi jaringan, tetapi Anda tidak dapat menyesuaikan infrastruktur atau lingkungan pokok. Ideal untuk kemudahan dan kecepatan.

Jenis aplikasi Mendukung aplikasi stateless dan stateful, serta cocok untuk aplikasi kompleks dengan kebutuhan resource tertentu. Paling cocok untuk layanan, layanan web, dan fungsi stateless, permintaan atau berbasis peristiwa.
Model penetapan harga Bayar per cluster per jam, terlepas dari mode operasi (Standar atau Autopilot), ukuran cluster, atau topologi. Bayar per penggunaan, dibulatkan ke 100 milidetik terdekat.

Kasus penggunaan

Anggaplah Anda adalah administrator platform di perusahaan retail yang membuat platform e-commerce besar. Anda memiliki workload dalam container berikut untuk di-deploy:

  • Situs dan aplikasi seluler frontend: Aplikasi web stateless yang menangani penjelajahan, penelusuran, dan checkout produk.

  • Pengelolaan inventaris produk: Layanan stateful yang mengelola ketersediaan dan update produk.

  • Mesin pemberi saran: Microservice kompleks yang menghasilkan rekomendasi produk yang dipersonalisasi untuk setiap pengguna.

  • Tugas batch processing: Mencakup tugas berkala seperti memperbarui katalog produk dan menganalisis perilaku pengguna.

Workload ini mewakili perpaduan layanan stateless dan stateful, sehingga Anda memutuskan untuk memanfaatkan GKE dan Cloud Run untuk mendapatkan performa yang optimal. Berikut adalah salah satu cara menerapkan pendekatan hybrid untuk beban kerja Anda.

  1. Setelah membaca kriteria kesesuaian workload Cloud Run, Anda memutuskan untuk menggunakan Cloud Run untuk tugas situs dan seluler, serta batch processing. Men-deploy layanan ini di Cloud Run memiliki manfaat berikut:

    • Penskalaan otomatis saat lonjakan traffic dan tugas batch besar ditangani tanpa intervensi manual.

    • Efisiensi biaya dengan model bayar per penggunaan. Anda hanya membayar saat pengguna menjelajah atau check out, dan saat resource digunakan selama eksekusi tugas batch.

    • Deployment yang lebih cepat karena update tersedia secara instan, yang meningkatkan pengalaman pengguna.

    • Integrasi yang mudah dengan layanan Google Cloud lainnya. Misalnya, untuk pemrosesan yang dipicu oleh peristiwa, Anda dapat menggunakan Cloud Functions untuk memulai tugas batch processing di Cloud Run, dan mengaktifkan alur kerja yang lancar.

  2. Pengelolaan inventaris produk adalah layanan stateful yang memerlukan kontrol mendetail dan mungkin solusi penyimpanan kustom. Anda memutuskan untuk menggunakan GKE untuk men-deploy layanan ini karena layanan ini menawarkan penyimpanan persisten dan memungkinkan Anda menambahkan volume untuk persistensi dan keandalan data produk.

  3. Mesin pemberi saran adalah microservice kompleks yang mendapatkan manfaat dari GKE. Dengan GKE, Anda dapat mengelola dependensi yang kompleks, serta menerapkan kontrol terperinci atas alokasi dan penskalaan resource.

GKE sangat cocok untuk arsitektur microservice yang kompleks, aplikasi stateful, workload yang memerlukan konfigurasi jaringan atau infrastruktur kustom, dan skenario yang memerlukan kontrol mendalam atas Kubernetes. Cloud Run paling cocok untuk aplikasi yang didorong oleh peristiwa. Ini ideal untuk layanan web stateless, API, tugas batch, dan beban kerja lain yang mendapatkan manfaat dari harga bayar per penggunaan.

Contoh sebelumnya menunjukkan bagaimana penggabungan GKE dan Cloud Run dapat memberikan solusi yang andal dan fleksibel untuk platform e-commerce Anda. Anda mendapatkan manfaat dari kedua platform tersebut; efisiensi serverless untuk workload stateless, dan kontrol Kubernetes untuk microservice yang kompleks dan komponen stateful.

Pertimbangan

GKE dan Cloud Run saling melengkapi, sehingga mampu memenuhi berbagai kebutuhan dalam lanskap aplikasi yang kompleks.

Berikut adalah beberapa pertimbangan saat mengadopsi pendekatan hybrid untuk men-deploy workload:

  • Jalankan microservice stateless di Cloud Run untuk efisiensi biaya dan skalabilitas.

  • Deploy aplikasi stateful kompleks yang memerlukan penyesuaian mendalam di GKE.

  • Jika Anda menggunakan jaringan pribadi di Google Cloud, untuk mengakses resource di cluster GKE dari layanan Cloud Run, Anda dapat mengirim permintaan ke jaringan Virtual Private Cloud (VPC) menggunakan traffic keluar VPC Langsung. Untuk mengakses Layanan cluster GKE, layanan Cloud Run harus terhubung ke jaringan VPC cluster, dan Layanan GKE harus menggunakan Load Balancer Jaringan passthrough internal.

  • Untuk memigrasikan traffic antara Cloud Run dan GKE, Anda dapat mengekspos endpoint eksternal di Load Balancer Aplikasi eksternal global. Jika Anda mengimplementasikan load balancer ini di depan layanan pada kedua runtime, Anda dapat men-deploy aplikasi yang sama di Cloud Run dan GKE, sehingga Anda dapat mengalihkan traffic secara bertahap dari satu platform ke platform lainnya.

  • Untuk mengekspos layanan Cloud Run dalam Virtual Private Cloud di belakang IP pribadi, gunakan load balancer internal.

Ingat, jika beban kerja Anda sudah ada di Cloud Run, Anda selalu dapat bermigrasi ke GKE sesuai kebutuhan.

Kapan sebaiknya tidak menggunakan GKE dan Cloud Run bersama-sama

Meskipun GKE dan Cloud Run menawarkan pendekatan yang menarik untuk banyak workload dalam container, terkadang penggunaan keduanya secara bersamaan mungkin tidak cocok. Berikut beberapa contoh kapan Anda mungkin memutuskan untuk tidak mengadopsi pendekatan hybrid:

  • Microservice yang dikaitkan secara erat: Jika microservice Anda sangat bergantung satu sama lain dan memerlukan komunikasi berlatensi rendah yang sering, pengelolaannya di seluruh platform terpisah dapat menimbulkan kompleksitas. Panggilan jaringan yang sering antar-platform dapat menambah overhead dan potensi bottleneck, sehingga memengaruhi performa.

  • Aplikasi lama dengan dependensi kustom: Jika aplikasi Anda mengandalkan library, framework, atau konfigurasi tertentu yang tidak didukung oleh Cloud Run, penggunaannya untuk beberapa bagian aplikasi mungkin memerlukan pemfaktoran ulang atau solusi yang signifikan. Hal ini dapat meniadakan manfaat serverless dan menimbulkan overhead pemeliharaan khusus platform.

  • Batasan anggaran dengan workload yang dapat diprediksi: Jika workload Anda memiliki persyaratan resource yang konsisten dan Anda memiliki anggaran yang terbatas, model bayar per node GKE mungkin lebih hemat biaya daripada penagihan bayar per penggunaan Cloud Run. Jika Anda memiliki workload yang dapat diprediksi, Anda mungkin tidak sepenuhnya menggunakan manfaat penskalaan otomatis Cloud Run, yang membuat biaya tetap GKE lebih menarik.

Pendekatan terbaik pada akhirnya bergantung pada kebutuhan dan prioritas spesifik Anda. Evaluasi dengan cermat persyaratan aplikasi Anda, kendala resource, dan keahlian tim sebelum memutuskan arsitektur GKE dan Cloud Run hybrid.

Langkah selanjutnya