Bermigrasi dari AWS ke Google Cloud: Bermigrasi dari AWS Lambda ke Cloud Run

Last reviewed 2024-10-21 UTC

Google Cloud menyediakan alat, produk, panduan, dan layanan profesional untuk membantu memigrasikan beban kerja serverless dari Amazon Web Services (AWS) Lambda ke Google Cloud. Meskipun Google Cloud menyediakan beberapa layanan tempat Anda dapat mengembangkan dan men-deploy aplikasi serverless, dokumen ini berfokus pada migrasi ke Cloud Run, lingkungan runtime serverless. AWS Lambda dan Cloud Run memiliki kesamaan seperti penyediaan resource otomatis, penskalaan oleh penyedia cloud, dan model harga bayar sesuai penggunaan.

Dokumen ini membantu Anda mendesain, menerapkan, dan memvalidasi rencana untuk memigrasikan workload serverless dari AWS Lambda ke Cloud Run. Selain itu, panduan ini menawarkan panduan bagi mereka yang mengevaluasi potensi manfaat dan proses migrasi tersebut.

Dokumen ini adalah bagian dari rangkaian multi-bagian tentang migrasi dari AWS ke Google Cloud yang mencakup dokumen berikut:

Untuk informasi selengkapnya tentang cara memilih lingkungan runtime serverless yang tepat untuk logika bisnis Anda, lihat Memilih lingkungan runtime penampung terkelola. Untuk pemetaan yang komprehensif antara layanan AWS dan Google Cloud, lihat membandingkan layanan AWS dan Azure dengan layanan Google Cloud.

Untuk migrasi ke Google Cloud ini, sebaiknya ikuti framework migrasi yang dijelaskan dalam Migrasi ke Google Cloud: Memulai.

Diagram berikut menggambarkan jalur perjalanan migrasi Anda.

Jalur migrasi dengan empat fase.

Anda dapat bermigrasi dari lingkungan sumber ke Google Cloud dalam serangkaian iterasi—misalnya, Anda dapat memigrasikan beberapa workload terlebih dahulu dan yang lainnya nanti. Untuk setiap iterasi migrasi terpisah, Anda harus mengikuti fase framework migrasi umum:

  1. Lakukan penilaian dan temukan workload dan data Anda.
  2. Rencanakan dan bangun fondasi di Google Cloud.
  3. Memigrasikan workload dan data Anda ke Google Cloud.
  4. Mengoptimalkan lingkungan Google Cloud Anda.

Untuk mengetahui informasi selengkapnya tentang fase framework ini, lihat Bermigrasi ke Google Cloud: Memulai.

Untuk mendesain rencana migrasi yang efektif, sebaiknya validasi setiap langkah rencana, dan pastikan Anda memiliki strategi rollback. Untuk membantu Anda memvalidasi rencana migrasi, lihat Bermigrasi ke Google Cloud: Praktik terbaik untuk memvalidasi rencana migrasi.

Memigrasikan beban kerja serverless sering kali tidak hanya memindahkan fungsi dari satu penyedia cloud ke penyedia cloud lainnya. Karena aplikasi berbasis cloud mengandalkan jaringan layanan yang saling terhubung, migrasi dari AWS ke Google Cloud mungkin memerlukan penggantian layanan AWS dependen dengan layanan Google Cloud. Misalnya, pertimbangkan skenario saat fungsi Lambda Anda berinteraksi dengan Amazon SQS dan Amazon SNS. Untuk memigrasikan fungsi ini, Anda mungkin perlu menggunakan Pub/Sub dan Cloud Tasks untuk mendapatkan fungsi yang serupa.

Migrasi juga memberikan peluang berharga bagi Anda untuk meninjau keputusan arsitektur dan desain aplikasi serverless secara menyeluruh. Melalui peninjauan ini, Anda mungkin menemukan peluang untuk melakukan hal berikut:

  • Mengoptimalkan dengan fitur bawaan Google Cloud: Pelajari apakah layanan Google Cloud menawarkan keunggulan unik atau lebih sesuai dengan persyaratan aplikasi Anda.
  • Sederhanakan arsitektur Anda: Nilai apakah penyederhanaan dapat dilakukan dengan menggabungkan fungsi atau menggunakan layanan secara berbeda dalam Google Cloud.
  • Meningkatkan efisiensi biaya: Evaluasi potensi perbedaan biaya saat menjalankan aplikasi yang difaktorkan ulang di infrastruktur yang disediakan di Google Cloud.
  • Meningkatkan efisiensi kode: Faktorkan ulang kode Anda bersama dengan proses migrasi.

Rencanakan migrasi Anda secara strategis. Jangan melihat migrasi sebagai latihan rehosting (lift-and-shift). Gunakan migrasi sebagai peluang untuk meningkatkan kualitas desain dan kode aplikasi serverless secara keseluruhan.

Menilai lingkungan sumber

Pada fase penilaian, Anda akan menentukan persyaratan dan dependensi untuk memigrasikan lingkungan sumber ke Google Cloud.

Fase penilaian sangat penting untuk keberhasilan migrasi Anda. Anda perlu mendapatkan pengetahuan mendalam tentang workload yang ingin dimigrasikan, persyaratannya, dependensinya, dan tentang lingkungan Anda saat ini. Anda perlu memahami titik awal agar berhasil merencanakan dan menjalankan migrasi Google Cloud.

Fase penilaian terdiri dari tugas-tugas berikut:

  1. Mem-build inventaris workload yang komprehensif.
  2. Membuat katalog workload Anda sesuai dengan properti dan dependensinya.
  3. Latih dan ajari tim Anda di Google Cloud.
  4. Buat eksperimen dan bukti konsep di Google Cloud.
  5. Hitung total biaya kepemilikan (TCO) lingkungan target.
  6. Pilih strategi migrasi untuk workload Anda.
  7. Pilih alat migrasi Anda.
  8. Tentukan rencana dan linimasa migrasi.
  9. Validasi rencana migrasi Anda.

