Comparthing Logo
pozorovateľnosťmikroslužbyťažba drevamonitorovaniecloudová infraštruktúradistribuované systémy

Pozorovateľnosť v mikroslužbách vs. monolitické systémové protokolovanie

Pozorovateľnosť mikroslužieb ponúka distribuované sledovanie, metriky a protokoly naprieč nezávislými službami, zatiaľ čo monolitické protokolovanie sa zameriava na centralizované záznamy z jednej aplikácie. Správna voľba závisí od zložitosti systému, rozsahu a toho, koľko informácií tímy potrebujú o interakciách služieb.

Zvýraznenia

  • Pozorovateľnosť mikroslužieb považuje stopy, metriky a protokoly za rovnocenné signály, zatiaľ čo monolitické protokolovanie sa takmer výlučne opiera o textové záznamy.
  • Distribuované sledovanie umožňuje tímom presne určiť, ktorá konkrétna služba spôsobila zlyhanie, s čím majú tradičné protokoly problémy naprieč hranicami služieb.
  • Monolitická ťažba dreva vyžaduje na spustenie oveľa menej infraštruktúry a odborných znalostí, čo ju robí atraktívnou pre menšie alebo staršie systémy.
  • Pozorovateľnosť sa škáluje so zložitosťou systému, zatiaľ čo monolitické protokolovanie má tendenciu sa zhoršovať s rastúcou veľkosťou aplikácie a prevádzkou.

Čo je Pozorovateľnosť v mikroslužbách?

Viacrozmerný prístup kombinujúci sledovania, metriky a protokoly na pochopenie správania v rámci distribuovaných, nezávisle nasadených služieb.

  • Postavené na troch pilieroch: distribuované sledovanie, metriky a štruktúrované protokolovanie naprieč službami
  • Používa korelačné ID na sledovanie jednej požiadavky pri prepínaní medzi desiatkami alebo stovkami služieb
  • Na zber a vizualizáciu údajov sa spolieha na nástroje ako OpenTelemetry, Jaeger, Prometheus a Grafana
  • Navrhnuté na spracovanie prchavej infraštruktúry, kde sa kontajnery a pody neustále otáčajú hore a dole
  • Umožňuje tímom SRE odhaľovať anomálie prostredníctvom cieľov na úrovni služieb a rozpočtov chýb.

Čo je Monolitické systémové protokolovanie?

Tradičný prístup, kde jedna aplikácia zapisuje položky protokolu do centralizovaných súborov alebo do jedného úložiska protokolov na ladenie a auditovanie.

  • Záznamy pochádzajú z jednej kódovej základne spustenej ako jeden proces, vďaka čomu je sledovanie ciest požiadaviek jednoduché.
  • Zvyčajne používa protokolovanie založené na súboroch, syslog alebo jednoduché agregátory protokolov ako Logback alebo log4j
  • Ladenie zvyčajne zahŕňa prehľadávanie protokolových súborov alebo dotazovanie jednej inštancie zásobníka ELK
  • Režijné náklady na výkon sú minimálne, pretože protokolovanie prebieha v rámci jedného prostredia runtime.
  • Jednoduchšia implementácia korelácie prostredníctvom lokálneho kontextu vlákna alebo jednoduchých ID relácie

Tabuľka porovnania

Funkcia Pozorovateľnosť v mikroslužbách Monolitické systémové protokolovanie
Architektúra Distribuované v mnohých službách Jedna zjednotená aplikácia
Primárne dátové typy Trasovanie, metriky a protokoly Primárne protokoly, niekedy metriky
Žiadosť o sledovanie Distribuované sledovanie s kontextom rozsahu Sledovanie lokálne na úrovni vlákna alebo na základe relácie
Zložitosť nástrojov Vysoká – vyžaduje si inštrumentáciu naprieč službami Nízka — postačuje jeden protokolový kanál
Škálovateľnosť Horizontálne škálovanie podľa počtu služieb Obmedzené priepustnosťou jednej aplikácie
Diagnostika zlyhania Identifikuje, ktorá služba spôsobila latenciu alebo chyby Jednoduchšie v rámci jedného procesu, ťažšie na hraniciach
Požiadavky na skladovanie Vysokoobjemové, často časové radové databázy Stredne veľké, zvyčajne ploché súbory alebo jeden index
Náklady na implementáciu Významná počiatočná investícia Nižšie počiatočné náklady na nastavenie

