Memahami model eksekusi Lambda

Aplikasi Serverless dengan AWS Lambda

Claudio Canales

Senior DevOps Engineer

Eksekusi otomatis

AWS berbasis event

  • Lambda menjalankan kode saat event terjadi.
  • Contoh: unggah S3 -> ubah ukuran gambar.
  • Pemicu berbeda, pola sama.
Aplikasi Serverless dengan AWS Lambda

Idle hingga dipicu

Idle -> event -> run -> stop

  • Idle: tidak ada yang berjalan.
  • Event: handler berjalan, lalu berhenti.

Analogi lampu sensor gerak untuk Lambda

  • Seperti lampu sensor gerak: idle hingga dipicu.
  • Trigger mengubah "off" ke "on".
Aplikasi Serverless dengan AWS Lambda

Apa itu AWS Lambda?

AWS Lambda sekilas

  • Layanan komputasi berbasis event.
  • Menskalakan otomatis sesuai permintaan.
  • Bayar hanya saat runtime dipakai.
Aplikasi Serverless dengan AWS Lambda

Cara Lambda mengeksekusi kode Anda

Alur eksekusi Lambda

  • Sumber event memicu Lambda.
  • Lambda meneruskan payload event ke handler Anda.
  • Handler mengembalikan hasil.
Aplikasi Serverless dengan AWS Lambda

Skalasi sesuai permintaan

Skalasi membuat lebih banyak environment

  • Lebih banyak event: lebih banyak pemanggilan paralel.
  • Lambda menyiapkan lebih banyak environment.
  • Cold start dapat terjadi per environment baru.
Aplikasi Serverless dengan AWS Lambda

Fungsi handler

def lambda_handler(event, context):
    # Your code here
    return {
        'statusCode': 200,
        'body': 'Hello from Lambda!'
    }
  • event: payload input (JSON).
  • context: metadata runtime.
  • return: output (atau sukses/gagal).

Handler menerima event dan context

Aplikasi Serverless dengan AWS Lambda

Objek event

Payload event penyimpanan objek

Event S3: bucket + object key.

# event["Records"][0]["s3"]
{
  "bucket": {"name": "my-bucket"},
  "object": {"key": "data.csv"}
}
  • Tugas sama: ekstrak yang diperlukan.

Payload event permintaan HTTP

Event API: method, path, body.

# API request event
{
  "httpMethod": "POST",
  "path": "/users",
  "body": "{\"name\": \"John\"}"
}
  • Pemicu berbeda, JSON berbeda.
Aplikasi Serverless dengan AWS Lambda

Objek context

def lambda_handler(event, context):
    time_left = (
        context.get_remaining_time_in_millis()
    )
    request_id = context.aws_request_id
  • get_remaining_time_in_millis Sisa waktu sebelum timeout.
  • aws_request_id ID permintaan untuk pelacakan log.
Aplikasi Serverless dengan AWS Lambda

Eksekusi stateless

Reuse warm start vs reset

  • Tiap pemanggilan independen.
  • Reuse mungkin, tidak dijamin.
  • Simpan state di luar Lambda.
counter = 0

def lambda_handler(event, context):
    global counter
    counter += 1  # may reset
    return counter
Aplikasi Serverless dengan AWS Lambda

Cold start

Linimasa cold start

  • Environment eksekusi baru.
  • Muat kode dan dependensi.
  • Jalankan inisialisasi, lalu handler.
Aplikasi Serverless dengan AWS Lambda

Warm start

Linimasa warm start

  • Gunakan kembali environment yang ada.
  • Lewati sebagian besar inisialisasi.
  • Handler berjalan lebih cepat.
Aplikasi Serverless dengan AWS Lambda

Init, invoke, freeze

Siklus hidup environment eksekusi

  • Init berjalan sekali per environment.
  • Handler berjalan per pemanggilan.
  • Di antara run, environment bisa dibekukan.
Aplikasi Serverless dengan AWS Lambda

Optimasi untuk cold start

# init (sekali per environment)
import boto3
s3 = boto3.client('s3')
# handler (setiap pemanggilan)
def lambda_handler(event, context):
    return {"statusCode": 200}

Init sekali vs handler tiap pemanggilan

  • Tempatkan import dan klien SDK di luar handler.
Aplikasi Serverless dengan AWS Lambda

Ayo berlatih!

Aplikasi Serverless dengan AWS Lambda

Preparing Video For Download...