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 workload tanpa server dari Amazon Web Services (AWS) Lambda ke Google Cloud. Meskipun Google Cloud menyediakan beberapa layanan yang dapat Anda gunakan untuk 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 per penggunaan.

Dokumen ini membantu Anda mendesain, mengimplementasikan, dan memvalidasi rencana untuk memigrasikan workload serverless dari AWS Lambda ke Cloud Run. Selain itu, panduan ini menawarkan bimbingan 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 mengetahui informasi selengkapnya tentang cara memilih lingkungan runtime serverless yang tepat untuk logika bisnis Anda, lihat Memilih lingkungan runtime penampung terkelola. Untuk pemetaan komprehensif antara layanan AWS dan Google Cloud , lihat membandingkan layanan AWS dan Azure dengan layanan Google Cloud .

Untuk migrasi ini ke Google Cloud, 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 workload 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. Migrasikan workload dan data Anda ke Google Cloud.
  4. Optimalkan Google Cloud lingkungan Anda.

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

Untuk merancang 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 bergantung pada jaringan layanan yang saling terhubung, migrasi dari AWS ke Google Cloud mungkin memerlukan penggantian layanan AWS yang bergantung 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 mencapai fungsi yang serupa.

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

  • Mengoptimalkan dengan Google Cloud fitur bawaan: Cari tahu apakah Google Cloud layanan menawarkan keunggulan unik atau lebih sesuai dengan persyaratan aplikasi Anda.
  • Sederhanakan arsitektur Anda: Tentukan apakah penyederhanaan dapat dilakukan dengan menggabungkan fungsi atau menggunakan layanan secara berbeda dalam Google Cloud.
  • Meningkatkan efisiensi biaya: Evaluasi potensi perbedaan biaya dalam menjalankan aplikasi yang telah difaktorkan ulang di infrastruktur yang disediakan di Google Cloud.
  • Meningkatkan efisiensi kode: Lakukan pemfaktoran ulang kode Anda bersamaan dengan proses migrasi.

Rencanakan migrasi Anda secara strategis. Jangan melihat migrasi Anda sebagai latihan rehosting (lift and shift). Gunakan migrasi Anda sebagai peluang untuk meningkatkan kualitas desain dan kode aplikasi serverless Anda 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 tentang 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 jadwal 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.

Membangun inventaris beban kerja AWS Lambda Anda

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, fokuslah pada aspek yang membantu Anda mengantisipasi potensi gesekan. Selain itu, analisis workload tersebut untuk memahami cara Anda mungkin perlu mengubah workload 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 akses dan izin
  • Persyaratan kepatuhan dan peraturan
  • Proses deployment dan operasional

Kasus penggunaan dan desain

Mengumpulkan informasi tentang kasus penggunaan dan desain workload membantu 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 spesifik yang dilayani workload, dan identifikasi dependensi dengan sistem, resource, atau proses lain.
  • Menganalisis desain dan arsitektur beban kerja.
  • Menilai persyaratan latensi workload.

Repositori kode sumber

Menginventarisasi kode sumber fungsi AWS Lambda akan membantu jika Anda perlu memfaktorkan ulang workload AWS Lambda agar kompatibel 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 yang membantu Anda memahami apakah Anda mungkin perlu memfaktorkan ulang workload AWS Lambda. Untuk mengidentifikasi artefak deployment yang dibutuhkan workload, kumpulkan informasi berikut:

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

Pemanggilan, pemicu, dan output

AWS Lambda mendukung beberapa mekanisme pemanggilan, seperti pemicu, dan model pemanggilan yang berbeda, 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 workload 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 yang menggunakan output beban kerja 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 workload AWS Lambda, sebaiknya kumpulkan informasi berikut tentang resource dan sistem lainnya:

  • Tujuan resource yang mungkin dikirimi peristiwa oleh workload.
  • Tujuan yang menerima catatan informasi untuk pemanggilan asinkron.
  • Format untuk peristiwa yang diproses workload.
  • Cara workload AWS Lambda dan ekstensinya 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 workload 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, misalnya 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 petunjuk 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 pada lingkungan runtime.

Konfigurasi workload

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

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

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

Kontrol akses dan izin

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

  • Peran dan izin eksekusi.
  • Konfigurasi pengelolaan akses dan identitas yang digunakan workload dan lapisannya untuk mengakses resource lain.
  • Konfigurasi pengelolaan identitas dan akses 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:

  • Menilai persyaratan kepatuhan dan peraturan yang harus dipenuhi oleh workload.
  • Tentukan apakah workload saat ini memenuhi persyaratan ini.
  • Tentukan apakah ada persyaratan mendatang yang perlu dipenuhi.

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

Menilai proses deployment dan operasional Anda

