Comparthing Logo
obserwowalnośćmikrousługiwycięcie lasumonitorowanieinfrastruktura chmurowasystemy rozproszone

Obserwowalność w mikrousługach a rejestrowanie w systemie monolitycznym

Obserwowalność mikrousług oferuje rozproszone śledzenie, metryki i logi w niezależnych usługach, podczas gdy logowanie monolityczne koncentruje się na scentralizowanych rekordach z jednej aplikacji. Właściwy wybór zależy od złożoności systemu, skali oraz zakresu informacji, jakich zespoły potrzebują do analizy interakcji z usługami.

Najważniejsze informacje

  • Obserwowalność mikrousług traktuje ślady, metryki i logi jako równorzędne sygnały, podczas gdy rejestrowanie monolityczne opiera się niemal wyłącznie na zapisach tekstowych.
  • Rozproszone śledzenie pozwala zespołom dokładnie określić, która konkretna usługa spowodowała awarię, co jest trudne do osiągnięcia w przypadku tradycyjnych dzienników obsługujących różne usługi.
  • Rozpoczęcie rejestrowania monolitycznego wymaga znacznie mniejszej infrastruktury i wiedzy specjalistycznej, co czyni je atrakcyjnym rozwiązaniem dla mniejszych lub starszych systemów.
  • Możliwość obserwowania rośnie wraz ze złożonością systemu, natomiast rejestrowanie monolityczne ma tendencję do pogarszania się wraz ze wzrostem rozmiaru aplikacji i ruchu.

Czym jest Obserwowalność w mikrousługach?

Wielowymiarowe podejście łączące ślady, metryki i logi w celu zrozumienia zachowań w rozproszonych, niezależnie wdrożonych usługach.

  • Zbudowany na trzech filarach: rozproszonym śledzeniu, metrykach i ustrukturyzowanym rejestrowaniu w różnych usługach
  • Wykorzystuje identyfikatory korelacji do śledzenia pojedynczego żądania podczas przeskakiwania między dziesiątkami lub setkami usług
  • Opiera się na narzędziach takich jak OpenTelemetry, Jaeger, Prometheus i Grafana do zbierania i wizualizacji danych
  • Zaprojektowano do obsługi infrastruktury efemerycznej, w której kontenery i moduły stale się rozkręcają i zwalniają
  • Umożliwia zespołom SRE wykrywanie anomalii poprzez cele dotyczące poziomu usług i budżety błędów

Czym jest Rejestrowanie systemu monolitycznego?

Tradycyjne podejście, w którym pojedyncza aplikacja zapisuje wpisy dziennika w scentralizowanych plikach lub pojedynczym magazynie dziennika na potrzeby debugowania i audytu.

  • Dzienniki pochodzą z jednej bazy kodu działającej jako pojedynczy proces, co ułatwia śledzenie ścieżek żądań
  • Zwykle wykorzystuje rejestrowanie oparte na plikach, syslog lub proste agregatory dzienników, takie jak Logback lub log4j
  • Debugowanie zwykle polega na przeszukiwaniu plików dziennika lub wysyłaniu zapytania do pojedynczej instancji stosu ELK
  • Narzut wydajnościowy jest minimalny, ponieważ rejestrowanie odbywa się w jednym środowisku wykonawczym
  • Łatwiejsze wdrożenie korelacji poprzez kontekst lokalny wątku lub proste identyfikatory sesji

Tabela porównawcza

Funkcja Obserwowalność w mikrousługach Rejestrowanie systemu monolitycznego
Architektura Rozproszone w wielu usługach Pojedyncza, ujednolicona aplikacja
Podstawowe typy danych Ślady, metryki i logi Głównie rejestry, czasami metryki
Śledzenie żądań Rozproszone śledzenie z kontekstem rozpiętości Śledzenie lokalne wątków lub oparte na sesjach
Złożoność narzędzi Wysoki — wymaga instrumentacji w różnych usługach Niski — wystarczy pojedynczy rurociąg logowy
Skalowalność Skalowanie poziome wraz z liczbą usług Ograniczone przez przepustowość pojedynczej aplikacji
Diagnostyka awarii Wskazuje, która usługa spowodowała opóźnienie lub błędy Łatwiej w ramach jednego procesu, trudniej na granicach
Wymagania dotyczące przechowywania Bazy danych o dużej objętości, często szeregach czasowych Umiarkowany, zazwyczaj pliki płaskie lub jeden indeks
Koszt wdrożenia Znaczna początkowa inwestycja Niższy początkowy koszt konfiguracji