Podrobné porovnanie

Základná filozofia a prístup

Pozorovateľnosť mikroslužieb predpokladá, že nemôžete vopred predpovedať každý režim zlyhania, takže zhromažďujete dostatok rozmanitej telemetrie, aby ste mohli klásť nové otázky po výskyte problémov. Monolitické protokolovanie zaujíma jednoduchší prístup: zachytiť dostatok textových záznamov na rekonštrukciu toho, čo sa stalo počas požiadavky. Prvý prístup považuje protokoly za jeden signál z mnohých, zatiaľ čo druhý považuje protokoly za primárny signál pre pochopenie správania systému.

Ladenie a analýza základných príčin

Keď sa v nastavení mikroslužieb niečo pokazí, inžinieri sa pustia do distribuovaných sledovaní, aby presne zistili, ktorá služba spôsobila latenciu alebo vrátila chybu. V monolite vývojári zvyčajne otvoria súbor denníka, vyhľadajú časovú pečiatku alebo ID používateľa a prečítajú si postupné položky. Monolitná cesta sa zdá byť intuitívnejšia, ale prestane fungovať, keď systém narastie natoľko, že jeden súbor denníka sa stane nepraktickým.

Nástroje a infraštruktúra

Zásobníky pozorovateľnosti zvyčajne kombinujú inštrumentačnú knižnicu ako OpenTelemetry, sledovací backend ako Jaeger alebo Tempo, úložisko metrík ako Prometheus a vrstvu dashboardu ako Grafana. Monolitické logovanie často vyžaduje oveľa menej – framework pre logovanie, odosielateľ logov ako Filebeat a možno klaster ELK alebo OpenSearch. Reťazec nástrojov pre mikroslužby vyžaduje vyššiu operačnú zrelosť, ale oplatí sa, keď sa systémy stanú zložitejšími.

Výkon a réžia

Distribuované sledovanie zvyšuje náklady na sieťové skoky a serializáciu, pretože rozsahy sa šíria cez hranice služieb, hoci stratégie vzorkovania udržiavajú réžiu zvládnuteľnú. Monolitické protokolovanie zostáva blízko aplikačného procesu, takže výkon je ovplyvnený najmä vstupno-výstupnými operáciami disku a formátovaním protokolov. Oba prístupy môžu znížiť výkon, ak sa protokolovanie v produkčnom prostredí ponechá na podrobnej úrovni, ale prostredia mikroslužieb zvyčajne vyžadujú starostlivejšie ladenie.

Keď každé dáva zmysel

Pozorovateľnosť vyniká v prostrediach s častým nasadením, viacjazyčnými službami a tímami, ktoré potrebujú nezávislé vlastníctvo komponentov. Monolitické protokolovanie zostáva skvelou voľbou pre menšie aplikácie, staršie systémy alebo scenáre, kde dodržiavanie predpisov vyžaduje jednoduché audítorské záznamy. Mnohé organizácie v skutočnosti používajú oboje – tradičné protokoly uchovávajú na účely dodržiavania predpisov a zároveň používajú nástroje na sledovanie pre inžiniersky prehľad.

Výhody a nevýhody

Pozorovateľnosť v mikroslužbách

Výhody

  • + Úplná viditeľnosť žiadosti
  • + Korelácia viacerých signálov
  • + Škály s komplexnosťou
  • + Umožňuje postupy SRE

Cons

  • Vyššie náklady na nástroje
  • Strmšia krivka učenia
  • Vyššie réžie úložiska
  • Vyžaduje si disciplínu v oblasti prístrojového vybavenia

Monolitické systémové protokolovanie

Výhody

  • + Jednoduchá implementácia
  • + Nižšie prevádzkové náklady
  • + Známe väčšine tímov
  • + Jednoduchá audítorská stopa

Cons

  • Obmedzený prehľad o viacerých službách
  • Zle sa prispôsobuje veľkosti
  • Jediný bod zlyhania
  • Ťažšie korelovať udalosti

Bežné mylné predstavy

Mýtus

Samotné protokoly stačia na ladenie akéhokoľvek systému.

Realita

Záznamy fungujú dobre pre monolity, ale strácajú na účinnosti v distribuovaných systémoch, kde sa jedna požiadavka dotýka mnohých služieb. Metriky a stopy vypĺňajú medzery tým, že zobrazujú vzory a kauzálne reťazce, ktoré záznamy nedokážu ľahko odhaliť.