Anda harus memahami dengan jelas cara kerja proses deployment dan operasional Anda. Proses ini adalah bagian mendasar dari praktik yang menyiapkan dan memelihara lingkungan produksi Anda serta workload 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 berikut:

  • Kembangkan workload Anda. Menilai proses yang telah diterapkan tim pengembangan untuk membangun workload Anda. Misalnya, bagaimana tim pengembangan Anda merancang, membuat kode, dan menguji workload Anda?
  • 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 diGoogle Cloud.
  • Menyimpan artefak. Jika Anda membuat artefak yang disimpan di artifact registry 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 lingkunganGoogle 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 target Google Cloud. Anda dapat menerapkan pendekatan ini secara langsung, atau Anda dapat mengembangkan pendekatan sebelumnya dengan membuat saluran komunikasi terlebih dahulu.

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

  • Pindai dan tandatangani kode. Sebagai bagian dari proses build artefak, Anda mungkin menggunakan pemindaian kode untuk membantu melindungi dari kerentanan umum dan eksposur jaringan yang tidak diinginkan, serta penandatanganan kode untuk membantu memastikan 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 memfaktorkannya ulang untuk menargetkan lingkungan Google Cloud Anda.

  • Memasukkan konfigurasi runtime. Anda mungkin memasukkan konfigurasi runtime untuk cluster, lingkungan runtime, atau deployment workload 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. Menilai proses logging, pemantauan, dan pembuatan profil yang Anda miliki untuk memantau kondisi lingkungan sumber, metrik yang relevan, dan cara Anda menggunakan data yang disediakan oleh proses ini.

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

  • Sediakan dan konfigurasi 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 manajemen 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 workload Anda.

Merencanakan dan membangun fondasi Anda

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

  • Mendukung 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. Mem-build 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 Anda

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

  1. Merancang, menyediakan, dan mengonfigurasi lingkungan Cloud Run Anda.
  2. Jika perlu, refaktorkan workload AWS Lambda Anda agar kompatibel dengan Cloud Run.
  3. Faktorkan ulang proses deployment dan operasional Anda untuk men-deploy dan mengamati workload Anda di Cloud Run.
  4. Migrasikan 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 cara fitur AWS Lambda dibandingkan dengan fitur Cloud Run yang serupa. Fitur AWS Lambda dan Cloud Run mungkin terlihat serupa saat Anda membandingkannya. Namun, perbedaan dalam desain dan penerapan fitur di kedua penyedia cloud dapat memberikan efek signifikan pada migrasi Anda dari AWS Lambda ke Cloud Run. Perbedaan ini dapat memengaruhi keputusan desain dan refaktorisasi Anda, seperti yang diuraikan di bagian berikut.

Merancang, menyediakan, dan mengonfigurasi lingkungan Cloud Run

Langkah pertama fase migrasi adalah mendesain lingkungan Cloud Run agar dapat mendukung workload 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. Rancang konfigurasi resource Cloud Run Anda.
  3. Sediakan dan konfigurasi 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 yang di-container, mengekspos endpoint unik, dan secara otomatis menskalakan infrastruktur yang mendasarinya sesuai permintaan.
  • Tugas Cloud Run: resource yang menjalankan satu atau beberapa container hingga selesai.

Tabel berikut merangkum cara pemetaan resource AWS Lambda 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 fungsi 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 mengetahui informasi selengkapnya tentang semua resource Cloud Run yang tersedia, lihat Model resource Cloud Run.

Mendesain konfigurasi resource Cloud Run Anda

Sebelum menyediakan dan mengonfigurasi resource Cloud Run, Anda merancang 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 dipertimbangkan saat Anda memigrasikan workload 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 beban kerja streaming 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 lebih lanjut pemicu layanan yang disediakan Cloud Run, 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 Anda sediakan, pastikan untuk memilih mekanisme pemanggilan atau eksekusi yang tepat.

