Comparthing Logo
siatka usługowabramka APIuczenie maszynoweinfrastruktura chmurowakubernetesmikrousługi

Service Mesh dla uczenia maszynowego a tradycyjne bramy API

Sieci usług zbudowane dla obciążeń uczenia maszynowego obsługują dynamiczny, wysokonakładowy ruch wnioskowania z precyzyjnym zarządzaniem ruchem, podczas gdy tradycyjne bramy API koncentrują się na routingu żądań, uwierzytelnianiu i ograniczaniu przepustowości dla standardowych mikrousług. Wybór między nimi zależy od tego, czy głównym celem jest obserwowalność i wersjonowanie modeli specyficzne dla uczenia maszynowego, czy też uniwersalna orkiestracja API.

Najważniejsze informacje

  • Siatki usług zapewniają natywny podział ruchu w przypadku wdrożeń w modelu kanarkowym, natomiast bramy API wymagają niestandardowej konfiguracji.
  • Bramy API dodają opóźnienie tylko na brzegu, natomiast boczne elementy usługi mesh dodają narzut na każdym wewnętrznym przeskoku.
  • Siatki usług umożliwiają rozproszone śledzenie w obrębie procesów uczenia maszynowego, zapewniając widoczność, jakiej nie są w stanie zapewnić bramy API.
  • Trasowanie uwzględniające procesor GPU jest możliwe w przypadku siatek usług, ale nie jest funkcją tradycyjnych bram API.

Czym jest Service Mesh dla ML?

Warstwa infrastruktury przeznaczona do zarządzania komunikacją między usługami ML, obsługi ruchu wnioskowania, wersjonowania modeli i routingu uwzględniającego GPU.

  • Sieci usług, takie jak Istio i Linkerd, można rozszerzyć o komponenty specyficzne dla uczenia maszynowego, takie jak KServe, służące do kierowania wnioskowaniem.
  • Obsługują zaawansowany podział ruchu, umożliwiając wdrożenia typu canary oraz testowanie A/B nowych wersji modeli w środowisku produkcyjnym.
  • Wbudowany wzajemny protokół TLS (mTLS) zabezpiecza komunikację między mikrousługami bez konieczności wprowadzania zmian w kodzie aplikacji.
  • Serwery proxy typu sidecar, takie jak Envoy, zbierają szczegółowe dane telemetryczne dla każdego żądania, w tym informacje o opóźnieniach, współczynnikach błędów i rozmiarach danych dla wywołań wnioskowania uczenia maszynowego.
  • Siatki usług integrują się z natywnymi platformami ML Kubernetes, dzięki czemu doskonale nadają się do środowisk obsługujących model natywny dla chmury.

Czym jest Tradycyjne bramy API?

Centralny punkt wejścia, który kieruje żądaniami API, wymusza uwierzytelnianie, stosuje limity przepustowości i przekształca ładunki dla usług zaplecza.

  • Do popularnych bram API należą Kong, Apigee, AWS API Gateway i NGINX, powszechnie wykorzystywane w środowiskach korporacyjnych.
  • Zazwyczaj działają na skraju sieci, obsługując ruch północ-południe między klientami i usługami zaplecza.
  • Bramy API umożliwiają translację protokołów, konwertując żądania REST, gRPC lub WebSocket na formaty zgodne z zapleczem.
  • Większość z nich obsługuje domyślnie OAuth 2.0, walidację JWT i zarządzanie kluczami API w celu zabezpieczenia publicznych punktów końcowych.
  • Zazwyczaj są one bezstanowe i zoptymalizowane pod kątem wzorców żądanie-odpowiedź, a nie długotrwałych połączeń strumieniowych, powszechnych we wnioskowaniu uczenia maszynowego.

Tabela porównawcza

Funkcja Service Mesh dla ML Tradycyjne bramy API
Podstawowy przypadek użycia Zarządzanie ruchem wnioskowania ML i wersjonowanie modelu Ogólne kierowanie i koordynacja żądań API
Wzór ruchu Połączenia wnioskowe wschód-zachód (usługa-usługa) i połączenia o dużej liczbie połączeń Żądanie-odpowiedź północ-południe (klient-usługa)
Model wdrożenia Serwer proxy sidecar obok każdej usługi (np. Envoy, Linkerd-proxy) Centralna brama wdrożona na krawędzi sieci
Obsługa wersjonowania modeli Natywny podział ruchu dla wdrożeń w modelu kanarkowym i niebiesko-zielonym Ograniczone; zwykle wymaga niestandardowych reguł routingu
Obserwowalność Metryki dla każdego żądania, śledzenie rozproszone i telemetria specyficzna dla uczenia maszynowego Agregowane metryki, podstawowe rejestrowanie i liczba żądań
Funkcje bezpieczeństwa Automatyczny mTLS między usługami, szczegółowe zasady autoryzacji Walidacja klucza API, OAuth 2.0, JWT i biała lista adresów IP
Trasowanie uwzględniające GPU Możliwość wyznaczania tras na podstawie dostępności procesora GPU i wykorzystania zasobów Nieobsługiwane natywnie
Opóźnienie narzutu Zwykle 1-3 ms na przeskok ze względu na przetwarzanie boczne Ogólnie rzecz biorąc, niższe dla połączeń bramowych z pojedynczym skokiem
Najlepiej nadaje się do Platformy ML oparte na Kubernetesie z mikrousługami Publiczne interfejsy API, mobilne zaplecze i monolityczna ekspozycja usług

Szczegółowe porównanie

Zarządzanie ruchem i wdrażanie modeli

Sieci usług doskonale radzą sobie ze złożonymi wzorcami ruchu generowanymi przez systemy uczenia maszynowego, szczególnie gdy zespoły muszą stopniowo wdrażać nowe wersje modeli. Umożliwiają one podział ruchu między wersjami modelu na poziomie infrastruktury, dzięki czemu nowy model może obsługiwać 5% żądań, podczas gdy stary obsługuje resztę. Tradycyjne bramy API umożliwiają podobne podziały za pomocą niestandardowych reguł routingu, ale nie zostały zaprojektowane z myślą o wersjonowaniu modeli, co sprawia, że konfiguracja jest bardziej krucha i trudniejsza do utrzymania w odpowiedniej skali.

Obserwowalność i debugowanie

Gdy coś pójdzie nie tak z potokiem wnioskowania ML, trzeba wiedzieć, czy problem dotyczy modelu, danych, czy sieci. Siatki usług zapewniają rozproszone śledzenie, które śledzi żądanie w wielu usługach, rejestrując opóźnienie na każdym przeskoku i korelując je z konkretnymi wersjami modelu. Bramy API oferują przyzwoite rejestrowanie i metryki, ale zazwyczaj zatrzymują się na granicy bramy, pozostawiając Ci możliwość poskładania tego, co wydarzyło się w siatce usług lub środowisku mikrousług.

Architektura bezpieczeństwa

Oba podejścia poważnie traktują bezpieczeństwo, ale rozwiązują różne problemy. Sieci Service Mesh wymuszają model sieciowy „zero trust” poprzez automatyczne szyfrowanie całej komunikacji między usługami za pomocą protokołu mTLS, co ma znaczenie w przypadku przepływu wrażliwych danych wnioskowania między dziesiątkami mikrousług. Bramy API koncentrują się na bezpieczeństwie obwodowym, weryfikując legalność żądań przychodzących, zanim dotrą one do zaplecza. W przypadku systemów uczenia maszynowego przetwarzających dane regulowane, takie jak dane dotyczące opieki zdrowotnej czy informacje finansowe, połączenie obu warstw często okazuje się najbardziej sensowne.

Świadomość zasobów i optymalizacja GPU

Obciążenia uczenia maszynowego (ML) zachowują się inaczej niż typowe usługi sieciowe, ponieważ często obciążają procesory graficzne (GPU) i wymagają dużej ilości pamięci. Niektóre implementacje siatki usług można skonfigurować tak, aby kierowały żądania w oparciu o dostępność procesorów graficznych (GPU), wysyłając ruch do węzłów z dostępną mocą akceleratora. Tradycyjne bramy API nie mają pojęcia o podstawowych zasobach sprzętowych, traktując każdy backend jak czarną skrzynkę. To sprawia, że są mniej wydajne, gdy zachodzi potrzeba maksymalizacji kosztownego wykorzystania procesorów graficznych w całej flocie serwerów wnioskowania.

Złożoność operacyjna

Siatki usług wprowadzają dodatkowe obciążenie operacyjne, ponieważ każda usługa otrzymuje serwer proxy sidecar, który należy wdrożyć, monitorować i aktualizować. Dla zespołu, który zna już Kubernetes, jest to wykonalne, ale wiąże się z koniecznością nauki. Bramy API są zazwyczaj prostsze w obsłudze, ponieważ stanowią pojedynczy komponent, chociaż bramy korporacyjne, takie jak Apigee, charakteryzują się własną złożonością w zakresie portali dla deweloperów i zarządzania produktami API.

Kompromisy między kosztami a wydajnością

Wzorzec sidecar w sieciach usług dodaje opóźnienie na każdym przeskoku, zazwyczaj kilka milisekund, co może się nasilać w głębokich łańcuchach mikrousług. W przypadku aplikacji uczenia maszynowego wrażliwych na opóźnienia, takich jak systemy rekomendacji w czasie rzeczywistym, ten narzut ma znaczenie. Bramy API dodają opóźnienie tylko raz na brzegu, co czyni je bardziej przewidywalnymi w przypadku prostych wzorców żądanie-odpowiedź. Jednak koszty operacyjne uruchomienia siatki usług na dużą skalę można zrekompensować skróconym czasem debugowania i lepszym bezpieczeństwem wdrażania modeli uczenia maszynowego.

Zalety i wady

Service Mesh dla ML

Zalety

  • + Wersjonowanie modelu natywnego
  • + Szczegółowa kontrola ruchu
  • + Automatyczne szyfrowanie mTLS
  • + Głęboka obserwacja
  • + Trasowanie uwzględniające GPU

Zawartość

  • Wyższa złożoność operacyjna
  • Dodano opóźnienie na przeskok
  • Bardziej stroma krzywa uczenia się
  • Narzut zasobów z wózków bocznych

Tradycyjne bramy API

Zalety

  • + Łatwiejsze wdrożenie
  • + Niższe opóźnienie
  • + Dojrzały ekosystem
  • + Silne funkcje uwierzytelniania

Zawartość

  • Ograniczona wersja modelu
  • Brak świadomości GPU
  • Słabsza wewnętrzna obserwowalność
  • Mniej nadaje się do ruchu wschód-zachód

Częste nieporozumienia

Mit

Sieci usług i bramy API robią to samo, a Ty potrzebujesz tylko jednej.

Rzeczywistość

Służą różnym celom. Bramy API zarządzają ruchem północ-południe na krawędzi, podczas gdy siatki usług obsługują ruch wschód-zachód między usługami. Wiele organizacji korzysta z obu jednocześnie, a każda z nich zajmuje się tym, co robi najlepiej.

Mit

Bramy API mogą obsługiwać wersjonowanie modelu ML tak samo dobrze jak siatka usług.

Rzeczywistość

Bramy API mogą wyznaczać trasy na podstawie nagłówków lub ścieżek, ale brakuje im głębokiej integracji z systemami wdrażania, jaką oferują siatki usług. Wycofanie problematycznej wersji modelu jest szybsze i bezpieczniejsze w przypadku siatki usług, ponieważ podziały ruchu można dynamicznie dostosowywać bez konieczności ponownego wdrażania konfiguracji bram.

Mit

Sieci usług powodują zbyt duże opóźnienia w produkcyjnych systemach ML.

Rzeczywistość

Nowoczesne proxy sidecar, takie jak Envoy i Linkerd-proxy, dodają zaledwie 1-3 milisekundy na przeskok w większości testów porównawczych. W przypadku większości obciążeń wnioskowania ML ten narzut jest pomijalny w porównaniu z rzeczywistym czasem wnioskowania modelu, który często wynosi 10-100 milisekund lub więcej.

Mit

Nie potrzebujesz siatki usług, jeśli masz już bramę API.

Rzeczywistość

Brama API chroni obwód, ale nie zabezpiecza ani nie monitoruje ruchu między usługami wewnętrznymi. W architekturze mikrousług z dziesiątkami usług, siatka usług zapewnia bezpieczeństwo i możliwość obserwacji na poziomie zero-trust, czego brama API po prostu nie potrafi.

Mit

Siatki usług są przydatne wyłącznie w środowiskach Kubernetes.

Rzeczywistość

Chociaż siatki usług są najczęściej kojarzone z Kubernetesem, implementacje takie jak Consul Connect i Linkerd mogą działać zarówno na maszynach wirtualnych, jak i na serwerach fizycznych. Wzorzec sidecar działa wszędzie tam, gdzie można wdrożyć serwer proxy wraz z aplikacją.

Często zadawane pytania

Czy sieć usług może całkowicie zastąpić bramkę API?
Teoretycznie tak, ale rzadko jest to praktyczne. Sieci usług mogą obsługiwać ruch brzegowy za pomocą bram wejściowych, ale brakuje im funkcji takich jak portale dla deweloperów, zarządzanie produktami API i rozliczanie subskrypcji, które oferują korporacyjne bramy API. Większość zespołów używa sieci usług do obsługi ruchu wewnętrznego i bramy API do obsługi interfejsów API skierowanych na zewnątrz.
Co jest lepsze do wdrożenia modelu ML: sieć usług czy brama API?
Sieci usług są generalnie lepsze do wdrażania modeli uczenia maszynowego, ponieważ obsługują podział ruchu, wersje kanarkowe i automatyczne wycofywanie na poziomie infrastruktury. Bramy API mogą kierować do różnych wersji modelu, ale wymagają ręcznych zmian w konfiguracji i nie integrują się tak ściśle z procesami wdrażania uczenia maszynowego.
Jakie opóźnienie generuje sieć usług w porównaniu z bramą API?
Sidecary sieci usługowej zazwyczaj dodają 1-3 milisekundy na przeskok, a ponieważ ruch może przechodzić przez wiele sidecarów w łańcuchu mikrousług, łączny narzut może wynosić 5-15 milisekund. Bramy API dodają opóźnienie tylko raz na brzegu, zazwyczaj łącznie 1-5 milisekund. W przypadku aplikacji, w których opóźnienie jest krytyczne, ta różnica ma znaczenie.
Czy dla mojej platformy ML potrzebuję zarówno sieci usług, jak i bramy API?
Jeśli Twoja platforma ML udostępnia interfejsy API klientom zewnętrznym i komunikuje się również z wewnętrznymi mikrousługami, korzystanie z obu jest powszechne i zalecane. Brama API obsługuje uwierzytelnianie i ograniczanie przepustowości dla ruchu zewnętrznego, natomiast siatka usług zarządza wewnętrzną komunikacją między usługami, mTLS i możliwością obserwacji.
Jakie są najpopularniejsze implementacje siatki usług dla obciążeń ML?
Istio, Linkerd i Consul Connect to najpopularniejsze siatki usług. W przypadku obciążeń specyficznych dla uczenia maszynowego (ML), KServe i Seldon Core integrują się z tymi siatkami, zapewniając obsługę modeli z zarządzaniem ruchem. Platforma inferencyjna NVIDIA wykorzystuje również wzorce siatki usług do routingu z uwzględnieniem GPU.
Czy bramy API obsługują ruch gRPC na potrzeby wnioskowania ML?
Tak, większość nowoczesnych bramek API, w tym Kong, bramy oparte na Envoy i AWS API Gateway, obsługuje gRPC. Jednak siatki usług często obsługują gRPC w sposób bardziej naturalny, ponieważ zostały zaprojektowane z myślą o protokole HTTP/2 i strumieniowaniu dwukierunkowym, co jest powszechne w scenariuszach wnioskowania ML.
W jaki sposób siatka usług wspomaga obserwowalność modelu ML?
Siatki usług automatycznie zbierają metryki, takie jak opóźnienie żądania, wskaźniki błędów i natężenie ruchu dla każdej interakcji z usługą. W połączeniu z narzędziami takimi jak Prometheus i Jaeger, można śledzić pojedyncze żądanie wnioskowania w wielu usługach i identyfikować wąskie gardła, co jest nieocenione podczas debugowania potoków uczenia maszynowego.
Czy uruchomienie usługi Service Mesh na dużą skalę jest kosztowne?
Sieci usług generują dodatkowy narzut na procesor i pamięć, ponieważ każdy serwer proxy sidecar zużywa zasoby. W przypadku wdrożenia ze 100 usługami, może być potrzebnych 2-4 dodatkowych rdzeni procesora i 1-2 GB pamięci RAM na węzeł tylko dla sieci. Koszt ten jest jednak często rekompensowany krótszym czasem debugowania i bezpieczniejszym wdrożeniem.
Co jest łatwiejsze do skonfigurowania, sieć usług czy brama API?
Bramy API są zazwyczaj łatwiejsze w konfiguracji, ponieważ stanowią pojedynczy komponent z przejrzystym interfejsem konfiguracyjnym. Sieci usług wymagają instalacji płaszczyzn sterowania, wstrzykiwania sidecarów i konfiguracji wzajemnego protokołu TLS, co zajmuje więcej czasu, ale zapewnia bardziej rozbudowaną funkcjonalność po uruchomieniu.
Czy siatki usług działają z platformami wnioskowania ML bezserwerowego?
Siatki usług są projektowane przede wszystkim z myślą o usługach długoterminowych, dlatego nie integrują się dobrze z funkcjami bezserwerowymi, które często się uruchamiają i wyłączają. W przypadku bezserwerowego wnioskowania ML na platformach takich jak AWS Lambda czy Google Cloud Run, brama API jest zazwyczaj lepszym wyborem do zarządzania ruchem.

Wynik

Jeśli Twoja infrastruktura opiera się na platformach ML opartych na Kubernetesie, z częstymi aktualizacjami modeli i złożoną komunikacją między usługami, siatka usług dostosowana do obciążeń ML zapewni lepszą kontrolę i obserwowalność. W przypadku organizacji udostępniających kilka punktów końcowych ML zewnętrznym klientom lub aplikacjom mobilnym, tradycyjna brama API jest prostsza w zarządzaniu i wystarczająca. Wiele systemów produkcyjnych korzysta z obu rozwiązań – brama API obsługuje ruch zewnętrzny, a siatka usług zarządza wewnętrzną komunikacją usług ML.

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.