Penyetelan kinerja dan teknik optimasi

Aplikasi Serverless dengan AWS Lambda

Claudio Canales

Senior DevOps Engineer

Kinerja = latensi + biaya

  • Anda membayar untuk waktu.
  • Tuning kinerja juga optimasi biaya.
  • Ukur sebelum men-tune.
  • Ubah satu hal tiap kali.

Stopwatch dan biaya

Aplikasi Serverless dengan AWS Lambda

Ke mana waktu digunakan

  • Inisialisasi.
  • Eksekusi handler.
  • Waktu menunggu panggilan eksternal.

Init vs handler vs panggilan eksternal

Aplikasi Serverless dengan AWS Lambda

Cold start vs warm start

Cold start

  • Lambda memerlukan lingkungan baru.

Warm start

  • Menggunakan kembali lingkungan yang ada.
  • Handler berjalan dengan overhead lebih kecil.

Linimasa cold vs warm

Aplikasi Serverless dengan AWS Lambda

Pekerjaan init vs pekerjaan handler

  • Import dan setelan global berjalan di init.
  • Init yang berat memperlambat cold start.
  • Durasi init muncul di metrik.

Pembagian init vs handler

Aplikasi Serverless dengan AWS Lambda

Gunakan kembali klien pada warm invocation

  • Membuat klien tiap pemanggilan mengulang biayanya.
  • Gunakan kembali saat lingkungan masih hangat.

Penggunaan ulang klien global

Aplikasi Serverless dengan AWS Lambda

Pola kode: klien di luar handler

import boto3
sts = boto3.client("sts")
def handler(event, context):
    return sts.get_caller_identity()

Klien dibuat sekali

Aplikasi Serverless dengan AWS Lambda

Cache semampunya

  • Simpan data di memori.
  • Gunakan /tmp untuk file sementara kecil.
  • Cache dengan hati-hati dan invalidasi saat perlu.

Caching di memori dan /tmp

Aplikasi Serverless dengan AWS Lambda

Jaga dependensi tetap ramping

  • Paket besar lebih lama dimuat.
  • Buang yang tidak dipakai.
  • Jaga dependensi sekecil mungkin.

Paket dependensi ramping vs berat

Aplikasi Serverless dengan AWS Lambda

Logging yang bijak

  • Logging berlebihan menambah biaya dan noise.
  • Gunakan pesan kecil dan terstruktur.
  • Tetap mudah dicari; bantu penelusuran dan debug.

Volume logging vs sinyal

Aplikasi Serverless dengan AWS Lambda

Kurangi beban panggilan eksternal

  • Panggilan ke layanan lain paling lambat.
  • Kurangi panggilan; gabungkan jika bisa.
  • Atur timeout agar kegagalan tidak menggantung.

Minimalkan panggilan eksternal

Aplikasi Serverless dengan AWS Lambda

Memori juga memengaruhi CPU

  • CPU diskalakan dengan memori.
  • Kode terikat CPU dapat selesai lebih cepat.
  • Memori lebih besar bisa memangkas durasi atau biaya.
  • Uji untuk menemukan nilai terbaik.

Memori -> CPU -> runtime lebih cepat

Aplikasi Serverless dengan AWS Lambda

Temukan sweet spot biaya

  • Setelan memori terbaik meminimalkan total biaya.
  • Kurva turun, lalu mendatar atau naik.
  • Uji ulang setelah perubahan.

Kurva biaya vs memori

Aplikasi Serverless dengan AWS Lambda

Ukur dengan CloudWatch

  • Lacak Duration dan Init duration.
  • Lacak error dan throttle.
  • Pantau tail latency (p95, p99).

Metrik kinerja CloudWatch

Aplikasi Serverless dengan AWS Lambda

Mengurangi cold start

  • Perkecil yang berjalan di init.
  • Jaga paket tetap ramping.
  • Gunakan kembali setup yang mahal.
  • Pertimbangkan lingkungan terprovisi.

Checklist pengurangan cold start

Aplikasi Serverless dengan AWS Lambda

Inti pembelajaran

  • Ketahui ke mana waktu habis.
  • Gunakan kembali klien dan cache dengan hati-hati.
  • Perubahan memori memengaruhi CPU dan durasi.
  • Ukur setiap perubahan.

Poin utama kinerja

Aplikasi Serverless dengan AWS Lambda

Ayo berlatih!

Aplikasi Serverless dengan AWS Lambda

Preparing Video For Download...