Fitur AWS Lambda Fitur Cloud Run
Pemicu HTTPS (URL fungsi) Pemanggilan HTTPS
Pemicu HTTP/2 (didukung sebagian 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 memahami 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 digunakan bersama 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
Paralelisme untuk tugas
Konfigurasi instance (CPU, memori) Batas CPU dan memori
Waktu eksekusi maksimum Waktu tunggu permintaan untuk layanan
Waktu tunggu tugas untuk pekerjaan
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
Pemasangan volume S3 tidak didukung Pemasangan volume Cloud Storage
AWS Secrets Manager dalam beban kerja AWS Lambda Rahasia
URL dan endpoint HTTP(S) beban kerja URL yang ditetapkan secara otomatis
Integrasi Cloud Run dengan Google Cloud produk
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 ditangani oleh instance. Artinya, perilaku penyediaan AWS Lambda setara dengan menyetel jumlah maksimum permintaan serentak per instance menjadi 1 di Cloud Run. Menetapkan jumlah maksimum permintaan serentak ke 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 untuk menetapkan peran dan izin bagi 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 yang mungkin Anda perlukan jika Anda 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 keamanan dan akses Cloud Run mana yang sebanding dengan yang tersedia di AWS Lambda, gunakan tabel berikut. Untuk setiap resource Cloud Run yang perlu Anda sediakan, 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 IAMGoogle Cloud
Batas izin Google Cloud's IAM permissions dan audiens kustom
Kontrol tata kelola Organization Policy Service
Penandatanganan kode Otorisasi biner
Akses VPC penuh Kontrol akses keluar VPC terperinci

Menyediakan dan mengonfigurasi resource Cloud Run

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

Memfaktorkan ulang beban kerja AWS Lambda

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

Ada beberapa faktor yang dapat memengaruhi jumlah refaktorisasi yang Anda perlukan untuk setiap beban kerja AWS Lambda, seperti berikut:

  • Arsitektur. Pertimbangkan cara workload didesain dalam hal arsitektur. Misalnya, workload AWS Lambda yang telah memisahkan logika bisnis dari logika untuk mengakses API khusus AWS mungkin memerlukan lebih sedikit refaktorisasi dibandingkan dengan workload yang mencampurkan kedua logika tersebut.
  • Idempotensi. Pertimbangkan apakah workload bersifat idempoten terkait inputnya. Workload yang bersifat idempoten terhadap input mungkin memerlukan lebih sedikit refaktorisasi dibandingkan dengan workload yang perlu mempertahankan status tentang input yang telah diprosesnya.
  • Negara bagian. 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 apa pun 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 agar 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 menyuntikkan (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 workload berinteraksi dengan AWS Lambda API. Workload yang berinteraksi dengan API ini mungkin perlu di-refactor 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 refaktorisasi dibandingkan dengan workload yang melaporkan error menggunakan mekanisme lain.

Untuk mengetahui informasi selengkapnya tentang pengembangan dan pengoptimalan 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 Google Cloud lingkungan Anda, bukan menyediakan resource di lingkungan sumber.
  • Bangun dan konfigurasi workload, lalu deploy di Google Cloud daripada men-deploy-nya di lingkungan sumber.

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

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 menargetkan lingkungan Google Cloud , bukan lingkungan sumber.
  • 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-deploy-nya di lingkungan runtime target. Strategi refactoring sangat bergantung pada kompleksitas proses ini. Daftar berikut menguraikan kemungkinan strategi refaktorisasi umum:

  1. Sediakan repositori artefak di Google Cloud. Misalnya, Anda dapat menggunakan Artifact Registry untuk menyimpan artefak dan membangun dependensi.
  2. Faktorkan ulang proses build Anda 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 beban kerja 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 diGoogle Cloud.
  4. Faktorkan ulang proses build Anda untuk menyimpan artefak hanya di Artifact Registry.
  5. Jika perlu, migrasikan versi artefak yang lebih lama untuk di-deploy dari repositori di lingkungan sumber ke Artifact Registry. Misalnya, Anda dapat menyalin image container ke Artifact Registry.
  6. Hentikan penggunaan repositori di lingkungan sumber Anda jika Anda tidak memerlukannya lagi.

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 selama migrasi ke Google Cloud sedang berlangsung. Terakhir, sebagai bagian dari penonaktifan lingkungan sumber, Anda dapat memfaktorkan ulang proses pembuatan image container untuk menyimpan artefak diGoogle Cloud saja.

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

Jika Anda menggunakan Artifact Registry untuk menyimpan artefak, sebaiknya konfigurasi kontrol untuk membantu mengamankan repositori artefak Anda, 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 Anda memfaktorkan ulang proses operasional untuk memantau lingkungan Cloud Run secara efektif dan terus-menerus.

Cloud Run terintegrasi dengan layanan operasional berikut:

Migrasikan data

Fase penilaian sebelumnya dalam proses ini seharusnya membantu Anda menentukan apakah workload AWS Lambda yang Anda migrasikan bergantung pada atau menghasilkan data yang berada di lingkungan AWS Anda. Misalnya, Anda mungkin telah menentukan 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 memigrasikan data dari AWS ke Google Cloud, lihat artikel Bermigrasi dari AWS ke Google Cloud: Memulai.

Seperti halnya pemfaktoran ulang proses deployment dan operasional, memigrasikan data dari AWS ke Google Cloud dapat bersifat kompleks dan memerlukan 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 memahami ukuran dan kompleksitas data tersebut. 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, melainkan proses berkelanjutan. Anda harus tetap fokus 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, refaktor kasus pengujian yang ada untuk memperhitungkan lingkungan target Google Cloud .
  • Selama migrasi, validasi hasil pengujian di setiap tonggak pencapaian migrasi dan lakukan pengujian integrasi secara menyeluruh.
  • Setelah migrasi, lakukan pengujian berikut:
    • Pengujian dasar: Tetapkan tolok ukur performa beban kerja asli di AWS Lambda, seperti waktu eksekusi, penggunaan resource, dan rasio error di berbagai beban. Ulangi pengujian ini di Cloud Run untuk mengidentifikasi perbedaan yang dapat mengarah pada masalah migrasi atau konfigurasi.
    • Pengujian fungsional: Pastikan logika inti workload 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 Google Cloud lingkungan

Pengoptimalan adalah fase terakhir dari migrasi Anda. Pada fase ini, Anda melakukan iterasi tugas pengoptimalan sampai lingkungan target Anda 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 , lihat Bermigrasi ke Google Cloud: Mengoptimalkan lingkungan Anda dan Google Cloud Framework yang Dirancang dengan Baik: Pengoptimalan performa.

Langkah berikutnya

Kontributor

Penulis:

Kontributor lainnya: