AWS Lambda - kod bez serwerów

A gdyby tak nie musieć w ogóle myśleć o serwerach? Nie provisionować instancji, nie patchować systemów, nie martwić się o skalowanie? Witaj w świecie serverless. I witaj w AWS Lambda, usłudze, która zmieniła sposób myślenia o compute w chmurze.

Czym jest serverless?

Serverless nie oznacza „bez serwerów". Serwery nadal istnieją, ale Ty się nimi nie zajmujesz. AWS zarządza całą infrastrukturą. Ty dostarczasz tylko kod. Tyle.

💡 Analogia
EC2 to jak wynajmowanie mieszkania - płacisz czynsz niezależnie czy tam jesteś. Lambda to jak hotel na godziny - płacisz TYLKO za czas pobytu. Nie sprzątasz, nie naprawiasz niczego, nie martwisz się, gdy wychodzisz.

Jak działa Lambda?

Lambda działa w prostym cyklu:

  1. Wrzucasz swój kod (funkcję)
  2. Definiujesz trigger (co uruchamia funkcję)
  3. Gdy trigger wystąpi, Lambda automatycznie uruchamia Twój kod
  4. Po wykonaniu, środowisko jest wyłączane (lub reużywane)

Wspierane języki: Python, Node.js, Java, C#, Go, Ruby, a także dowolny język przez custom runtime.

Triggery Lambda

Lambda nie działa „sama z siebie". Potrzebuje zdarzenia (event), które ją uruchomi. Oto najczęstsze triggery:

  • API Gateway - HTTP request (REST API, WebSocket)
  • S3 - nowy plik w buckecie (np. generuj thumbnail po uploadzie zdjęcia)
  • DynamoDB Streams - zmiana w tabeli DynamoDB
  • SQS - nowa wiadomość w kolejce
  • CloudWatch Events / EventBridge - harmonogram (cron) lub zdarzenia systemowe
  • SNS - powiadomienie z tematu SNS
  • Kinesis - dane ze streamu

Model cenowy Lambda

To jest piękno Lambda. Płacisz za:

  • Liczbę wywołań - pierwsze 1 mln wywołań miesięcznie za darmo (!)
  • Czas wykonania (w milisekundach) × przydzielona pamięć

Jeśli Twoja funkcja wykonuje się 200 ms i jest wywoływana 1000 razy dziennie, koszt to grosze. Dosłownie. Zero ruchu = zero kosztów. To fundamentalna różnica vs EC2, gdzie płacisz za running instancję nawet gdy nic nie robi.

Limity Lambda

  • Timeout - maksymalnie 15 minut na jedno wywołanie
  • Pamięć - od 128 MB do 10 GB (CPU skaluje się proporcjonalnie)
  • Rozmiar paczki - 50 MB (zip), 250 MB (uncompressed)
  • Concurrent executions - domyślnie 1000 na region (można zwiększyć)
  • /tmp storage - do 10 GB tymczasowego storage
⚠️ Uwaga egzaminacyjna
Lambda ma limit 15 minut na jedno wykonanie. Jeśli na egzaminie jest scenariusz z zadaniem trwającym godzinę (np. transakcja danych, długi batch), Lambda NIE jest odpowiedzią. Użyj EC2, ECS lub Step Functions.
EC2
  • Pełna kontrola nad serwerem
  • Dowolny czas działania
  • Płacisz za running time (nawet idle)
  • Musisz zarządzać OS, patching, skalowanie
  • Idealne: długo działające aplikacje, specyficzne wymagania
Lambda
  • Zero zarządzania infrastrukturą
  • Max 15 minut na wywołanie
  • Płacisz za faktyczne wykonania (ms)
  • Automatyczne skalowanie do tysięcy równoległych wywołań
  • Idealne: event-driven, API, krótkie zadania
🏢 Scenariusz: Przetwarzanie zamówień

Sklep online otrzymuje zamówienia. Każde zamówienie trafia do kolejki SQS. Lambda odbiera wiadomość z kolejki, waliduje zamówienie, zapisuje w DynamoDB, generuje potwierdzenie i wysyła e-mail przez SES.

W normalny dzień: 500 zamówień. W Black Friday: 50 000 zamówień. Lambda skaluje się automatycznie bez żadnej interwencji. Koszt w normalny dzień? Dosłownie kilka centów. A na EC2 musiałbyś utrzymywać serwer 24/7 „na wszelki wypadek".

Gdy Lambda jest wywoływana po dłuższej przerwie, musi zainicjalizować środowisko (pobrać kod, uruchomić runtime). To cold start, który dodaje kilkaset milisekund (w przypadku Javy nawet kilka sekund) do pierwszego wywołania.

Rozwiązania:

  • Provisioned Concurrency - prewarmujesz N instancji Lambda (płacisz za gotowość, ale zero cold startów)
  • SnapStart (Java) - snapshot pamięci funkcji, drastycznie szybszy cold start
  • Używaj lekkich runtime (Python, Node.js) zamiast ciężkich (Java, .NET)
🧠 Podsumowanie
  • Lambda = serverless compute, Ty piszesz kod, AWS zarządza resztą
  • Event-driven: Lambda reaguje na triggery (S3, API Gateway, SQS, Schedule)
  • Cennik: za wywołania + czas wykonania. Zero ruchu = zero kosztów
  • Limit: max 15 minut na wywołanie, do 10 GB RAM
  • 1 mln wywołań miesięcznie za darmo (Free Tier)
  • Nie do wszystkiego: długie procesy, stałe obciążenie → EC2/ECS
🧪 Sprawdź się

Firma ma zadanie przetwarzania danych, które trwa 2 godziny. Czy Lambda jest dobrym wyborem?

A Tak, Lambda może działać dowolnie długo
B Nie, Lambda ma limit 15 minut na wywołanie
C Tak, wystarczy zwiększyć timeout do 2 godzin
Lambda ma sztywny limit 15 minut (900 sekund) na jedno wywołanie. Dla zadań trwających godziny lepszym wyborem jest EC2, ECS/Fargate lub AWS Batch.

Za co płacisz w Lambda?

A Za liczbę wywołań i czas wykonania (w ms)
B Za zarezerwowane vCPU i RAM (jak EC2)
C Stała opłata miesięczna za funkcję
Lambda ma model pay-per-use: płacisz za liczbę wywołań + czas wykonania (granularność do 1 ms) pomnożony przez przydzieloną pamięć. Zero wywołań = zero kosztów.

Który trigger pozwala uruchomić Lambda jako REST API?

A S3 Event
B CloudWatch Alarm
C API Gateway
API Gateway to serwis AWS, który tworzy REST API (lub WebSocket API) i przekierowuje HTTP requesty do Lambda. S3 Event reaguje na operacje w S3, a CloudWatch Alarm na metryki.