Meningkatkan kinerja startup dengan Lambda SnapStart - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Meningkatkan kinerja startup dengan Lambda SnapStart

Lambda SnapStart untuk Java dapat meningkatkan kinerja startup untuk aplikasi yang sensitif terhadap latensi hingga 10x tanpa biaya tambahan, biasanya tanpa perubahan pada kode fungsi Anda. Kontributor terbesar untuk latensi startup (sering disebut sebagai cold start time) adalah waktu yang dihabiskan Lambda untuk menginisialisasi fungsi, yang mencakup memuat kode fungsi, memulai runtime, dan menginisialisasi kode fungsi.

Dengan SnapStart, Lambda menginisialisasi fungsi Anda saat Anda mempublikasikan versi fungsi. Lambda mengambil snapshot MicroVM Firecracker dari memori dan status disk dari lingkungan eksekusi yang diinisialisasi, mengenkripsi snapshot, dan menyimpannya dalam cache untuk akses latensi rendah. Saat Anda memanggil versi fungsi untuk pertama kalinya, dan saat pemanggilan meningkat, Lambda melanjutkan lingkungan eksekusi baru dari snapshot yang di-cache alih-alih menginisialisasinya dari awal, meningkatkan latensi startup.

penting

Jika aplikasi Anda bergantung pada keunikan status, Anda harus mengevaluasi kode fungsi Anda dan memverifikasi bahwa itu tahan terhadap operasi snapshot. Untuk informasi selengkapnya, lihat Menangani keunikan dengan Lambda SnapStart.

Fitur yang didukung dan batasan

SnapStart mendukung runtime terkelola Java 11 dan Java yang lebih baru. Runtime terkelola lainnya (seperti nodejs20.x danpython3.12),Runtime khusus OS, dan gambar kontainer tidak didukung.

SnapStart tidak mendukung konkurensi yang disediakan, arsitektur arm64, Amazon Elastic File System (Amazon EFS), atau penyimpanan sementara yang lebih besar dari 512 MB.

Untuk bekerja dengan SnapStart, Anda dapat menggunakan konsol Lambda, AWS Command Line Interface (AWS CLI), API Lambda,,, AWS Serverless Application Model (AWS SAM) AWS SDK for Java AWS CloudFormation, dan. AWS Cloud Development Kit (AWS CDK) Untuk informasi selengkapnya, lihat Mengaktifkan dan mengelola Lambda SnapStart.

catatan

Anda SnapStart hanya dapat menggunakan pada versi fungsi yang diterbitkan dan alias yang mengarah ke versi. Anda tidak dapat menggunakan SnapStart pada versi fungsi yang tidak dipublikasikan ($LATEST).

Wilayah yang Didukung

SnapStart tersedia sebagai berikut Wilayah AWS:

  • AS Timur (N. Virginia)

  • AS Timur (Ohio)

  • AS Barat (California Utara)

  • AS Barat (Oregon)

  • Afrika (Cape Town)

  • Asia Pasifik (Hong Kong)

  • Asia Pasifik (Mumbai)

  • Asia Pasifik (Hyderabad)

  • Asia Pasifik (Tokyo)

  • Asia Pasifik (Seoul)

  • Asia Pasifik (Osaka)

  • Asia Pasifik (Singapura)

  • Asia Pasifik (Sydney)

  • Asia Pasifik (Jakarta)

  • Asia Pasifik (Melbourne)

  • Kanada (Pusat)

  • Eropa (Stockholm)

  • Eropa (Frankfurt)

  • Eropa (Zürich)

  • Eropa (Irlandia)

  • Eropa (London)

  • Eropa (Paris)

  • Eropa (Milan)

  • Eropa (Spanyol)

  • Timur Tengah (UEA)

  • Timur Tengah (Bahrain)

  • Amerika Selatan (Sao Paulo)

Pertimbangan kompatibilitas

Dengan SnapStart, Lambda menggunakan satu snapshot sebagai status awal untuk beberapa lingkungan eksekusi. Jika fungsi Anda menggunakan salah satu dari berikut ini selama fase inisialisasi, maka Anda mungkin perlu membuat beberapa perubahan sebelum menggunakan SnapStart:

