Skalabilitas dan kontrol konkurensi

Aplikasi Serverless dengan AWS Lambda

Claudio Canales

Senior DevOps Engineer

Skalabilitas dalam satu gambar

  • Permintaan naik -> lebih banyak proses paralel.
  • Tiap proses memakai lingkungan eksekusi.
  • Konkurensi = proses yang berjalan sekarang.

Lonjakan permintaan -> lebih banyak lingkungan

Aplikasi Serverless dengan AWS Lambda

Apa itu konkurensi?

  • Satu invocation = satu unit kerja.
  • Konkurensi = berapa yang berjalan sekarang.
  • Jika 10 berjalan, konkurensi = 10.

Pemanggilan paralel

Aplikasi Serverless dengan AWS Lambda

Mengestimasi kebutuhan konkurensi

  • Aturan praktis: concurrency = rps * duration.
  • Kurangi durasi untuk menurunkan konkurensi.
  • Gunakan ini untuk menetapkan batas aman.

Rumus konkurensi

Aplikasi Serverless dengan AWS Lambda

Contoh: 50 rps pada 200 ms

  • 200 ms = 0,2 detik.
  • 50 * 0,2 = 10 eksekusi bersamaan.
  • Kode lebih cepat = lebih sedikit proses paralel.

Contoh perhitungan konkurensi

Aplikasi Serverless dengan AWS Lambda

Batas: pool akun vs porsi fungsi

  • Konkurensi dibatasi di tingkat akun.
  • Cadangkan sebagian pool untuk fungsi kritis.
  • Fungsi lain berbagi sisanya.

Pool konkurensi akun

Aplikasi Serverless dengan AWS Lambda

Reserved Concurrency: batas keras

  • Katup pengaman.
  • Membatasi kerja paralel.
  • Di atas batas, pemanggilan ditahan.
  • Fungsi berisik tidak menghabiskan kapasitas.

Batas keras konkurensi tersimpan

Aplikasi Serverless dengan AWS Lambda

Throttling: tampilannya

  • Lambda menahan di batas konkurensi.
  • Pemanggil tidak mendapat eksekusi normal.
  • Throttle terlihat di monitoring.

Sinyal throttling

Aplikasi Serverless dengan AWS Lambda

Provisioned Concurrency: kapasitas hangat

  • Pool lingkungan pra-inisialisasi.
  • Sering di belakang alias.
  • Permintaan mulai lebih cepat.

Pool hangat provisioned concurrency

Aplikasi Serverless dengan AWS Lambda

Cold start vs provisioned

Cold start

  • Tunda inisialisasi satu kali.
  • Permintaan pertama menanggung biaya setup.

Provisioned

  • Pekerjaan init dilakukan di muka.
  • Permintaan pertama tidak menanggung biaya setup.

Linimasa cold vs provisioned

Aplikasi Serverless dengan AWS Lambda

Reserved vs provisioned (masalah berbeda)

  • Reserved mengendalikan beban.
  • Provisioned mengendalikan latensi startup.
  • Banyak fungsi produksi memakai keduanya.

Perbandingan reserved vs provisioned

Aplikasi Serverless dengan AWS Lambda

Lindungi sistem hilir

  • Database hanya mampu sejumlah koneksi.
  • Batas konkurensi mencegah kelebihan.
  • Lonjakan trafik bisa jadi gangguan.

Batas konkurensi melindungi database

Aplikasi Serverless dengan AWS Lambda

Burst vs trafik stabil

  • Burst membuat banyak lingkungan paralel.
  • Handler lambat menjaga konkurensi tinggi.
  • Batas bisa meratakan lonjakan.
  • Mempercepat durasi juga strategi skala.

Trafik burst vs stabil

Aplikasi Serverless dengan AWS Lambda

Kegagalan dan retry menambah beban

  • Retry dapat memperbesar trafik.
  • Batas konkurensi mengurangi dampak.
  • Loop kegagalan bisa membebani dependensi.

Retry melipatgandakan beban

Aplikasi Serverless dengan AWS Lambda

Alur penyetelan sederhana

  • Mulai dengan pengukuran.
  • Tetapkan batas konkurensi saat muncul throttle atau tekanan.
  • Tambahkan kapasitas provisioned saat cold start mengganggu latensi.

Ukur -> batasi -> pre-warm

Aplikasi Serverless dengan AWS Lambda

Inti materi

  • Konkurensi membantu memikirkan skala.
  • Estimasi: rps * duration.
  • Reserved membatasi beban; pantau throttle.
  • Provisioned mengurangi latensi cold start.

Inti konkurensi

Aplikasi Serverless dengan AWS Lambda

Ayo berlatih!

Aplikasi Serverless dengan AWS Lambda

Preparing Video For Download...