Lekcja 4 · Dzień 4 · ich aktualny ból

Migracja ECS → EKS

Framework, nie magia. JD mówi wprost: Kubernetes na produkcji jest szczególnie cenny, bo planują migrację. Jeśli nie robiłeś EKS na produkcji — nie kłam.

Po co migrują (hipotezy, które wolno wygłosić)

Nie znasz ich dokumentu wewnętrznego. Wolno powiedzieć „typowy powód i jak bym to zweryfikował”:

Pytanie, które zadajesz im: „W jakim punkcie jest migracja? Co już żyje na EKS, co blokuje resztę?” To nie filler — od tego zależy, czy w Q1 bierzesz factory, czy gaszenie pożaru.

Co zostaje na ECS / Lambda, co idzie na EKS

ZostajeIdzie na EKS
Lambdy operacyjne (rotacja sekretów, dispatch) — nie ma sensu opakowywać w DeploymentDługie Java/Kotlin mikroserwisy, 20+ sztuk o wspólnym kształcie
PCI issuance, jeśli blast radius i zakres audytu rosną od kubelet/etcd — osobna decyzja, nie automatNon-PCI prod-app, staging, dev
Zadania burst / cron o czasie < 15 min, taniej jako LambdaWorkerzy z persistent connections (Kafka consumers)
Jednorazowe taski Fargate, które i tak są batchSerwisy z sidecarem (mesh, auth)
PCI workload isolation AWS w whitepaperze o EKS + PCI: osobne konto, osobny cluster CDE, izolacja podów na node’ach, SG, ograniczone API. Wspólny cluster „z namespace pci” to słaba historia dla QSA, chyba że segmentacja jest udowodniona pentestem (Req 11.4.5). Domyślnie: osobny cluster w PCI account.

Networking: SG vs NetworkPolicy, ALB Ingress, service discovery

Rollout: shadow, % traffic, rollback

  1. Parity: ten sam obraz (digest) na ECS i na EKS. Różni się tylko runtime.
  2. Shadow: lustro ruchu (telegraf / proxy) na EKS, odpowiedzi odrzucane. Porównaj latency i errory. Nie na CHD w plaintext — shadow PCI wymaga tej samej izolacji.
  3. Weighted ALB / Route53: 5% → 25% → 50% → 100%. SLO jako hamulec: error budget, nie data w kalendarzu.
  4. Rollback: waga wraca na ECS w minuty. Deploy na EKS nie kasuje task def ECS, dopóki nie minie soak (np. 2 tygodnie, 1–2 payroll/settlement cycle).
  5. Stop condition: wzrost p99, 5xx, saturacja node, błędy IRSA, utrata logów.

Bez tygodnia downtime i bez 20 snowflake’ów

To jest pytanie z raportu. Odpowiedź-framework:

  1. Factory, nie 20 projektów. Jeden Helm/Kustomize chart (albo Terraform moduł service) + values per serwis. Onboarding = PR z values, nie ticket „zróbcie nam YAMLe”.
  2. Strangler per serwis, ten sam playbook. Kolejność: najpierw bezstanowe, niskie ryzyko, non-PCI. Potem Kafka consumers (offset, rebalance). Na końcu CDE, jeśli w ogóle.
  3. CI: ten sam reusable workflow buduje obraz. Deploy job dostaje runtime: eks. Nie forkuje się pipeline’u na 20 sposobów.
  4. Data plane zostaje. RDS, Kafka, Redis — te same endpointy. Zmienia się tylko compute. Dual-write piekła nie otwierasz.
  5. Okno: zero-downtime przez weighted traffic, nie przez „sobota 3:00 wyłączamy karty”. Fintech kartowy nie ma tygodnia na maintenance.

Operacja klastra

Jeśli nie robiłeś EKS na produkcji „ECS znam z [skala]. K8s znam z [staging / home lab / poprzednia praca bez prod]. Migrację umiem zaplanować: factory chart, shadow, weighted ALB, osobny cluster PCI, rollback przez wagi. Pierwsze 90 dni: jeden serwis-pilot, nie 20 naraz.” To jest zgodne z JD i z raportem. Kłamstwo o produkcji wyjdzie na whiteboardzie.

Ćwiczenie

Wybierz 3 fikcyjne serwisy: receipts (bezstanowy), ledger (Kafka consumer), issuer (PCI). Ułóż kolejność, kryterium stop, rollback. 8 minut na głos.