Proč je monitorování a správa mikroservis odlišná oproti monolitu
Mikroservisní architektura přináší škálovatelnost, nezávislé releasy a menší doménové celky, ale současně exponenciálně zvyšuje počet běžících procesů, síťových přeskoků a míst, kde se může něco pokazit. Úspěch proto stojí na disciplinované observabilitě (metriky, logy, trasování) a na řízené správě životního cyklu služeb (konfigurace, nasazení, škálování, odolnost, bezpečnost a nákladovost). Cílem je krátký MTTD/MTTR, stabilní SLO a předvídatelný provoz i při rychlém tempu změn.
SLI, SLO, SLA a error budget: rámec pro řízení spolehlivosti
- SLI (Service Level Indicator): měřitelný ukazatel kvality (p95/p99 latence, chybovost, dostupnost, střední doba zpracování).
- SLO (Service Level Objective): cílová hodnota SLI v čase (např. p95 < 300 ms a dostupnost ≥ 99,9 % za měsíc).
- SLA: smluvní závazek vůči zákazníkovi vycházející z SLO.
- Error budget: 1 − SLO; „rozpočet“ na porušení. Je základem pro rozhodování o tempu releasů, refaktoringu či škálování.
Pilíře observability: metriky, logy, trasy a eventy
- Metriky: numerické časové řady (RPS, latence, chybovost, saturace CPU/RAM/IO). Export ve formátu OpenMetrics/Prometheus.
- Logy: strukturované JSON, korelované přes
trace_id/span_idacorrelation_id. Rotace, filtrování, retence. - Distribuované trasování: OpenTelemetry SDK → kolektor → backend (Jaeger, Tempo, Datadog). Zobrazuje kritickou cestu požadavku napříč službami.
- Eventy: Kubernetes eventy, releasy, přepnutí feature flagů, škálovací akce – nezbytné pro kauzální diagnostiku.
Kritické metriky pro mikroservisy („golden signals“ + kontext)
- Latence: p50/p95/p99 na endpoint, klienta a závislosti (DB, cache, fronty).
- Chybovost: poměr 5xx/4xx, doménové chyby (např. odmítnuté platby), error budget burn rate.
- Propustnost: RPS/eps, délka front/lag (Kafka), počet rozpracovaných úloh.
- Saturace: CPU throttling, využití heapu, GC pauzy, limity pro file descriptor, spojení do DB.
Standardizace telemetrie: OpenTelemetry a konvence
- Implementujte OTel (traces, metrics, logs) a jednotný resource model (service.name, service.version, deployment.environment).
- Korelujte vše pomocí trace-id → logy, metriky i auditní záznamy.
- Definujte společné názvy metrik (např.
http_server_requests_secondshistogram) a štítky (metoda, route, stav). - Pro klienty používejte instrumentované SDK (HTTP, gRPC, DB, messaging), aby vznikaly spany na každém přeskoku.
API gateway a service mesh: řízení provozu a pozorovatelnost
- API gateway: autentizace/autorizace, rate limiting, request shaping, transformace payloadů, centralizované audity.
- Service mesh (Istio/Linkerd): mTLS, outlier detection, retry, timeouts, circuit breaking, traffic shifting (canary). Sidecary sbírají síťové metriky bez zásahů do kódu.
Health-checky a graceful životní cyklus
- /live (liveness): proces běží a není zaseknutý (není v restartovací smyčce).
- /ready (readiness): připraven obsluhovat požadavky (závislosti OK, warm cache).
- Startup probe: pro pomalé starty – zabraňuje falešným restartům.
- Implementujte graceful shutdown: zavřít listener, dokončit rozpracované požadavky, uvolnit pooly.
Odolnost: timeouts, retry, backoff, circuit breaker, bulkhead
- Nastavujte timeouts na všech voláních; bez nich vznikají „visící“ požadavky a lavinové efekty.
- Retry používejte selektivně (idempotentní operace), s exponenciálním backoffem + jitterem. Vyvarujte se retry-stormům.
- Circuit breaker chrání závislosti: při chybovosti nebo latenci se okruh otevře a krátce odmítá požadavky.
- Bulkhead: oddělení thread/poolů pro různé typy provozu, aby kolaps jedné třídy neovlivnil ostatní.
Konfigurace, tajemství a feature flags
- 12-Factor: konfigurace přes ENV, šablonování pro více prostředí, validace schématem (Zod/Joi).
- Secrets v secret manageru (KMS/HSM, rotace), nikdy v repozitáři ani v logu.
- Feature flagy: bezpečné zapínání funkcí (canary, percentage rollout), možnost okamžitého vypnutí.
CI/CD a strategie nasazení
- Canary: postupné navyšování provozu na novou verzi, sledování SLO a rollback při degradaci.
- Blue/Green: paralelní prostředí s rychlým přepnutím a návratem.
- Rolling: plynulá obměna replik s readiness a PodDisruptionBudget (PDB) v Kubernetes.
- Automatizujte verzování (SemVer), SBOM, skeny závislostí/image a podpisy artefaktů.
Alerting: od symptomů ke kauzální diagnostice
- Primárně alertujte porušení SLO a burn rate error budgetu (např. 2h i 24h okna).
- Doplňte symptomatické alerty: p95 latence, chybovost 5xx, lag fronty, selhání readiness, HPA saturace.
- Každý alert má runbook: popis, kroky, vlastníka, eskalační politiku.
Logování a korelace: od události k příčině
- Strukturované logy (JSON), korelační identifikátory (
trace_id,span_id,correlation_id), žádné PII bez maskování. - Centralizace přes Fluent Bit/Vector → Loki/Elastic/Cloud. Retenční politiku dělte podle třídy logů (audit/app/debug).
- Prohledávání přes dotazy navázané na trasy: z trace otevřít související logy instance služby.
Datové závislosti: DB, cache a messaging
- DB: měřte latenci dotazů, saturaci poolu, počet připojení, deadlocky. Zvažte read replicas a connection pooling proxy.
- Cache (Redis): hit ratio, velikost, evikace. Sledujte thundering herd a používejte dogpile ochranu.
- Messaging: Kafka lag, throughput, Consumer Group rebalance, dead-letter fronty, idempotence.
Správa schémat a verzí API
- Zpětně kompatibilní změny (additivní), kontraktové testy (Pact), consumer-driven contracts.
- Schema registry (Avro/Protobuf/JSON Schema) s verzováním a pravidly kompatibility.
- Deprekace s plánem a telemetrií využití verzí.
Testování: od jednotek k testům v produkci
- Contract testy mezi službami, integrační testy s lokálními kontejnery (Testcontainers).
- Chaos engineering: síťové latence, výpadky uzlů, škrcení zdrojů, failure modes (Chaos Mesh, Litmus).
- Shadow traffic a syntetické testy pro ověření po releasu.
Škálování a kapacitní plánování
- HPA (CPU/RAM + vlastní metriky – p95 latence, běžící požadavky, lag fronty).
- VPA pro návrh/úpravu requests/limits; Cluster Autoscaler pro uzly.
- Plánujte na základě trendů SLI, sezónnosti a marketingových špiček. Disponujte load test profily.
Nákladovost a FinOps v mikroservisním prostředí
- Tagujte náklady na úrovni služeb (náklady/RPS, náklady/událost). Vizualizujte cost per SLO.
- Řiďte retence logů/tras, sampling, úrovně metrik (high/low cardinality).
- Optimalizujte requests (omezení headroomu), využívejte spot/preemptible instance pro ne-kritické služby.
Bezpečnost: zero trust, IAM a compliance
- mTLS mezi službami, rotace certifikátů, policy enforcement v meshi.
- Princip nejmenších práv pro služby (service accounts, krátkodobé tokeny), tajemství v KMS.
- Auditní logy odolné proti manipulaci, WAF/rate limiting na API gateway, detekce anomálií.
- Compliance (GDPR, PCI DSS, SOC 2) → důsledná observabilita přístupů a plán incidentů.
Incident management a postmortem kultura
- On-call s jasnou eskalací, paging policy a runbooky pro hlavní poruchové módy.
- Postmortem bez obviňování: analýza kořenové příčiny, akční body, zlepšení detekce a obrany.
- Blameless kultura zvyšuje rychlost učení a snižuje skryté chyby.
Dashboardy pro různé role
- Byznys: konverze, transakce za minutu, doba zpracování objednávky.
- Provoz: p95/p99, chybovost, RPS, zdraví replik, stavy HPA/VPA, fronty.
- Vývoj: chyby dle verze releasu, rozpady endpointů, N+1 dotazy, saturace DB/Cache.
Referenční implementační vzor (HTTP služba)
// Pseudokód (Node/Express styl) se standardní telemetrií
initOpenTelemetry({
serviceName: "orders",
serviceVersion: process.env.VERSION
});
const app = express();
app.use(requestId()); // X-Request-ID -> correlation_id
app.use(otelHttpInstrumentation()); // spany pro HTTP
app.use(rateLimit());
app.use(timeout("5s"));
app.get("/health/ready", checkDeps); // ping DB/cache
app.get("/orders/:id", async (req, res) => {
const span = startSpan("load_order");
try {
const order = await db.get(req.params.id, { timeout: 200 }); // klient s timeouts
res.json(order);
} catch (e) {
span.recordException(e);
res.status(503).json({ error: "temporarily_unavailable" });
} finally {
span.end();
}
});
app.listen(process.env.PORT);
Checklist zavedení monitoringu a správy mikroservis
- Definovaná SLI/SLO + alerty na burn rate.
- OpenTelemetry pro traces/metrics/logs, jednotné štítky, korelace
trace_id. - Health-checky (live/ready/startup) + graceful shutdown.
- Timeouty, retry s jitterem, circuit breaker a bulkhead vzory.
- API gateway + (volitelně) service mesh pro síťovou spolehlivost a mTLS.
- CI/CD se strategiemi canary/rolling, automatický rollback, SBOM a skeny.
- Správa konfigurace a tajemství, feature flagy a audit změn.
- Kapacitní plánování, HPA/VPA/CA, load testy a chaos testy.
- FinOps: metriky nákladů a řízení retencí/samplingu telemetrie.
- Incident proces, runbooky a blameless postmortems.
Závěr
Monitorování a správa mikroservis není jednorázový projekt, ale kontinuální praxe. Standardizujte telemetrii, řiďte spolehlivost přes SLO a error budgety, automatizujte nasazování a škálování a budujte kulturu rychlé detekce a nápravy. Kombinace dobře nastavené observability, provozních vzorů odolnosti a disciplinovaného CI/CD zkracuje dobu výpadků, snižuje náklady a umožňuje týmům bezpečně inovovat.


