Untuk mengetahui informasi selengkapnya tentang fase penilaian dan tugas ini, lihat Bermigrasi ke Google Cloud: Menilai dan menemukan workload Anda. Bagian di bawah ini didasarkan pada informasi dalam dokumen tersebut.

Membuat inventaris workload AWS Lambda

Untuk menentukan cakupan migrasi, Anda membuat inventaris dan mengumpulkan informasi tentang workload AWS Lambda Anda.

Untuk membuat inventaris workload AWS Lambda, sebaiknya Anda menerapkan mekanisme pengumpulan data berdasarkan AWS API, alat developer AWS, dan antarmuka command line AWS.

Setelah membuat inventaris, sebaiknya kumpulkan informasi tentang setiap beban kerja AWS Lambda dalam inventaris. Untuk setiap beban kerja, fokuskan pada aspek yang membantu Anda mengantisipasi potensi gesekan. Selain itu, analisis beban kerja tersebut untuk memahami cara yang mungkin diperlukan untuk mengubah beban kerja dan dependensinya sebelum Anda bermigrasi ke Cloud Run. Sebaiknya mulai dengan mengumpulkan data tentang aspek berikut dari setiap workload AWS Lambda:

  • Kasus penggunaan dan desain
  • Repositori kode sumber
  • Artefak deployment
  • Pemanggilan, pemicu, dan output
  • Lingkungan runtime dan eksekusi
  • Konfigurasi workload
  • Kontrol dan izin akses
  • Persyaratan kepatuhan dan peraturan
  • Proses deployment dan operasional

Kasus penggunaan dan desain

Mengumpulkan informasi tentang kasus penggunaan dan desain beban kerja membantu dalam mengidentifikasi strategi migrasi yang sesuai. Informasi ini juga membantu Anda memahami apakah Anda perlu mengubah workload dan dependensinya sebelum migrasi. Untuk setiap workload, sebaiknya Anda melakukan hal berikut:

  • Dapatkan insight tentang kasus penggunaan tertentu yang ditayangkan oleh workload, dan identifikasi dependensi apa pun dengan sistem, resource, atau proses lainnya.
  • Analisis desain dan arsitektur beban kerja.
  • Menilai persyaratan latensi workload.

Repositori kode sumber

Membuat inventaris kode sumber fungsi AWS Lambda akan membantu jika Anda perlu memfaktorkan ulang workload AWS Lambda untuk kompatibilitas dengan Cloud Run. Membuat inventaris ini melibatkan pelacakan codebase, yang biasanya disimpan dalam sistem kontrol versi seperti Git atau di platform pengembangan seperti GitHub atau GitLab. Inventaris kode sumber Anda sangat penting untuk proses DevOps, seperti pipeline continuous integration dan continuous development (CI/CD), karena proses ini juga perlu diperbarui saat Anda bermigrasi ke Cloud Run.

Artefak deployment

Mengetahui artefak deployment yang diperlukan oleh workload adalah komponen lain dalam membantu Anda memahami apakah Anda mungkin perlu memfaktorkan ulang workload AWS Lambda. Untuk mengidentifikasi artefak deployment yang diperlukan workload, kumpulkan informasi berikut:

  • Jenis paket deployment untuk men-deploy workload.
  • Setiap lapisan AWS Lambda yang berisi kode tambahan, seperti library dan dependensi lainnya.
  • Semua ekstensi AWS Lambda yang menjadi dependensi workload.
  • Penentu yang Anda konfigurasikan untuk menentukan versi dan alias.
  • Versi workload yang di-deploy.

Pemanggilan, pemicu, dan output

AWS Lambda mendukung beberapa mekanisme pemanggilan, seperti pemicu, dan berbagai model pemanggilan, seperti pemanggilan sinkron dan pemanggilan asinkron. Untuk setiap workload AWS Lambda, sebaiknya kumpulkan informasi berikut yang terkait dengan pemicu dan pemanggilan:

  • Pemicu dan pemetaan sumber peristiwa yang memanggil workload.
  • Apakah beban kerja mendukung pemanggilan sinkron dan asinkron.
  • URL beban kerja dan endpoint HTTP(S).

Workload AWS Lambda Anda dapat berinteraksi dengan resource dan sistem lain. Anda perlu mengetahui resource apa yang menggunakan output workload AWS Lambda dan cara resource tersebut menggunakan output tersebut. Pengetahuan ini membantu Anda menentukan apakah Anda perlu mengubah apa pun yang mungkin bergantung pada output tersebut, seperti sistem atau beban kerja lainnya. Untuk setiap beban kerja AWS Lambda, sebaiknya kumpulkan informasi berikut tentang resource dan sistem lainnya:

  • Resource tujuan yang mungkin menerima peristiwa dari workload.
  • Tujuan yang menerima data informasi untuk pemanggilan asinkron.
  • Format untuk peristiwa yang diproses oleh beban kerja.
  • Cara workload AWS Lambda dan ekstensi berinteraksi dengan AWS Lambda API, atau AWS API lainnya.

Agar dapat berfungsi, workload AWS Lambda Anda mungkin menyimpan data persisten dan berinteraksi dengan layanan AWS lainnya. Untuk setiap beban kerja AWS Lambda, sebaiknya kumpulkan informasi berikut tentang data dan layanan lainnya:

  • Apakah workload mengakses virtual private cloud (VPC) atau jaringan pribadi lainnya.
  • Cara workload menyimpan data persisten, seperti dengan menggunakan penyimpanan data efemeral dan Amazon Elastic File System (EFS).

Lingkungan runtime dan eksekusi