Szczegółowe porównanie

Główna filozofia i podejście

Obserwowalność mikrousług zakłada, że nie można z góry przewidzieć każdego trybu awarii, dlatego gromadzi się wystarczająco dużo zróżnicowanej telemetrii, aby zadawać nowe pytania po wystąpieniu problemów. Rejestrowanie monolityczne opiera się na prostszym podejściu: rejestruje wystarczającą liczbę rekordów tekstowych, aby odtworzyć, co wydarzyło się podczas żądania. Pierwsze podejście traktuje logi jako jeden z wielu sygnałów, podczas gdy drugie traktuje logi jako główny sygnał umożliwiający zrozumienie zachowania systemu.

Debugowanie i analiza przyczyn źródłowych

Gdy coś się zepsuje w konfiguracji mikrousług, inżynierowie korzystają z rozproszonych śladów, aby dokładnie sprawdzić, która usługa spowodowała opóźnienie lub zwróciła błąd. W monolicie programiści zazwyczaj otwierają plik dziennika, wyszukują znacznik czasu lub identyfikator użytkownika i odczytują kolejne wpisy. Ścieżka monolitu wydaje się bardziej intuicyjna, ale przestaje działać, gdy system rozrasta się na tyle, że pojedynczy plik dziennika staje się nieporęczny.

Narzędzia i infrastruktura

Stosy obserwowalności zazwyczaj łączą bibliotekę instrumentacji, taką jak OpenTelemetry, zaplecze śledzące, takie jak Jaeger lub Tempo, magazyn metryk, taki jak Prometheus, oraz warstwę kokpitu menedżerskiego, taką jak Grafana. Monolityczne logowanie często wymaga znacznie mniej – frameworka do logowania, dostawcy logów, takiego jak Filebeat, a może klastra ELK lub OpenSearch. Łańcuch narzędzi mikrousług wymaga większej dojrzałości operacyjnej, ale opłaca się, gdy systemy stają się bardziej złożone.

Wydajność i narzut

Rozproszone śledzenie generuje dodatkowe przeskoki sieciowe i koszty serializacji, ponieważ zakresy są propagowane poza granice usług, jednak strategie próbkowania pozwalają na kontrolowanie narzutu. Monolityczne rejestrowanie danych pozostaje blisko procesu aplikacji, więc spadek wydajności wynika głównie z operacji wejścia/wyjścia na dysku i formatowania logów. Oba podejścia mogą obniżyć wydajność, jeśli rejestrowanie danych jest pozostawione na poziomie rozwlekłym w środowisku produkcyjnym, ale środowiska mikrousług zazwyczaj wymagają bardziej starannego dostrajania.

Kiedy wszystko ma sens

Obserwowalność sprawdza się w środowiskach z częstymi wdrożeniami, usługami wielojęzycznymi i zespołami wymagającymi niezależnej własności komponentów. Monolityczne rejestrowanie danych nadal sprawdza się w mniejszych aplikacjach, starszych systemach lub scenariuszach, w których zgodność z przepisami wymaga przejrzystych ścieżek audytu. Wiele organizacji korzysta z obu rozwiązań – zachowując tradycyjne logi dla zapewnienia zgodności, a jednocześnie dodając do nich narzędzia do obserwowania, aby zapewnić wgląd w inżynierię.

Zalety i wady

Obserwowalność w mikrousługach

Zalety

  • + Pełna widoczność żądania
  • + Korelacja wielosygnałowa
  • + Skala złożoności
  • + Umożliwia praktyki SRE

Zawartość

  • Wyższy koszt oprzyrządowania
  • Bardziej stroma krzywa uczenia się
  • Więcej miejsca na przechowywanie
  • Wymaga dyscypliny w zakresie instrumentów

Rejestrowanie systemu monolitycznego

Zalety

  • + Łatwe do wdrożenia
  • + Niższe koszty operacyjne
  • + Znany większości zespołów
  • + Łatwy ślad audytu

Zawartość

  • Ograniczony wgląd międzyusługowy
  • Słabo skaluje się w zależności od rozmiaru
  • Pojedynczy punkt awarii
  • Trudniej powiązać zdarzenia

Częste nieporozumienia

Mit

Same logi wystarczą do debugowania dowolnego systemu.

Rzeczywistość

Logi sprawdzają się w przypadku monolitów, ale tracą na skuteczności w systemach rozproszonych, gdzie pojedyncze żądanie dotyczy wielu usług. Metryki i ślady wypełniają luki, pokazując wzorce i ciągi przyczynowo-skutkowe, których logi nie są w stanie łatwo ujawnić.