Mýtus

Pozorovateľnosť je len efektné logovanie s novým názvom.

Realita

Pozorovateľnosť je širšia disciplína, ktorá zahŕňa protokoly, ale pridáva aj metriky a stopy ako prvotriedne signály. Cieľ sa presúva z vyhľadávania záznamov na kladenie ľubovoľných otázok o správaní systému bez dodania nového kódu.

Mýtus

Monolitické systémy nevyžadujú pozorovateľnosť.

Realita

Aj jednotlivé aplikácie profitujú z metrík, sledovaní a štruktúrovaných protokolov, keď dosiahnu zmysluplný rozsah. Pozorovateľnosť sa týka pochopenia stavu systému, čo platí bez ohľadu na architektúru.

Mýtus

Distribuované sledovanie je príliš drahé na produkčné použitie.

Realita

Moderné sledovacie systémy používajú vzorkovanie založené na hlave alebo chvoste požiadaviek na zachytenie reprezentatívnej podmnožiny požiadaviek. To udržiava nízke réžijné náklady a zároveň poskytuje dostatok údajov na diagnostiku väčšiny problémov.

Mýtus

Prechod na mikroslužby automaticky zlepšuje pozorovateľnosť.

Realita

Mikroslužby sťažujú pozorovateľnosť, nie ju uľahčujú, pretože teraz máte viac pohyblivých častí na monitorovanie. Bez správneho vybavenia a nástrojov sa viditeľnosť v porovnaní s dobre vybaveným monolitom v skutočnosti znižuje.

Často kladené otázky

Aký je rozdiel medzi pozorovateľnosťou a logovaním?
Záznamy sú jedným z typov telemetrických údajov – diskrétne udalosti zaznamenávané aplikáciou. Pozorovateľnosť je vlastnosť systému, ktorá opisuje, ako dobre dokážete pochopiť jeho vnútorný stav z externých výstupov. Pozorovateľnosť využíva spoločne záznamy, metriky a stopy, zatiaľ čo záznamy sa zameriavajú iba na textové záznamy.
Prečo mikroslužby potrebujú distribuované sledovanie?
Jedna požiadavka používateľa v architektúre mikroslužieb môže pred dokončením prejsť cez päť, desať alebo viac služieb. Distribuované sledovanie sleduje túto požiadavku naprieč hranicami služieb pomocou korelačných ID a rozsahov, čo umožňuje zistiť, kde bol strávený čas a kde vznikli zlyhania.
Môžete použiť tradičné protokolovanie v prostredí mikroslužieb?
Áno, ale bez zdieľaných identifikátorov je ťažšie korelovať protokoly medzi službami. Väčšina tímov pridáva štruktúrované protokolovanie s korelačnými ID, potom sledovanie vrstiev a metriky, aby získali úplný obraz o správaní systému.
Aké sú tri piliere pozorovateľnosti?
Tri piliere sú protokoly, metriky a stopy. Protokoly zachytávajú jednotlivé udalosti, metriky zaznamenávajú číselné údaje v priebehu času a stopy zobrazujú cestu požiadavky cez distribuované systémy. Spoločne umožňujú tímom odpovedať na otázky týkajúce sa výkonu, chýb a používateľskej skúsenosti.
Je OpenTelemetry štandardom pre pozorovateľnosť?
OpenTelemetry sa stal de facto štandardom pre inštrumentáciu vo väčšine jazykov a platforiem. Zlúčil projekty OpenTracing a OpenCensus a teraz je podporovaný nadáciou Cloud Native Computing Foundation so širokou podporou od dodávateľov a nástrojov s otvoreným zdrojovým kódom.
Koľko stojí pozorovateľnosť v porovnaní s logovaním?
Pozorovateľnosť zvyčajne stojí viac kvôli dodatočnému úložisku, licenciám na nástroje a času potrebnému na inžinierstvo. Často však skracuje priemerný čas do riešenia a zabraňuje nákladným výpadkom, čo môže vyvážiť počiatočné investície pre organizácie prevádzkujúce zložité systémy.
Prospievajú monolitom nástroje na pozorovanie?
Rozhodne. Dokonca aj jednotlivé aplikácie získavajú hodnotu z distribuovaného sledovania v rámci vlastného procesu, z metrík, ktoré odhaľujú trendy výkonu, a zo štruktúrovaných protokolov, ktoré sa ľahšie dotazujú. Nástroje na sledovanie nie sú výhradne pre mikroslužby.
Čo je to rozsah v distribuovanom sledovaní?
Rozsah predstavuje jednu jednotku práce v rámci sledovania, ako napríklad databázový dotaz alebo HTTP volanie medzi službami. Rozsahy majú názov, čas začiatku, trvanie a metadáta a sú prepojené prostredníctvom vzťahov rodič-dieťa, čím vytvárajú kompletné sledovanie.
Ako korelujete protokoly medzi mikroslužbami?
Tímy zvyčajne vkladajú ID korelácie na okraj systému a šíria ho prostredníctvom hlavičiek HTTP, metadát správ alebo kontextu vlákien. Každá služba obsahuje toto ID vo svojich záznamoch protokolu, takže jedno vyhľadávanie vo všetkých službách vráti úplnú cestu požiadavky.
Mali by startupy používať pozorovateľnosť alebo sa držať protokolovania?
Startupy v ranom štádiu zvyčajne začínajú so štruktúrovaným protokolovaním a základnými metrikami, pretože sa dodávajú rýchlejšie a stoja menej. S rastom systému a množením tímov sa pridanie sledovania a jednotnej platformy pozorovateľnosti stáva výhodným pre udržanie rýchlosti vývoja.