AWS Lambda mendukung beberapa lingkungan eksekusi untuk workload Anda. Untuk memetakan lingkungan eksekusi AWS Lambda dengan benar ke lingkungan eksekusi Cloud Run, sebaiknya Anda menilai hal berikut untuk setiap workload AWS Lambda:

  • Lingkungan eksekusi beban kerja.
  • Arsitektur set instruksi prosesor komputer tempat beban kerja berjalan.

Jika workload AWS Lambda Anda berjalan di lingkungan runtime khusus bahasa, pertimbangkan hal berikut untuk setiap workload AWS Lambda:

  • Jenis, versi, dan ID unik lingkungan runtime khusus bahasa.
  • Setiap modifikasi yang Anda terapkan ke lingkungan runtime.

Konfigurasi workload

Untuk mengonfigurasi workload saat memigrasikannya dari AWS Lambda ke Cloud Run, sebaiknya nilai cara Anda mengonfigurasi setiap workload AWS Lambda.

Untuk setiap beban kerja AWS Lambda, kumpulkan informasi tentang setelan konkurensi dan skalabilitas berikut:

  • Kontrol konkurensi.
  • Setelan skalabilitas.
  • Konfigurasi instance beban kerja, dalam hal jumlah memori yang tersedia dan waktu eksekusi maksimum yang diizinkan.
  • Apakah workload menggunakan AWS Lambda SnapStart, konkurensi yang dicadangkan, atau konkurensi yang disediakan untuk mengurangi latensi.
  • Variabel lingkungan yang Anda konfigurasikan, serta variabel yang dikonfigurasi AWS Lambda dan menjadi dependensi workload.
  • Tag dan kontrol akses berbasis atribut.
  • Mesin status untuk menangani kondisi yang tidak biasa.
  • Image dasar dan file konfigurasi (seperti Dockerfile) untuk paket deployment yang menggunakan image container.

Kontrol dan izin akses

Sebagai bagian dari penilaian, sebaiknya Anda menilai persyaratan keamanan workload AWS Lambda dan konfigurasinya dalam hal kontrol dan pengelolaan akses. Informasi ini penting jika Anda perlu menerapkan kontrol serupa di lingkungan Google Cloud. Untuk setiap beban kerja, pertimbangkan hal berikut:

  • Peran dan izin eksekusi.
  • Konfigurasi pengelolaan akses dan identitas yang digunakan workload dan lapisannya untuk mengakses resource lainnya.
  • Konfigurasi identity and access management yang digunakan akun dan layanan lain untuk mengakses workload.
  • Kontrol Tata kelola.

Persyaratan kepatuhan dan peraturan

Untuk setiap beban kerja AWS Lambda, pastikan Anda memahami persyaratan kepatuhan dan peraturannya dengan melakukan hal berikut:

  • Tinjau setiap persyaratan kepatuhan dan peraturan yang harus dipenuhi beban kerja.
  • Tentukan apakah beban kerja saat ini memenuhi persyaratan ini.
  • Tentukan apakah ada persyaratan mendatang yang perlu dipenuhi.

Persyaratan kepatuhan dan peraturan mungkin tidak bergantung pada penyedia cloud yang Anda gunakan, dan persyaratan ini mungkin juga memengaruhi migrasi. Misalnya, Anda mungkin perlu memastikan bahwa traffic data dan jaringan tetap berada dalam batas geografi tertentu, seperti Uni Eropa (EU).

Menilai proses deployment dan operasional Anda

Sangat penting untuk memiliki pemahaman yang jelas tentang cara kerja proses deployment dan operasional Anda. Proses ini adalah bagian mendasar dari praktik yang menyiapkan dan memelihara lingkungan produksi Anda serta beban kerja yang berjalan di sana.

Proses deployment dan operasional Anda dapat mem-build artefak yang diperlukan oleh beban kerja Anda agar berfungsi. Oleh karena itu, Anda harus mengumpulkan informasi tentang setiap jenis artefak. Misalnya, artefak dapat berupa paket sistem operasi, paket deployment aplikasi, image sistem operasi container, atau lainnya.

Selain jenis artefak, pertimbangkan cara Anda menyelesaikan tugas-tugas berikut:

  • Kembangkan workload Anda. Nilai proses yang diterapkan tim pengembangan untuk mem-build workload Anda. Misalnya, bagaimana tim pengembangan Anda mendesain, melakukan coding, dan menguji workload?
  • Buat artefak yang Anda deploy di lingkungan sumber. Untuk men-deploy beban kerja di lingkungan sumber, Anda mungkin membuat artefak yang dapat di-deploy, seperti image container atau image sistem operasi, atau Anda mungkin menyesuaikan artefak yang ada, seperti image sistem operasi pihak ketiga dengan menginstal dan mengonfigurasi software. Mengumpulkan informasi tentang cara Anda membuat artefak ini membantu Anda memastikan bahwa artefak yang dihasilkan sesuai untuk deployment di Google Cloud.
  • Simpan artefak. Jika Anda membuat artefak yang disimpan di registry artefak di lingkungan sumber, Anda harus menyediakan artefak tersebut di lingkungan Google Cloud. Anda dapat melakukannya dengan menggunakan strategi seperti berikut:

    • Membuat saluran komunikasi antarlingkungan: Buat artefak di lingkungan sumber Anda dapat dijangkau dari lingkungan Google Cloud target.
    • Faktorkan ulang proses build artefak: Selesaikan pemfaktoran ulang kecil pada lingkungan sumber agar Anda dapat menyimpan artefak di lingkungan sumber dan lingkungan target. Pendekatan ini mendukung migrasi Anda dengan mem-build infrastruktur seperti repositori artefak sebelum Anda harus menerapkan proses build artefak di lingkungan Google Cloud target. Anda dapat menerapkan pendekatan ini secara langsung, atau Anda dapat mengembangkan pendekatan sebelumnya dengan membuat saluran komunikasi terlebih dahulu.

    Dengan memiliki artefak yang tersedia di lingkungan sumber dan target, Anda dapat berfokus pada migrasi tanpa harus menerapkan proses build artefak di lingkungan Google Cloud target sebagai bagian dari migrasi.

  • Pindai dan tanda tangani kode. Sebagai bagian dari proses build artefak, Anda mungkin menggunakan pemindaian kode untuk membantu Anda melindungi dari kerentanan umum dan ekspos jaringan yang tidak diinginkan, serta penandatanganan kode untuk membantu Anda memastikan bahwa hanya kode tepercaya yang berjalan di lingkungan Anda.

  • Deploy artefak di lingkungan sumber. Setelah membuat artefak yang dapat di-deploy, Anda mungkin akan men-deploy-nya di lingkungan sumber. Sebaiknya Anda menilai setiap proses deployment. Penilaian ini membantu memastikan bahwa proses deployment Anda kompatibel dengan Google Cloud. Hal ini juga membantu Anda memahami upaya yang pada akhirnya akan diperlukan untuk memfaktorkan ulang proses. Misalnya, jika proses deployment Anda hanya berfungsi dengan lingkungan sumber, Anda mungkin perlu memfaktorkan ulang proses tersebut untuk menargetkan lingkungan Google Cloud Anda.

  • Memasukkan konfigurasi runtime. Anda mungkin memasukkan konfigurasi runtime untuk cluster, lingkungan runtime, atau deployment beban kerja tertentu. Konfigurasi dapat menginisialisasi variabel lingkungan dan nilai konfigurasi lainnya seperti secret, kredensial, dan kunci. Untuk membantu memastikan proses injeksi konfigurasi runtime Anda berfungsi di Google Cloud, sebaiknya Anda menilai cara Anda mengonfigurasi workload yang berjalan di lingkungan sumber Anda.

  • Logging, pemantauan, dan pembuatan profil. Nilai proses logging, pemantauan, dan pembuatan profil yang Anda terapkan untuk memantau kondisi lingkungan sumber, metrik yang diinginkan, dan cara Anda menggunakan data yang disediakan oleh proses ini.

  • Autentikasi. Nilai cara Anda melakukan autentikasi terhadap lingkungan sumber.

  • Menyediakan dan mengonfigurasi resource Anda. Untuk menyiapkan lingkungan sumber, Anda mungkin telah mendesain dan menerapkan proses yang menyediakan dan mengonfigurasi resource. Misalnya, Anda mungkin menggunakan Terraform bersama dengan alat pengelolaan konfigurasi untuk menyediakan dan mengonfigurasi resource di lingkungan sumber Anda.

Menyelesaikan penilaian

Setelah Anda mem-build inventaris dari lingkungan AWS Lambda, selesaikan aktivitas fase penilaian lainnya seperti yang dijelaskan dalam Bermigrasi ke Google Cloud: Menilai dan menemukan beban kerja Anda.

Merencanakan dan membangun fondasi Anda

Pada fase perencanaan dan build, Anda akan menyediakan dan mengonfigurasi infrastruktur untuk melakukan hal berikut:

  • Dukung workload Anda di lingkungan Google Cloud.
  • Hubungkan lingkungan sumber dan lingkungan Google Cloud Anda untuk menyelesaikan migrasi.

Fase perencanaan dan build terdiri dari tugas-tugas berikut:

  1. Buat hierarki resource.
  2. Mengonfigurasi Identity and Access Management (IAM) Google Cloud.
  3. Menyiapkan penagihan.
  4. Menyiapkan konektivitas jaringan.
  5. Perketat keamanan Anda.
  6. Siapkan logging, pemantauan, dan pemberitahuan.

Untuk mengetahui informasi selengkapnya tentang setiap tugas ini, lihat Bermigrasi ke Google Cloud: Merencanakan dan membangun fondasi Anda.

Memigrasikan beban kerja AWS Lambda

Untuk memigrasikan workload dari AWS Lambda ke Cloud Run, lakukan hal berikut:

  1. Mendesain, menyediakan, dan mengonfigurasi lingkungan Cloud Run Anda.
  2. Jika perlu, faktorkan ulang beban kerja AWS Lambda Anda agar kompatibel dengan Cloud Run.
  3. Faktorkan ulang proses deployment dan operasional untuk men-deploy dan mengamati workload Anda di Cloud Run.
  4. Memigrasikan data yang diperlukan oleh workload AWS Lambda Anda.
  5. Validasi hasil migrasi dalam hal fungsi, performa, dan biaya.

Untuk membantu Anda menghindari masalah selama migrasi, dan untuk membantu memperkirakan upaya yang diperlukan untuk migrasi, sebaiknya evaluasi perbandingan fitur AWS Lambda dengan fitur Cloud Run yang serupa. Fitur AWS Lambda dan Cloud Run mungkin terlihat mirip saat Anda membandingkannya. Namun, perbedaan dalam desain dan penerapan fitur di kedua penyedia cloud dapat memberikan dampak yang signifikan pada migrasi Anda dari AWS Lambda ke Cloud Run. Perbedaan ini dapat memengaruhi desain dan keputusan pemfaktoran ulang Anda, seperti yang disoroti di bagian berikut.

Mendesain, menyediakan, dan mengonfigurasi lingkungan Cloud Run

Langkah pertama fase migrasi adalah mendesain lingkungan Cloud Run agar dapat mendukung beban kerja yang Anda migrasikan dari AWS Lambda.

Untuk mendesain lingkungan Cloud Run dengan benar, gunakan data yang Anda kumpulkan selama fase penilaian tentang setiap beban kerja AWS Lambda. Data ini membantu Anda melakukan hal berikut:

  1. Pilih resource Cloud Run yang tepat untuk men-deploy workload Anda.
  2. Buat desain konfigurasi resource Cloud Run Anda.
  3. Sediakan dan konfigurasikan resource Cloud Run.

Memilih resource Cloud Run yang tepat

Untuk setiap workload AWS Lambda yang akan dimigrasikan, pilih resource Cloud Run yang tepat untuk men-deploy workload Anda. Cloud Run mendukung resource utama berikut:

  • Layanan Cloud Run: resource yang menghosting lingkungan runtime dalam container, mengekspos endpoint unik, dan secara otomatis menskalakan infrastruktur yang mendasarinya sesuai permintaan.
  • Tugas Cloud Run: resource yang menjalankan satu atau beberapa penampung hingga selesai.

Tabel berikut merangkum cara resource AWS Lambda dipetakan ke resource Cloud Run utama ini:

Resource AWS Lambda Resource Cloud Run
Fungsi AWS Lambda yang dipicu oleh peristiwa seperti yang digunakan untuk situs dan aplikasi web, API dan microservice, pemrosesan data streaming, dan arsitektur berbasis peristiwa. Layanan Cloud Run yang dapat Anda panggil dengan pemicu.
Fungsi AWS Lambda yang telah dijadwalkan untuk dijalankan seperti untuk tugas latar belakang dan tugas batch. Tugas Cloud Run yang berjalan hingga selesai.

Selain layanan dan tugas, Cloud Run menyediakan resource tambahan yang memperluas resource utama ini. Untuk informasi selengkapnya tentang semua resource Cloud Run yang tersedia, lihat Model resource Cloud Run.

Mendesain konfigurasi resource Cloud Run

Sebelum menyediakan dan mengonfigurasi resource Cloud Run, Anda harus mendesain konfigurasinya. Opsi konfigurasi AWS Lambda tertentu, seperti batas resource dan waktu tunggu permintaan, sebanding dengan opsi konfigurasi Cloud Run yang serupa. Bagian berikut menjelaskan opsi konfigurasi yang tersedia di Cloud Run untuk pemicu layanan dan eksekusi tugas, konfigurasi resource, dan keamanan. Bagian ini juga menyoroti opsi konfigurasi AWS Lambda yang sebanding dengan opsi di Cloud Run.

Pemicu layanan Cloud Run dan eksekusi tugas

Pemicu layanan dan eksekusi tugas adalah keputusan desain utama yang perlu Anda pertimbangkan saat memigrasikan beban kerja AWS Lambda. Cloud Run menyediakan berbagai opsi untuk memicu dan menjalankan beban kerja berbasis peristiwa yang digunakan di AWS Lambda. Selain itu, Cloud Run menyediakan opsi yang dapat Anda gunakan untuk memutar beban kerja dan tugas terjadwal.

Saat memigrasikan workload, sebaiknya pahami terlebih dahulu pemicu dan mekanisme yang tersedia di Cloud Run. Informasi ini membantu Anda memahami cara kerja Cloud Run. Kemudian, Anda dapat menggunakan pemahaman ini untuk menentukan fitur Cloud Run mana yang sebanding dengan fitur AWS Lambda dan fitur Cloud Run mana yang dapat digunakan saat memfaktorkan ulang workload tersebut.

Untuk mempelajari pemicu layanan yang disediakan Cloud Run lebih lanjut, gunakan referensi berikut:

Untuk mempelajari lebih lanjut mekanisme eksekusi tugas yang disediakan Cloud Run, gunakan referensi berikut:

Untuk membantu Anda memahami mekanisme pemanggilan atau eksekusi Cloud Run mana yang sebanding dengan mekanisme pemanggilan AWS Lambda, gunakan tabel berikut. Untuk setiap resource Cloud Run yang perlu disediakan, pastikan untuk memilih mekanisme eksekusi atau pemanggilan yang tepat.

Fitur AWS Lambda Fitur Cloud Run
Pemicu HTTPS (URL fungsi) Pemanggilan HTTPS
Pemicu HTTP/2 (sebagian didukung menggunakan gateway API eksternal) Pemanggilan HTTP/2 (didukung secara native)
WebSocket (didukung menggunakan gateway API eksternal) WebSocket (didukung secara native)
T/A (koneksi gRPC tidak didukung) Koneksi gRPC
Pemanggilan asinkron Integrasi Cloud Tasks
Panggilan terjadwal Integrasi Cloud Scheduler
Pemicu berbasis peristiwa dalam format peristiwa eksklusif Pemanggilan berbasis peristiwa dalam format CloudEvents
Integrasi Amazon SQS dan Amazon SNS Integrasi Pub/Sub
AWS Lambda Step Functions Integrasi alur kerja
Konfigurasi resource Cloud Run

Untuk melengkapi keputusan desain yang Anda buat untuk memicu dan menjalankan workload yang dimigrasikan, Cloud Run mendukung beberapa opsi konfigurasi yang memungkinkan Anda menyesuaikan beberapa aspek lingkungan runtime. Opsi konfigurasi ini terdiri dari layanan dan tugas resource.

Seperti yang disebutkan sebelumnya, Anda dapat lebih memahami cara kerja Cloud Run dengan terlebih dahulu mengembangkan pemahaman tentang semua opsi konfigurasi yang tersedia di Cloud Run. Pemahaman ini kemudian membantu Anda membandingkan fitur AWS Lambda dengan fitur Cloud Run yang serupa, dan membantu Anda menentukan cara memfaktorkan ulang workload.

Untuk mempelajari lebih lanjut konfigurasi yang disediakan layanan Cloud Run, gunakan referensi berikut:

Untuk mempelajari lebih lanjut tugas yang disediakan Cloud Run, gunakan referensi berikut:

Untuk membantu Anda memahami opsi konfigurasi Cloud Run mana yang sebanding dengan opsi konfigurasi AWS Lambda, gunakan tabel berikut. Untuk setiap resource Cloud Run yang perlu Anda sediakan, pastikan untuk memilih opsi konfigurasi yang tepat.