Keunikan

Jika kode inisialisasi Anda menghasilkan konten unik yang disertakan dalam snapshot, maka konten tersebut mungkin tidak unik saat digunakan kembali di seluruh lingkungan eksekusi. Untuk mempertahankan keunikan saat menggunakan SnapStart, Anda harus menghasilkan konten unik setelah inisialisasi. Ini termasuk ID unik, rahasia unik, dan entropi yang digunakan untuk menghasilkan pseudorandomness. Untuk mempelajari cara mengembalikan keunikan, lihat. Menangani keunikan dengan Lambda SnapStart

Koneksi jaringan

Status koneksi yang ditetapkan fungsi Anda selama fase inisialisasi tidak dijamin saat Lambda melanjutkan fungsi Anda dari snapshot. Validasi status koneksi jaringan Anda dan buat kembali seperlunya. Dalam kebanyakan kasus, koneksi jaringan yang dibuat AWS SDK secara otomatis dilanjutkan. Untuk koneksi lain, tinjau praktik terbaik.

Data sementara

Beberapa fungsi mengunduh atau menginisialisasi data sementara, seperti kredensyal sementara atau stempel waktu yang di-cache, selama fase inisialisasi. Segarkan data singkat di penangan fungsi sebelum menggunakannya, bahkan saat tidak menggunakan. SnapStart

SnapStart harga

Tidak ada biaya tambahan untuk SnapStart. Anda dikenakan biaya berdasarkan jumlah permintaan untuk fungsi Anda, waktu yang dibutuhkan kode Anda untuk menjalankan, dan memori yang dikonfigurasi untuk fungsi Anda. Durasi dihitung dari waktu kode Anda mulai berjalan hingga kembali atau berakhir, dibulatkan ke 1 ms terdekat.

Biaya durasi berlaku untuk kode yang berjalan di penangan fungsi, kode inisialisasi yang dideklarasikan di luar handler, waktu yang diperlukan untuk memuat runtime (JVM), dan kode apa pun yang berjalan di hook runtime. Untuk informasi selengkapnya tentang cara Lambda menghitung durasi, lihat. Pemantauan untuk Lambda SnapStart

Untuk fungsi yang dikonfigurasi SnapStart, Lambda mendaur ulang lingkungan eksekusi secara berkala dan menjalankan kembali kode inisialisasi Anda. Untuk ketahanan, Lambda membuat snapshot di beberapa Availability Zone. Biaya berlaku setiap kali Lambda menjalankan kembali kode inisialisasi Anda di Availability Zone lain. Untuk informasi selengkapnya tentang cara Lambda menghitung biaya, lihat Harga.AWS Lambda

Membandingkan Lambda SnapStart dan konkurensi yang disediakan

Baik Lambda SnapStart dan konkurensi yang disediakan dapat mengurangi start dingin dan latensi outlier saat suatu fungsi meningkat. SnapStart membantu Anda meningkatkan kinerja startup hingga 10x tanpa biaya tambahan. Konkurensi yang disediakan membuat fungsi diinisialisasi dan siap merespons dalam milidetik dua digit. Mengkonfigurasi konkurensi yang disediakan menimbulkan biaya ke Anda. Akun AWS Gunakan konkurensi yang disediakan jika aplikasi Anda memiliki persyaratan latensi start dingin yang ketat. Anda tidak dapat menggunakan keduanya SnapStart dan konkurensi yang disediakan pada versi fungsi yang sama.

catatan

SnapStart bekerja paling baik saat digunakan dengan pemanggilan fungsi dalam skala besar. Fungsi yang jarang dipanggil mungkin tidak mengalami peningkatan kinerja yang sama.

Sumber daya tambahan

Selain membaca topik lain di bagian ini, kami juga menyarankan Anda mencoba Memulai lebih cepat dengan AWS Lambda SnapStart lokakarya dan menonton Fast cold start untuk sesi fungsi Java Anda dari AWS re:invent 2022.