Mit

Obserwowalność to po prostu eleganckie logowanie pod nową nazwą.

Rzeczywistość

Obserwowalność to szersza dziedzina, która obejmuje logi, ale dodaje również metryki i ślady jako sygnały najwyższej jakości. Cel przesuwa się od przeszukiwania rekordów do zadawania dowolnych pytań o zachowanie systemu bez konieczności wprowadzania nowego kodu.

Mit

Systemy monolityczne nie wymagają obserwowalności.

Rzeczywistość

Nawet pojedyncze aplikacje korzystają z metryk, śladów i ustrukturyzowanych logów, gdy osiągną znaczącą skalę. Obserwowalność polega na zrozumieniu stanu systemu, co ma zastosowanie niezależnie od architektury.

Mit

Rozproszone śledzenie jest zbyt drogie do zastosowań produkcyjnych.

Rzeczywistość

Nowoczesne systemy śledzenia wykorzystują próbkowanie oparte na głowie lub ogonie, aby wychwycić reprezentatywny podzbiór żądań. Pozwala to ograniczyć narzut, a jednocześnie zapewnić wystarczającą ilość danych do zdiagnozowania większości problemów.

Mit

Przejście na mikrousługi automatycznie poprawia możliwość obserwacji.

Rzeczywistość

Mikrousługi utrudniają obserwowalność, a nie ją ułatwiają, ponieważ teraz trzeba monitorować więcej ruchomych części. Bez odpowiedniej instrumentacji i narzędzi widoczność w rzeczywistości maleje w porównaniu z dobrze zinstrumentowanym monolitem.

Często zadawane pytania

Jaka jest różnica między obserwowalnością a rejestrowaniem?
Rejestrowanie to jeden z rodzajów danych telemetrycznych – dyskretne zdarzenia rejestrowane przez aplikację. Obserwowalność to właściwość systemu, która opisuje, jak dobrze można zrozumieć jego stan wewnętrzny na podstawie danych wyjściowych z zewnątrz. Obserwowalność wykorzystuje logi, metryki i ślady łącznie, podczas gdy rejestrowanie koncentruje się wyłącznie na rekordach tekstowych.
Dlaczego mikrousługi wymagają rozproszonego śledzenia?
Pojedyncze żądanie użytkownika w architekturze mikrousług może przejść przez pięć, dziesięć lub więcej usług przed ich ukończeniem. Rozproszone śledzenie śledzi to żądanie przez granice usług, wykorzystując identyfikatory korelacji i zakresy, umożliwiając sprawdzenie, na co poświęcono czas i skąd pochodziły błędy.
Czy można używać tradycyjnego rejestrowania w środowisku mikrousług?
Tak, ale korelowanie logów między usługami staje się trudniejsze bez współdzielonych identyfikatorów. Większość zespołów dodaje ustrukturyzowane logowanie z identyfikatorami korelacji, a następnie śledzenie warstw i metryki, aby uzyskać pełny obraz zachowania systemu.
Jakie są trzy filary obserwowalności?
Trzy filary to logi, metryki i ślady. Logi rejestrują zdarzenia dyskretne, metryki rejestrują dane liczbowe w czasie, a ślady pokazują ścieżkę żądania w systemach rozproszonych. Razem pozwalają zespołom odpowiadać na pytania dotyczące wydajności, błędów i doświadczenia użytkownika.
Czy OpenTelemetry jest standardem obserwowalności?
OpenTelemetry stał się de facto standardem dla instrumentów w większości języków programowania i platform. Połączył projekty OpenTracing i OpenCensus i jest obecnie wspierany przez Cloud Native Computing Foundation, z szerokim wsparciem ze strony dostawców i narzędzi open source.
Ile kosztuje obserwowalność w porównaniu do rejestrowania?
Obserwowalność zazwyczaj kosztuje więcej ze względu na dodatkową przestrzeń dyskową, licencje na narzędzia i czas potrzebny inżynierom na oprzyrządowanie. Często jednak skraca średni czas rozwiązywania problemów i zapobiega kosztownym awariom, co może zrekompensować początkową inwestycję w przypadku organizacji korzystających ze złożonych systemów.
Czy monolity korzystają z narzędzi obserwowalności?
Zdecydowanie. Nawet pojedyncze aplikacje czerpią korzyści z rozproszonego śledzenia w ramach własnego procesu, z metryk ujawniających trendy wydajności oraz ze strukturalnych logów, które są łatwiejsze do przeszukiwania. Narzędzia do obserwowalności nie są zarezerwowane wyłącznie dla mikrousług.
Czym jest rozpiętość w śledzeniu rozproszonym?
Rozpiętość reprezentuje pojedynczą jednostkę pracy w ramach śladu, taką jak zapytanie do bazy danych lub wywołanie HTTP między usługami. Rozpiętości mają nazwę, czas rozpoczęcia, czas trwania i metadane, a następnie są połączone relacjami nadrzędny-podrzędny, tworząc kompletny ślad.
W jaki sposób korelujesz logi w różnych mikrousługach?
Zespoły zazwyczaj wstrzykują identyfikator korelacji na granicy systemu i propagują go za pośrednictwem nagłówków HTTP, metadanych wiadomości lub kontekstu wątku. Każda usługa uwzględnia ten identyfikator w swoich wpisach w dzienniku, więc pojedyncze wyszukiwanie we wszystkich usługach zwraca pełną ścieżkę żądania.
Czy startupy powinny korzystać z możliwości obserwacji czy trzymać się rejestrowania?
Startupy na wczesnym etapie rozwoju zazwyczaj zaczynają od ustrukturyzowanego rejestrowania i podstawowych metryk, ponieważ są one szybsze i tańsze. Wraz z rozwojem systemu i mnożeniem się zespołów, dodanie śledzenia i ujednoliconej platformy obserwacji staje się opłacalne, aby utrzymać tempo rozwoju.

Wynik

Wybierz obserwowalność mikrousług, gdy Twój system obejmuje wiele niezależnych usług i potrzebujesz zrozumieć interakcje między nimi w czasie rzeczywistym. W przypadku prostszych aplikacji, w których scentralizowane rejestry zapewniają wystarczającą przejrzystość, a obciążenie operacyjne ma większe znaczenie niż szczegółowy wgląd, wybierz obserwowalność mikrousług. W praktyce dojrzałe systemy często łączą oba podejścia, zamiast całkowicie polegać na jednym.

Powiązane porównania

Agregacja danych telemetrycznych a rejestrowanie z jednego źródła

Agregacja danych telemetrycznych konsoliduje metryki, logi i ślady z wielu źródeł w ujednolicony kanał, podczas gdy logowanie z jednego źródła koncentruje się na przechwytywaniu i analizowaniu danych z jednego konkretnego źródła. Właściwy wybór zależy od złożoności systemu, celów w zakresie obserwowalności oraz skali operacyjnej.

AWS kontra Google Cloud

Porównanie analizuje Amazon Web Services i Google Cloud, badając ich ofertę usług, modele cenowe, globalną infrastrukturę, wydajność, doświadczenie deweloperów oraz optymalne przypadki użycia, pomagając organizacjom wybrać platformę chmurową najlepiej dopasowaną do ich wymagań technicznych i biznesowych.

Bazy danych wektorowe a tradycyjne bazy danych relacyjne

Bazy danych wektorowe specjalizują się w przechowywaniu i wyszukiwaniu wielowymiarowych osadzeń na potrzeby zadań związanych ze sztuczną inteligencją i podobieństwem, podczas gdy tradycyjne relacyjne bazy danych doskonale radzą sobie ze strukturalnymi danymi, precyzyjnymi zapytaniami i transakcjami ACID. Wybór między nimi zależy od tego, czy Twoje obciążenie koncentruje się na wyszukiwaniu semantycznym, czy na integralności transakcyjnej.

Buforowanie lokalne a scentralizowane klastry buforowania

Lokalna pamięć podręczna przechowuje dane bezpośrednio na serwerach aplikacji, co zapewnia dostęp z bardzo niskim opóźnieniem, podczas gdy scentralizowane klastry pamięci podręcznej wdrażają dedykowaną, współdzieloną infrastrukturę, do której wiele usług może uzyskiwać dostęp jednocześnie, co pozwala na spójne zarządzanie stanem.

Debugowanie systemów rozproszonych a debugowanie systemów lokalnych

Debugowanie systemów rozproszonych rozwiązuje problemy w wielu maszynach i usługach sieciowych, podczas gdy debugowanie systemów lokalnych koncentruje się na problemach w obrębie jednej maszyny lub aplikacji. Każde podejście wymaga innych narzędzi, modeli mentalnych i strategii, aby skutecznie izolować i rozwiązywać problemy.