Fitur AWS Lambda Fitur Cloud Run
Konkurensi yang disediakan Instance minimum
Serentak yang dicadangkan per instance
(Pool serentak dibagikan di seluruh fungsi AWS Lambda di akun AWS Anda.)
Instance maksimum per layanan
T/A (tidak didukung, satu permintaan dipetakan ke satu instance) Permintaan serentak per instance
T/A (bergantung pada alokasi memori) Alokasi CPU
Setelan skalabilitas Penskalaan otomatis instance untuk layanan
Keparalelan untuk tugas
Konfigurasi instance (CPU, memori) Batas CPU dan memori
Waktu eksekusi maksimum Waktu tunggu permintaan untuk layanan
Waktu tunggu tugas untuk tugas
AWS Lambda SnapStart Peningkatan CPU startup
Variabel lingkungan Variabel lingkungan
Penyimpanan data efemeral Pemasangan volume dalam memori
Koneksi Amazon Elastic File System Pemasangan volume NFS
Penyambungan volume S3 tidak didukung Penyambungan volume Cloud Storage
AWS Secrets Manager dalam beban kerja AWS Lambda Rahasia
URL beban kerja dan endpoint HTTP(S) URL yang ditetapkan secara otomatis
Integrasi Cloud Run dengan produk Google Cloud
Sesi persisten (menggunakan load balancer eksternal) Afinitas sesi
Penentu Revisi

Selain fitur yang tercantum dalam tabel sebelumnya, Anda juga harus mempertimbangkan perbedaan antara cara AWS Lambda dan Cloud Run menyediakan instance lingkungan eksekusi. AWS Lambda menyediakan satu instance untuk setiap permintaan serentak. Namun, Cloud Run memungkinkan Anda menetapkan jumlah permintaan serentak yang dapat ditayangkan oleh instance. Artinya, perilaku penyediaan AWS Lambda setara dengan menetapkan jumlah maksimum permintaan serentak per instance ke 1 di Cloud Run. Menetapkan jumlah maksimum permintaan serentak menjadi lebih dari 1 dapat menghemat biaya secara signifikan karena CPU dan memori instance digunakan bersama oleh permintaan serentak, tetapi hanya ditagih satu kali. Sebagian besar framework HTTP dirancang untuk menangani permintaan secara paralel.

Keamanan dan kontrol akses Cloud Run

Saat mendesain resource Cloud Run, Anda juga perlu memutuskan kontrol keamanan dan akses yang diperlukan untuk workload yang dimigrasikan. Cloud Run mendukung beberapa opsi konfigurasi untuk membantu Anda mengamankan lingkungan, dan menetapkan peran dan izin untuk workload Cloud Run Anda.

Bagian ini menyoroti kontrol keamanan dan akses yang tersedia di Cloud Run. Informasi ini membantu Anda memahami cara kerja workload yang dimigrasikan di Cloud Run dan mengidentifikasi opsi Cloud Run tersebut yang mungkin Anda perlukan jika memfaktorkan ulang workload tersebut.

Untuk mempelajari lebih lanjut mekanisme autentikasi yang disediakan Cloud Run, gunakan referensi berikut:

Untuk mempelajari lebih lanjut fitur keamanan yang disediakan Cloud Run, gunakan referensi berikut:

Untuk membantu Anda memahami kontrol akses dan keamanan Cloud Run mana yang sebanding dengan yang tersedia di AWS Lambda, gunakan tabel berikut. Untuk setiap resource Cloud Run yang perlu disediakan, pastikan untuk memilih kontrol akses dan fitur keamanan yang tepat.

Fitur AWS Lambda Fitur Cloud Run
Kontrol akses dengan pengelolaan dan akses identitas AWS Kontrol akses dengan IAM Google Cloud
Peran eksekusi Peran IAM Google Cloud
Batas izin Izin IAM dan audiens kustom Google Cloud
Mengontrol tata kelola Organization Policy Service
Penandatanganan kode Otorisasi biner
Akses VPC penuh Kontrol akses traffic keluar VPC terperinci

Menyediakan dan mengonfigurasi resource Cloud Run

Setelah memilih resource Cloud Run untuk men-deploy beban kerja, Anda akan menyediakan dan mengonfigurasi resource tersebut. Untuk informasi selengkapnya tentang penyediaan resource Cloud Run, lihat hal berikut:

Memfaktorkan ulang beban kerja AWS Lambda

Untuk memigrasikan workload AWS Lambda ke Cloud Run, Anda mungkin perlu memfaktorkan ulang. Misalnya, jika beban kerja berbasis peristiwa menerima pemicu yang berisi peristiwa Amazon CloudWatch, Anda mungkin perlu memfaktorkan ulang beban kerja tersebut agar dapat menerima peristiwa dalam format CloudEvents.

