Konkruensi, Pembatasan, dan Konkruensi Terreservasi
Pahami cara Lambda melakukan penskalaan secara konkuren, tetapkan konkruensi terreservasi untuk melindungi layanan hilir, dan tangani kesalahan pembatasan.
Konkruensi, Pembatasan, dan Konkruensi Terreservasi adalah pelajaran AWS Solutions Architect gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AWS Solutions Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Cara Lambda Menskalakan Eksekusi Secara Bersamaan
Lambda melakukan penskalaan dengan menjalankan beberapa eksekusi bersamaan dari fungsi Anda—satu untuk setiap peristiwa yang berlangsung secara bersamaan. Ketika 100 permintaan tiba pada waktu yang sama, Lambda menjalankan 100 instans paralel dari fungsi Anda. AWS mengelola infrastruktur yang mendasarinya secara otomatis. batas konkurensi tingkat akun adalah 1.000 eksekusi bersamaan per Wilayah secara default (batas lunak, yang dapat ditingkatkan melalui permintaan kuota layanan).
Penghitungan Konkurensi
Konkurensi dihitung sebagai berikut: Konkurensi = Permintaan per detik × Durasi rata-rata dalam detik. Jika fungsi Anda menangani 500 permintaan/detik dan setiap permintaan membutuhkan waktu 0,2 detik, Anda memerlukan 100 eksekusi bersamaan. Memahami rumus ini membantu Anda memperkirakan apakah batas akun Anda mencukupi dan apakah Anda perlu meminta peningkatan kuota sebelum acara dengan lalu lintas tinggi.
# Example concurrency calculation
# RPS = 500, avg_duration = 0.2s
# Concurrency = 500 * 0.2 = 100
# To check current concurrency limits:
aws lambda get-account-settingsPembatasan: Apa yang Terjadi Saat Batas Tercapai
Ketika Lambda menerima lebih banyak permintaan daripada yang diizinkan oleh batas konkurensinya, Lambda akan membatasi permintaan berlebih tersebut. Untuk pemanggilan sinkron (misalnya, API Gateway), permintaan yang dibatasi segera menerima 429 TooManyRequestsException yang harus ditangani oleh pemanggil. Untuk pemanggilan asinkron (misalnya, peristiwa S3), Lambda mengantrekan peristiwa dan mencoba kembali hingga 6 jam sebelum mengirimkannya ke antrean surat mati.
Penjelasan Konkurensi yang Dicadangkan
Konkurensi yang Dicadangkan menjamin jumlah eksekusi bersamaan tertentu untuk fungsi tertentu dengan mencadangkan jumlah tersebut dari kumpulan akun. Fitur ini memiliki dua tujuan: (1) menjamin kapasitas—fungsi akan selalu memiliki eksekusi sebanyak itu meskipun fungsi lain sedang menggunakan kuota akun; (2) membatasi konkurensi—fungsi tidak akan pernah melebihi jumlah yang dicadangkan, sehingga dependensi hilir terlindung dari beban berlebih.
# Reserve 100 concurrent executions for a critical function
aws lambda put-function-concurrency \
--function-name 'CriticalProcessor' \
--reserved-concurrent-executions 100Melindungi Layanan Hilir dengan Konkurensi yang Dicadangkan
Skenario penting dalam ujian: fungsi Lambda menulis ke basis data RDS yang memiliki batas 50 koneksi. Tanpa kontrol konkurensi, Lambda dapat meningkatkan skala hingga ratusan eksekusi bersamaan dan menghabiskan semua koneksi basis data, sehingga menyebabkan kesalahan pada setiap fungsi. Menetapkan konkurensi yang dicadangkan sebesar 40 memastikan Lambda tidak pernah melebihi 40 koneksi basis data secara bersamaan, sehingga melindungi instans RDS. Ini adalah pola penting untuk setiap fungsi Lambda yang memanggil layanan dengan jumlah koneksi terbatas.
Konkurensi yang Disediakan untuk Menghilangkan Cold Start
Konkurensi yang Disediakan melakukan inisialisasi awal terhadap sejumlah lingkungan eksekusi Lambda sehingga lingkungan tersebut siap merespons segera tanpa cold start. Hal ini penting untuk API yang sensitif terhadap latensi, yang tidak dapat menerima cold start bahkan selama 100 md. Anda membayar tarif per jam untuk konkurensi yang disediakan meskipun lingkungan tersebut sedang tidak digunakan, jadi gabungkan fitur ini dengan Auto Scaling untuk menyesuaikan tingkat yang disediakan berdasarkan pola lalu lintas yang diperkirakan.
aws lambda put-provisioned-concurrency-config \
--function-name 'LatencySensitiveAPI' \
--qualifier 'prod' \
--provisioned-concurrent-executions 50Konkurensi yang Dicadangkan vs Disediakan
Keduanya sering tertukar, tetapi memiliki tujuan yang berbeda. Konkurensi yang Dicadangkan membatasi dan menjamin alokasi kapasitas dari kumpulan akun—fitur ini TIDAK menghilangkan cold start. Konkurensi yang Disediakan memanaskan lingkungan eksekusi terlebih dahulu untuk menghilangkan cold start—fitur ini TIDAK mencegah fungsi lain menggunakan kumpulan yang sama. Gunakan konkurensi yang dicadangkan untuk membatasi throughput; gunakan konkurensi yang disediakan untuk meningkatkan latensi. Keduanya dapat digunakan bersama pada fungsi yang sama.
Batas Ledakan dan Penskalaan Awal
Lambda tidak meningkatkan skala hingga konkurensi penuh secara seketika. Terdapat batas ledakan tingkat akun (laju penskalaan awal) yang berbeda-beda menurut Wilayah—biasanya 3.000 ledakan awal, lalu 500 eksekusi tambahan per menit hingga batas tercapai. Untuk aplikasi yang mengantisipasi lonjakan besar secara tiba-tiba (lalu lintas viral, penjualan kilat), gunakan Konkurensi yang Disediakan untuk memanaskan terlebih dahulu lingkungan yang cukup agar batas ledakan tidak menyebabkan pembatasan selama lonjakan awal.
Metrik Konkurensi Lambda di CloudWatch
Pantau konkurensi Lambda dengan metrik CloudWatch utama berikut:
- ConcurrentExecutions: jumlah instans yang sedang berjalan
- Throttles: jumlah pemanggilan yang dibatasi (seharusnya nol dalam sistem yang sehat)
- UnreservedConcurrentExecutions: kumpulan tingkat akun yang tidak dicadangkan
- ProvisionedConcurrencyUtilization: jumlah kapasitas yang disediakan dan sedang digunakan
Atur alarm pada Throttles agar Anda menerima pemberitahuan sebelum pembatasan berdampak pada pengguna akhir.
aws cloudwatch put-metric-alarm \
--alarm-name 'LambdaThrottlesAlert' \
--metric-name Throttles \
--namespace AWS/Lambda \
--dimensions Name=FunctionName,Value=MyFunction \
--statistic Sum \
--period 60 \
--threshold 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--evaluation-periods 1Menangani Pembatasan dalam Kode Aplikasi
Saat merancang sistem yang memanggil Lambda secara sinkron (API Gateway, panggilan langsung SDK), terapkan backoff eksponensial dengan jitter pada pemanggil. SDK AWS memiliki logika percobaan ulang bawaan, tetapi untuk Lambda yang berada di belakang API Gateway, Anda harus menangani respons 429 dalam aplikasi klien. Untuk Lambda yang dipicu SQS, layanan SQS itu sendiri menangani percobaan ulang; atur Penerimaan Maksimum pada antrean sumber dengan tepat dan konfigurasikan DLQ untuk percobaan ulang yang telah habis.
Konkurensi dan Pemicu Berbasis Aliran
Untuk Aliran Data Kinesis dan Aliran DynamoDB, konkurensi Lambda dibatasi oleh jumlah pecahan (Kinesis) atau partisi (DynamoDB). Setiap pecahan/partisi diproses tepat oleh satu eksekusi Lambda bersamaan. Jika Anda memiliki 10 pecahan Kinesis, Lambda menjalankan hingga 10 eksekusi bersamaan untuk pemicu tersebut. Artinya, masalah pembatasan pada pemicu berbasis aliran biasanya diselesaikan dengan menambah jumlah pecahan, bukan dengan menaikkan batas konkurensi.
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari bahwa Konkurensi yang Dicadangkan menjamin sekaligus membatasi eksekusi bersamaan suatu fungsi untuk melindungi layanan hilir dan memastikan ketersediaan; Konkurensi yang Disediakan melakukan inisialisasi awal lingkungan untuk menghilangkan cold start pada beban kerja yang sensitif terhadap latensi; dan pembatasan muncul sebagai kesalahan 429 pada pemanggilan sinkron serta percobaan ulang yang diantrekan pada pemanggilan asinkron—pantau menggunakan metrik CloudWatch Throttles. Selanjutnya, kita akan membahas Lapisan Lambda dan paket penerapan untuk mengelola dependensi berukuran besar.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Konkruensi, Pembatasan, dan Konkruensi Terreservasi” gratis?
Ya — teks lengkap “Konkruensi, Pembatasan, dan Konkruensi Terreservasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AWS Solutions Architect, upgrade ke CoddyKit PRO. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Konkruensi, Pembatasan, dan Konkruensi Terreservasi”?
Pahami cara Lambda melakukan penskalaan secara konkuren, tetapkan konkruensi terreservasi untuk melindungi layanan hilir, dan tangani kesalahan pembatasan. Kamu berlatih AWS Solutions Architect dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AWS Solutions Architect?
Tidak diperlukan pengalaman sebelumnya. AWS Solutions Architect di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Konkruensi, Pembatasan, dan Konkruensi Terreservasi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Fungsi Lambda: Waktu Proses, Pemicu, dan Penangan
- Konkruensi, Pembatasan, dan Konkruensi Terreservasi
- Lapisan Lambda dan Paket Penerapan
- Lambda@Edge dan Pola Berbasis Peristiwa