Rozsudok

Zvoľte si pozorovateľnosť mikroslužieb, keď váš systém zahŕňa mnoho nezávislých služieb a potrebujete porozumieť interakciám medzi službami v reálnom čase. Pre jednoduchšie aplikácie, kde centralizované záznamy poskytujú dostatočný prehľad a prevádzkové náklady sú dôležitejšie ako podrobný prehľad, sa držte monolitického protokolovania. V praxi zrelé systémy často kombinujú oba prístupy, namiesto toho, aby sa plne zaviazali k jednému.

Súvisiace porovnania

Adaptívna infraštruktúra vs. návrh statickej infraštruktúry

Adaptívna infraštruktúra sa dynamicky prispôsobuje meniacim sa pracovným zaťaženiam prostredníctvom automatizácie a škálovania v reálnom čase, zatiaľ čo návrh statickej infraštruktúry sa spolieha na fixné, predkonfigurované zdroje. Výber medzi nimi závisí od variability pracovných zaťažení, predvídateľnosti rozpočtu a prevádzkovej zrelosti vo vašom cloudovom prostredí.

Agregácia telemetrie verzus protokolovanie z jedného zdroja

Agregácia telemetrie konsoliduje metriky, protokoly a stopy z mnohých zdrojov do jednotného kanála, zatiaľ čo protokolovanie z jedného zdroja sa zameriava na zachytávanie a analýzu údajov z jedného konkrétneho zdroja. Správna voľba závisí od zložitosti systému, cieľov pozorovateľnosti a operačného rozsahu.

AWS vs Google Cloud

Toto porovnanie skúma služby Amazon Web Services a Google Cloud analýzou ich ponúk služieb, cenových modelov, globálnej infraštruktúry, výkonu, skúseností vývojárov a ideálnych prípadov použitia, čím pomáha organizáciám vybrať cloudovú platformu, ktorá najlepšie vyhovuje ich technickým a obchodným požiadavkám.

Cloudové spracovanie vs. spracovanie na okraji siete

Cloudové spracovanie spracováva dáta v centralizovaných vzdialených dátových centrách, čo ponúka masívnu škálovateľnosť a výpočtový výkon. Spracovanie na okraji siete prináša výpočty bližšie k miestu, kde sa dáta generujú, čím sa znižuje latencia a využitie šírky pásma. Oba prístupy slúžia rôznym potrebám v moderných distribuovaných systémoch.

Deduplikácia na úrovni požiadaviek vs. deduplikácia na úrovni dávok

Deduplikácia na úrovni požiadaviek spracováva každú prichádzajúcu požiadavku jednotlivo, aby sa v reálnom čase eliminovali duplikáty, zatiaľ čo dávková deduplikácia zoskupuje viacero požiadaviek a po ich nahromadení odstraňuje redundancie. Oba prístupy znižujú redundanciu údajov, ale výrazne sa líšia v latencii, využívaní zdrojov a ideálnych prípadoch použitia.