Ada beberapa faktor yang dapat memengaruhi jumlah pemfaktoran ulang yang Anda butuhkan untuk setiap beban kerja AWS Lambda, seperti berikut:

  • Arsitektur. Pertimbangkan cara beban kerja dirancang dalam hal arsitektur. Misalnya, beban kerja AWS Lambda yang telah memisahkan logika bisnis dari logika untuk mengakses API khusus AWS mungkin memerlukan refactoring yang lebih sedikit dibandingkan dengan beban kerja yang menggabungkan kedua logika tersebut.
  • Idempotensi. Pertimbangkan apakah workload bersifat idempotent sehubungan dengan inputnya. Workload yang idempoten terhadap input mungkin memerlukan lebih sedikit pemfaktoran ulang dibandingkan dengan workload yang perlu mempertahankan status tentang input yang telah diproses.
  • Status. Pertimbangkan apakah workload bersifat stateless. Workload stateless mungkin memerlukan lebih sedikit pemfaktoran ulang dibandingkan dengan workload yang mempertahankan status. Untuk mengetahui informasi selengkapnya tentang layanan yang didukung Cloud Run untuk menyimpan data, lihat Opsi penyimpanan Cloud Run.
  • Lingkungan runtime. Pertimbangkan apakah workload membuat asumsi tentang lingkungan runtime-nya. Untuk jenis workload ini, Anda mungkin perlu memenuhi asumsi yang sama di lingkungan runtime Cloud Run atau memfaktorkan ulang workload jika Anda tidak dapat mengasumsikan hal yang sama untuk lingkungan runtime Cloud Run. Misalnya, jika beban kerja memerlukan paket atau library tertentu untuk tersedia, Anda harus menginstalnya di lingkungan runtime Cloud Run yang akan menghosting beban kerja tersebut.
  • Injeksi konfigurasi. Pertimbangkan apakah workload mendukung penggunaan variabel lingkungan dan secret untuk memasukkan (menetapkan) konfigurasinya. Workload yang mendukung jenis injeksi ini mungkin memerlukan lebih sedikit pemfaktoran ulang dibandingkan dengan workload yang mendukung mekanisme injeksi konfigurasi lainnya.
  • API. Pertimbangkan apakah beban kerja berinteraksi dengan AWS Lambda API. Workload yang berinteraksi dengan API ini mungkin perlu difaktorkan ulang untuk menggunakan Cloud API dan Cloud Run API.
  • Pelaporan error. Pertimbangkan apakah beban kerja melaporkan error menggunakan output standar dan aliran error. Workload yang melakukan pelaporan error tersebut mungkin memerlukan lebih sedikit pemfaktoran ulang dibandingkan dengan workload yang melaporkan error menggunakan mekanisme lain.

Untuk mengetahui informasi selengkapnya tentang cara mengembangkan dan mengoptimalkan beban kerja Cloud Run, lihat referensi berikut:

Memfaktorkan ulang proses deployment dan operasional

Setelah memfaktorkan ulang workload, Anda akan memfaktorkan ulang proses deployment dan operasional untuk melakukan hal berikut:

  • Menyediakan dan mengonfigurasi resource di lingkungan Google Cloud Anda, bukan menyediakan resource di lingkungan sumber.
  • Build dan konfigurasikan workload, lalu deploy di Google Cloud, bukan men-deploynya di lingkungan sumber.

Sebelumnya, Anda telah mengumpulkan informasi tentang proses ini selama fase penilaian dalam proses ini.

Jenis pemfaktoran ulang yang perlu Anda pertimbangkan untuk proses ini bergantung pada cara Anda mendesain dan menerapkannya. Pemfaktoran ulang juga bergantung pada status akhir yang Anda inginkan untuk setiap prosesnya. Misalnya, pertimbangkan hal berikut:

  • Anda mungkin telah menerapkan proses ini di lingkungan sumber dan Anda bermaksud untuk merancang dan menerapkan proses serupa di Google Cloud. Misalnya, Anda dapat memfaktorkan ulang proses ini untuk menggunakan Cloud Build, Cloud Deploy, dan Infrastructure Manager.
  • Anda mungkin telah menerapkan proses ini di lingkungan pihak ketiga lain di luar lingkungan sumber Anda. Dalam hal ini, Anda perlu memfaktorkan ulang proses ini untuk menarget lingkungan Google Cloud, bukan lingkungan sumber Anda.
  • Gabungan dari pendekatan sebelumnya.

Pemfaktoran ulang proses deployment dan operasional dapat bersifat kompleks dan dapat membutuhkan upaya yang signifikan. Jika Anda mencoba melakukan tugas ini sebagai bagian dari migrasi workload, migrasi workload dapat menjadi lebih kompleks, dan dapat menimbulkan risiko bagi Anda. Setelah menilai proses deployment dan operasional, Anda mungkin telah memahami desain dan kompleksitasnya. Jika Anda memperkirakan bahwa Anda memerlukan upaya signifikan untuk memfaktorkan ulang proses deployment dan operasional, sebaiknya pertimbangkan untuk memfaktorkan ulang proses ini sebagai bagian dari project khusus yang terpisah.

Untuk mengetahui informasi selengkapnya tentang cara mendesain dan menerapkan proses deployment di Google Cloud, lihat:

Dokumen ini berfokus pada proses deployment yang menghasilkan artefak untuk di-deploy, dan men-deploynya di lingkungan runtime target. Strategi pemfaktoran ulang sangat bergantung pada kompleksitas proses ini. Daftar berikut menguraikan kemungkinan strategi pemfaktoran ulang umum:

  1. Menyediakan repositori artefak di Google Cloud. Misalnya, Anda dapat menggunakan Artifact Registry untuk menyimpan artefak dan mem-build dependensi.
  2. Faktorkan ulang proses build untuk menyimpan artefak di lingkungan sumber dan di Artifact Registry.
  3. Faktorkan ulang proses deployment Anda untuk men-deploy workload di lingkungan Google Cloud target. Misalnya, Anda dapat memulai dengan men-deploy sebagian kecil workload di Google Cloud, menggunakan artefak yang disimpan di Artifact Registry. Kemudian, Anda secara bertahap meningkatkan jumlah workload yang di-deploy di Google Cloud, hingga semua workload yang akan dimigrasikan berjalan di Google Cloud.
  4. Faktorkan ulang proses build Anda untuk menyimpan artefak hanya di Artifact Registry.
  5. Jika perlu, migrasikan artefak versi sebelumnya untuk di-deploy dari repositori di lingkungan sumber Anda ke Artifact Registry. Misalnya, Anda dapat menyalin image container ke Artifact Registry.
  6. Hentikan repositori di lingkungan sumber Anda saat Anda tidak lagi memerlukannya.

