Edocti Training
Practical Microservices cu Python, Flask & Consul
Sesiuni programate
Nu există sesiuni disponibile în acest moment.
Abilități dobândite
Python & Flask
Containere Docker
Consul & Service Discovery
ELK Stack & Grafana
Arhitecturi Microservicii
Observability & Metrici
Load Balancing
Managementul Stării
Curriculum
Ziua 1 — Arhitectură & design de servicii
- Microservices vs Monoliths: costuri/beneficii, când separăm, potrivire organizațională
- Domain‑Driven Design (DDD): bounded contexts, ubiquitous language, aggregates, anti‑corruption layer
- Decompoziție: ownership pe date, database‑per‑service, limite tranzacționale
- Consistență: idempotency, retries, eventual consistency, SAGA (orchestration vs choreography) — overview
- Interfețe: REST vs gRPC (scurt intro), versionare API, modele de erori
- Cross‑cutting: 12‑Factor App, configurație, secrets, health/readiness checks
- Discovery: service registry & discovery cu Consul; health checks și tags
- Lab 1: modelăm domeniul și îl împărțim în servicii (catalog, orders, payments). Schițăm API‑uri și evenimente
Ziua 1 — Containerizarea scheletului
- Dockerfile pentru Python: multi‑stage builds, imagini slim, user non‑root
- Structura proiectului în Docker Compose; separarea mediilor (dev/test)
- Lab 2: containerizăm catalog & orders, expunem /health și /ready
Ziua 2 — Implementare în Python/Flask cu DI
- Patternuri Flask: app factory, Blueprints, lifecycle, config (env & fișiere)
- Dependency Injection (patternuri ușoare sau dependency‑injector); repositories, gateways, service layer
- Validare & serializare cu Pydantic/Marshmallow; maparea erorilor la HTTP
- Reziliență: timeouts, retries (tenacity), backoff & jitter; idempotency keys
- Service discovery în practică: Consul agent, service registration, DNS vs HTTP API lookups
- Lab 3: legăm serviciile prin Consul; implementăm orders→payments cu idempotency
Ziua 2 — Bazele observabilității
- Logging structurat: JSON, correlation IDs (X‑Request‑ID), nivele de log
- Trimiterea logurilor către ELK: Logstash pipeline; indexare și retenție în Elasticsearch; dashboarduri în Kibana
- Metrics: prometheus_client, metrici RED/SUSE, metrici de proces
- Lab 4: activăm JSON logs și /metrics; vizualizăm rată & latență
Ziua 3 — Stack complet: ELK, Prometheus & Grafana
- Compose stack: Consul server + agents, servicii, Logstash, Elasticsearch, Kibana, Prometheus, Grafana
- Dashboards & alerts: panouri Grafana pentru p50/p95, rata erorilor; reguli de alertare (concepte)
- Securitate: secrets în env/Consul KV, JWT la edge (schematic), TLS termination (reverse proxy opțional)
- Lab 5: rulare end‑to‑end — pornim stack‑ul, generăm load, investigăm în Kibana și Grafana
Ziua 3 — Hardening & livrare
- Testare: unit/integration, contract testing (Pact — overview)
- Pachete & CI: pyproject.toml, wheels, image scan; schelet GitHub Actions
- Liste operaționale: readiness probes, bugete/SLO, rollback‑uri
- Lab 6: introducem o dependență care eșuează, observăm, facem rollback în siguranță
Module opționale
Opțional — Patternuri avansate
- Microservicii event‑driven cu Kafka/RabbitMQ (overview)
- CQRS & SAGA — detalii; outbox/inbox patterns
- Service mesh/Consul Connect și mTLS (intro)
Structura zilei de curs
- Part 1: 09:00–10:30
- Break: 10:30–10:45
- Part 2: 10:45–12:15
- Lunch break: 12:15–13:15
- Part 3: 13:15–15:15
- Break: 15:15–15:30
- Part 4: 15:30–17:30