Untuk memfasilitasi rollback pada akhirnya karena masalah yang tidak terduga selama migrasi, Anda dapat menyimpan image container di repositori artefak saat ini di Google Cloud saat migrasi ke Google Cloud sedang berlangsung. Terakhir, sebagai bagian dari penghentian lingkungan sumber, Anda dapat memfaktorkan ulang proses build image container untuk menyimpan artefak di Google Cloud saja.

Meskipun mungkin tidak penting untuk keberhasilan migrasi, Anda mungkin perlu memigrasikan artefak versi sebelumnya dari lingkungan sumber ke repositori artefak di Google Cloud. Misalnya, untuk mendukung rollback workload ke titik waktu arbitrer, Anda mungkin perlu memigrasikan artefak versi sebelumnya ke Artifact Registry. Untuk informasi selengkapnya, lihat Memigrasikan image dari registry pihak ketiga.

Jika Anda menggunakan Artifact Registry untuk menyimpan artefak, sebaiknya konfigurasi kontrol untuk membantu Anda mengamankan repositori artefak, seperti kontrol akses, pencegahan eksfiltrasi data, pemindaian kerentanan, dan Otorisasi Biner. Untuk mengetahui informasi selengkapnya, lihat Mengontrol akses dan melindungi artefak.

Memfaktorkan ulang proses operasional

Sebagai bagian dari migrasi ke Cloud Run, sebaiknya faktorkan ulang proses operasional Anda untuk memantau lingkungan Cloud Run secara terus-menerus dan efektif.

Cloud Run terintegrasi dengan layanan operasional berikut:

Migrasikan data

Fase penilaian sebelumnya dalam proses ini seharusnya telah membantu Anda menentukan apakah beban kerja AWS Lambda yang Anda migrasikan bergantung pada atau menghasilkan data yang berada di lingkungan AWS Anda. Misalnya, Anda mungkin telah memutuskan bahwa Anda perlu memigrasikan data dari AWS S3 ke Cloud Storage, atau dari Amazon RDS dan Aurora ke Cloud SQL dan AlloyDB untuk PostgreSQL. Untuk mengetahui informasi selengkapnya tentang cara memigrasikan data dari AWS ke Google Cloud, lihat Bermigrasi dari AWS ke Google Cloud: Memulai.

Seperti pemfaktoran ulang proses deployment dan operasional, memigrasikan data dari AWS ke Google Cloud dapat bersifat kompleks dan dapat membutuhkan upaya yang signifikan. Jika Anda mencoba melakukan tugas migrasi data ini sebagai bagian dari migrasi workload AWS Lambda, migrasi dapat menjadi rumit dan dapat menimbulkan risiko bagi Anda. Setelah menganalisis data yang akan dimigrasikan, Anda mungkin akan memahami ukuran dan kompleksitas data. Jika Anda memperkirakan bahwa Anda memerlukan upaya signifikan untuk memigrasikan data ini, sebaiknya pertimbangkan untuk memigrasikan data sebagai bagian dari project khusus yang terpisah.

Memvalidasi hasil migrasi

Memvalidasi migrasi beban kerja Anda bukanlah peristiwa satu kali, tetapi proses berkelanjutan. Anda harus tetap berfokus pada pengujian dan validasi sebelum, selama, dan setelah bermigrasi dari AWS Lambda ke Cloud Run.

Untuk membantu memastikan keberhasilan migrasi dengan performa optimal dan gangguan minimal, sebaiknya gunakan proses berikut untuk memvalidasi beban kerja yang Anda migrasikan dari AWS Lambda ke Cloud Run:

  • Sebelum memulai fase migrasi, faktorkan ulang kasus pengujian yang ada untuk mempertimbangkan lingkungan Google Cloud target.
  • Selama migrasi, validasi hasil pengujian di setiap pencapaian migrasi dan lakukan pengujian integrasi yang menyeluruh.
  • Setelah migrasi, lakukan pengujian berikut:
    • Pengujian dasar pengukuran: Menetapkan tolok ukur performa beban kerja asli di AWS Lambda, seperti waktu eksekusi, penggunaan resource, dan rasio error dalam berbagai beban. Replikasi pengujian ini di Cloud Run untuk mengidentifikasi perbedaan yang dapat mengarah ke masalah migrasi atau konfigurasi.
    • Pengujian fungsional: Pastikan logika inti beban kerja Anda tetap konsisten dengan membuat dan menjalankan kasus pengujian yang mencakup berbagai skenario input dan output yang diharapkan di kedua lingkungan.
    • Pengujian beban: Tingkatkan traffic secara bertahap untuk mengevaluasi performa dan skalabilitas Cloud Run dalam kondisi dunia nyata. Untuk membantu memastikan migrasi yang lancar, atasi perbedaan seperti error dan batasan resource.

Mengoptimalkan lingkungan Google Cloud Anda

Pengoptimalan adalah fase terakhir dari migrasi Anda. Pada fase ini, Anda melakukan iterasi tugas pengoptimalan sampai lingkungan target memenuhi persyaratan pengoptimalan. Langkah-langkah setiap iterasi adalah sebagai berikut:

  1. Menilai lingkungan, tim, dan loop pengoptimalan Anda saat ini.
  2. Tetapkan persyaratan dan sasaran pengoptimalan Anda.
  3. Optimalkan lingkungan dan tim Anda.
  4. Sesuaikan loop pengoptimalan.

Anda mengulangi urutan ini sampai Anda mencapai sasaran pengoptimalan.

Untuk mengetahui informasi selengkapnya tentang cara mengoptimalkan lingkungan Google Cloud Anda, lihat Bermigrasi ke Google Cloud: Mengoptimalkan lingkungan Anda dan Proses pengoptimalan performa.

Langkah selanjutnya

Kontributor

Penulis:

Kontributor lainnya: