{"id":29432,"date":"2021-03-10T17:43:33","date_gmt":"2021-03-10T16:43:33","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/service-mesh-ale-komu-to-potrzebne\/"},"modified":"2024-11-07T15:02:23","modified_gmt":"2024-11-07T14:02:23","slug":"service-mesh-ale-komu-to-potrzebne","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/service-mesh-ale-komu-to-potrzebne\/","title":{"rendered":"Service Mesh, ale komu to potrzebne?"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\"><\/p>\n    <ol>\n                    <li><a href=\"#Mikroserwisy-wsz\u0119dzie-te-mikroserwisy\">1.  Mikroserwisy, wsz\u0119dzie te mikroserwisy&#8230;<\/a><\/li>\n                    <li><a href=\"#Bol\u0105czki-architektury-rozproszonej\">2.  Bol\u0105czki architektury rozproszone<\/a><\/li>\n                    <li><a href=\"#Service-Mesh\">3.  Service Mesh<\/a><\/li>\n                    <li><a href=\"#Gdzie-jest-haczyk-?\">4.  Gdzie jest haczyk?<\/a><\/li>\n                    <li><a href=\"#Kiedy-stosowa\u0107-Service-Mesh-?\">5.  Kiedy stosowa\u0107 Service Mesh?<\/a><\/li>\n                    <li><a href=\"#Service-Mesh-podsumowanie\">6.  Service Mesh &#8211; podsumowanie<\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"Mikroserwisy-wsz\u0119dzie-te-mikroserwisy\">Mikroserwisy, wsz\u0119dzie te mikroserwisy&#8230;<\/h2>\n\n\n\n<p>Tak, znowu b\u0119dzie o&nbsp;<a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/mikroserwisy-nowa-jakosc-w-miedzynarodowych-projektach-it\/\" target=\"_blank\" rel=\"noopener noreferrer\">mikroserwisach<\/a>, bo nie&nbsp;spos\u00f3b nie&nbsp;wspomnie\u0107 o&nbsp;nich w&nbsp;kontek\u015bcie opisywanego rozwi\u0105zania. Zanim jednak przejdziemy do&nbsp;szczeg\u00f3\u0142\u00f3w architektury Service Mesh, musimy zada\u0107 sobie pytanie:<\/p>\n\n\n\n<p><strong>\u201eJak obecnie wygl\u0105da cykl rozwojowy wi\u0119kszo\u015bci wsp\u00f3\u0142czesnych system\u00f3w informatycznych?\u201d.<\/strong><\/p>\n\n\n\n<p>Obecnie wi\u0119kszo\u015b\u0107 du\u017cych i&nbsp;licz\u0105cych si\u0119 graczy na&nbsp;rynku wdra\u017ca zmiany produkcyjne do&nbsp;swoich strategicznych system\u00f3w kilka lub nawet kilkadziesi\u0105t razy dziennie (vide Amazon, Netflix, LinkedIn czy&nbsp;Uber). Widzimy wi\u0119c, \u017ce&nbsp;dynamika zmian ma tutaj kluczowe znaczenie.<\/p>\n\n\n\n<p>Aby nad\u0105\u017cy\u0107 za&nbsp;intensywnie zmieniaj\u0105cymi si\u0119 wymaganiami rynku, a&nbsp;co najwa\u017cniejsze, by&nbsp;ca\u0142y czas by\u0107 o&nbsp;krok przed&nbsp;konkurencj\u0105, systemy musz\u0105 by\u0107 rozwijane w&nbsp;tempie dotychczas niespotykanym. Kilka lat temu wdra\u017canie nowych funkcjonalno\u015bci raz na&nbsp;kwarta\u0142 wystarczy\u0142o, by&nbsp;by\u0107 w&nbsp;czo\u0142\u00f3wce.&nbsp;<strong>Dzi\u015b nawet miesi\u0119czny proces wydawniczy mo\u017ce okaza\u0107 si\u0119 katastrofalny w&nbsp;skutkach finansowych.<\/strong>&nbsp;Podczas gdy&nbsp;my b\u0119dziemy dopiero w&nbsp;po\u0142owie cyklu wydawniczego, konkurencja mo\u017ce by\u0107 ju\u017c daleko przed&nbsp;nami. Dlatego, chc\u0105c zapewni\u0107 sobie konkurencyjno\u015b\u0107, musimy skr\u00f3ci\u0107 proces produkcyjny zmian w&nbsp;oprogramowaniu. Tu z&nbsp;pomoc\u0105 przychodz\u0105 w\u0142a\u015bnie mikrous\u0142ugi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Bol\u0105czki-architektury-rozproszonej\"><strong>Bol\u0105czki architektury rozproszonej<\/strong><\/h2>\n\n\n\n<p>W&nbsp;organizacjach, gdzie oprogramowanie w&nbsp;architekturze rozproszonej jest rozwijane przez&nbsp;wiele zespo\u0142\u00f3w, ka\u017cdy z&nbsp;nich niepotrzebnie powtarza cz\u0119\u015b\u0107 pracy. Przyk\u0142adowo, duplikowane w&nbsp;serwisach s\u0105 takie funkcjonalno\u015bci, jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>konfiguracja timeout\u00f3w dla po\u0142\u0105cze\u0144 TCP,<\/li>\n\n\n\n<li>integracja z&nbsp;innymi us\u0142ugami,<\/li>\n\n\n\n<li>\u015bledzenie i&nbsp;szyfrowanie ruchu,<\/li>\n\n\n\n<li>monitoring, zbieranie metryk,<\/li>\n\n\n\n<li>ponawianie \u017c\u0105da\u0144 TCP w&nbsp;przypadku awarii,<\/li>\n\n\n\n<li>\u2026i wiele innych aspekt\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p>Co prawda, zgodnie z&nbsp;zasad\u0105<em>&nbsp;<\/em><a href=\"https:\/\/wikiwand.com\/en\/Don%27t_repeat_yourself\" target=\"_blank\" rel=\"noopener noreferrer\"><em>DRY<\/em><\/a><em>,<\/em>&nbsp;wi\u0119kszo\u015b\u0107 funkcjonalno\u015bci mo\u017cna zamkn\u0105\u0107 w&nbsp;ramach zewn\u0119trznych bibliotek i&nbsp;utrzymywa\u0107 w&nbsp;jednym miejscu jako zale\u017cno\u015bci. Jednak rozwi\u0105zanie takie, cz\u0119sto stosowane w&nbsp;pocz\u0105tkowych pr\u00f3bach zmierzenia si\u0119 z&nbsp;<strong>problemem duplikacji kodu,&nbsp;<\/strong>nie&nbsp;zawsze prowadzi do&nbsp;oczekiwanych rezultat\u00f3w. Dlaczego?<\/p>\n\n\n\n<p>Wyzwaniem pozostaje kwestia aktualizowania zale\u017cno\u015bci w&nbsp;poszczeg\u00f3lnych us\u0142ugach, a&nbsp;taka strategia nadal wymusza dodatkowe cykle wydawnicze (deployment) oprogramowania ze&nbsp;zaktualizowanymi zale\u017cno\u015bciami.<\/p>\n\n\n\n<p>A&nbsp;co w&nbsp;przypadku, gdy&nbsp;zechcemy zmieni\u0107 zachowanie aplikacji, doda\u0107 now\u0105 funkcjonalno\u015b\u0107 lub w&nbsp;bie\u017c\u0105cej wersji zale\u017cno\u015bci wykryty zostanie b\u0142\u0105d? C\u00f3\u017c, pozostaje nam wydanie nowej wersji zale\u017cno\u015bci, a&nbsp;wraz z&nbsp;ni\u0105 aktualizacja wszystkich us\u0142ug uruchomionych na&nbsp;produkcji. Widzimy wi\u0119c, \u017ce&nbsp;powy\u017csze podej\u015bcie nie&nbsp;rozwi\u0105zuje problemu w&nbsp;pe\u0142ni i&nbsp;jest dalekie od&nbsp;idea\u0142u. Wspomniana wy\u017cej regu\u0142a&nbsp;<a href=\"https:\/\/wikiwand.com\/en\/Don%27t_repeat_yourself\" target=\"_blank\" rel=\"noopener noreferrer\"><em>DRY<\/em><\/a>&nbsp;jest tylko&nbsp;po&nbsp;cz\u0119\u015bci spe\u0142niona. Mimo \u017ce&nbsp;wyeliminowali\u015bmy duplikacj\u0119 kodu poprzez wydzielenie wsp\u00f3lnego kodu i&nbsp;zamkni\u0119cie go w&nbsp;oddzielnej bibliotece, nadal ponosimy koszt aktualizacji oprogramowania. Dodatkowo, je\u015bli u\u017cywamy wielu j\u0119zyk\u00f3w programowania do&nbsp;implementacji r\u00f3\u017cnych us\u0142ug (tzw. polyglot microservices) i cloud native system\u00f3w orkiestracji (np. kubernetes) musimy powiela\u0107 implementacj\u0119 bibliotek. Nie&nbsp;t\u0119dy droga.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Service-Mesh\">Service Mesh<\/h2>\n\n\n\n<p>A gdyby tak oddelegowa\u0107 powtarzaj\u0105ce si\u0119 w ka\u017cdej us\u0142udze funkcjonalno\u015bci na poziom warstwy infrastrukturalnej, zyskuj\u0105c przy tym dodatkowe, nieosi\u0105galne wcze\u015bniej mo\u017cliwo\u015bci? Tym sposobem dotarli\u015bmy do sedna artyku\u0142u \u2013 tu z pomoc\u0105 przychodzi Service Mesh.<\/p>\n\n\n\n<p>Przeczytaj tak\u017ce: <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/mikroserwisy-service-mesh-z-istio\"><strong>Istio Service Mesh<\/strong><\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Czym jest Service Mesh<\/h3>\n\n\n\n<p>W&nbsp;architekturze Service Mesh do&nbsp;warstwy infrastrukturalnej dok\u0142adamy dodatkowe klocki. Jednym z&nbsp;takich klock\u00f3w jest tzw.&nbsp;<a href=\"https:\/\/docs.microsoft.com\/pl-pl\/azure\/architecture\/patterns\/sidecar\" target=\"_blank\" rel=\"noopener noreferrer\"><em>sidecar proxy<\/em><\/a>. Implementowany zazwyczaj w&nbsp;postaci lekkiego TCP proxy i, co wa\u017cne, jako oddzielny proces wdra\u017cany jest wraz z&nbsp;ka\u017cd\u0105 wymagan\u0105 dla biznesu mikrous\u0142ug\u0105. Od&nbsp;tego momentu us\u0142ugi nie&nbsp;komunikuj\u0105 si\u0119 ju\u017c bezpo\u015brednio, ale&nbsp;ruch sieciowy wychodz\u0105cy z&nbsp;danej us\u0142ugi kierowany jest przez&nbsp;infrastruktur\u0119 poprzez przyleg\u0142e proxy do&nbsp;proxy docelowej us\u0142ugi i&nbsp;dopiero docelowe proxy kieruje ruch przychodz\u0105cy do&nbsp;docelowej us\u0142ugi, tak&nbsp;jak na&nbsp;poni\u017cszym rysunku:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_10.03_graphic1.png\" alt=\"Service Mesh sidecar proxy graph\" class=\"wp-image-33313\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Warto zaznaczy\u0107, \u017ce&nbsp;ca\u0142y proces jest ca\u0142kowicie prze\u017aroczysty z&nbsp;punktu widzenia zespo\u0142u rozwijaj\u0105cego dan\u0105 us\u0142ug\u0119. Us\u0142uga te\u017c nie&nbsp;musi \u201ewiedzie\u0107\u201d, \u017ce&nbsp;nie&nbsp;komunikuje si\u0119 bezpo\u015brednio z&nbsp;us\u0142ug\u0105 zale\u017cn\u0105, ale&nbsp;z&nbsp;odpowiadaj\u0105cym jej&nbsp;<em>sidecar proxy<\/em>. Protok\u00f3\u0142 komunikacji nadal pozostaje ten sam z&nbsp;punktu widzenia us\u0142ug. W&nbsp;takiej konfiguracji wszystkie wspomniane wcze\u015bniej aspekty takie jak aplikowanie timeout\u00f3w dla po\u0142\u0105cze\u0144 TCP, autentykacja z&nbsp;innymi us\u0142ugami, \u015bledzenie i&nbsp;szyfrowanie ruchu, monitoring, zbieranie metryk, ponawianie \u017c\u0105da\u0144 TCP w&nbsp;przypadku awarii oraz&nbsp;inne oddelegowane s\u0105 do&nbsp;proxy. Dodatkowo zmiana zachowania kt\u00f3rej\u015b z&nbsp;tych funkcjonalno\u015bci (np.&nbsp;zmiana timeout\u00f3w) nie&nbsp;implikuje wydania nowej wersji us\u0142ugi, a&nbsp;jedynie wprowadzenie zmian do&nbsp;konfiguracji danego proxy. Poniewa\u017c proxy zaprojektowane jest w&nbsp;ten spos\u00f3b, \u017ce dzi\u0119ki service discovery&nbsp;jego rekonfiguracja nie&nbsp;wymaga restartu, eliminujemy ca\u0142kowicie okres braku dost\u0119pu do&nbsp;us\u0142ugi (downtime). To&nbsp;ju\u017c jest du\u017cy zysk.<\/p>\n\n\n\n<p><strong>Widzimy wyra\u017anie, \u017ce architektura Service Mesh pozwala skr\u00f3ci\u0107 proces wydawniczy.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Service Mesh od \u015brodka<\/h3>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_10.03_graphic2.png\" alt=\"Service mesh data plane i control plane na przyk\u0142adzie klastra kubernetes\" class=\"wp-image-33314\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Architektur\u0119 Service Mesh mo\u017cna rozpatrywa\u0107 na dw\u00f3ch p\u0142aszczyznach.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Data plane<\/li>\n<\/ol>\n\n\n\n<p>O jednej z nich powiedzieli\u015bmy sobie wcze\u015bniej. Jest to tzw. <a href=\"https:\/\/www.wikiwand.com\/en\/Data_plane\" target=\"_blank\" rel=\"noopener\"><em>data plane<\/em><\/a> \u2013 p\u0142aszczyzna danych, odpowiedzialna za:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>kierowanie ruchem i jego filtrowanie,<\/li>\n\n\n\n<li>routing,<\/li>\n\n\n\n<li>komunikacj\u0119 z us\u0142ugami,<\/li>\n\n\n\n<li>Service Discovery,<\/li>\n\n\n\n<li>szyfrowanie <a href=\"https:\/\/www.wikiwand.com\/en\/Mutual_authentication#\/mTLS\" target=\"_blank\" rel=\"noopener\"><em>mTLS<\/em><\/a>,<\/li>\n\n\n\n<li>zbieranie metryk,<\/li>\n\n\n\n<li>wzbogacanie \u017c\u0105da\u0144 HTTP o dodatkowe nag\u0142\u00f3wki wymagane w autentykacji albo umo\u017cliwiaj\u0105ce rozproszone \u015bledzenie.<\/li>\n<\/ul>\n\n\n\n<p>W sk\u0142ad warstwy data plane wchodz\u0105 wszystkie instancje wspomnianych <em>sidecar proxy<\/em> w ramach danego klastra infrastruktury. Wed\u0142ug danych za pierwszy kwarta\u0142 2021 r. najpopularniejsz\u0105 implementacj\u0105 tego typu proxy na rynku jest obecnie bardzo dynamicznie rozwijaj\u0105cy si\u0119 <a href=\"https:\/\/www.envoyproxy.io\/\" target=\"_blank\" rel=\"noopener\">Envoy<\/a>.<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Control plane<\/li>\n<\/ol>\n\n\n\n<p>Drug\u0105 p\u0142aszczyzn\u0105, na kt\u00f3rej nale\u017cy rozpatrywa\u0107 architektur\u0119 Service Mesh<em>,<\/em> jest <a href=\"https:\/\/www.wikiwand.com\/en\/Control_plane\" target=\"_blank\" rel=\"noopener\"><em>control plane<\/em><\/a>. Jest to pojedynczy komponent odpowiedzialny za konfiguracj\u0119 i kontrol\u0119 warstwy <em>data plane<\/em>. Komponent potrafi komunikowa\u0107 si\u0119 z ka\u017cdym <em>sidecar proxy<\/em> w obr\u0119bie infrastruktury. Dzi\u0119ki temu jest w stanie rozsy\u0142a\u0107 zaktualizowan\u0105 konfiguracj\u0119 do ka\u017cdego z proxy, a w drug\u0105 stron\u0119 \u2013 zbiera\u0107 i gromadzi\u0107 metryki czy monitorowa\u0107 stan us\u0142ug. Innymi s\u0142owy, posiada wiedz\u0119 o tym, co si\u0119 dzieje wewn\u0105trz klastra z topologi\u0105 sieciow\u0105 na poziomie wdro\u017conych mikrous\u0142ug w\u0142\u0105cznie. Posiadaj\u0105c takie informacje w jednym miejscu, zyskujemy nowe mo\u017cliwo\u015bci:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>mo\u017cemy z \u0142atwo\u015bci\u0105 raportowa\u0107 stan klastra w postaci przyjaznych u\u017cytkownikowi wizualizacji, takich jak np. graf po\u0142\u0105cze\u0144 mi\u0119dzy poszczeg\u00f3lnymi us\u0142ugami,<\/li>\n\n\n\n<li>schodz\u0105c ni\u017cej, na poziom metryk, mo\u017cemy zwizualizowa\u0107 us\u0142ugi, kt\u00f3re maj\u0105 problem z obs\u0142ug\u0105 \u017c\u0105da\u0144 w zadanym czasie lub np. zagregowa\u0107 po kodach statusu HTTP list\u0119 tych odpowiadaj\u0105cych najwi\u0119ksz\u0105 ilo\u015bci\u0105 b\u0142\u0119d\u00f3w.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Jakie mo\u017cliwo\u015bci daje Service Mesh<\/h3>\n\n\n\n<p>U\u017cytkownik mo\u017ce budowa\u0107 w\u0142asne widoki i&nbsp;wizualizowa\u0107 zbierane dane w&nbsp;zale\u017cno\u015bci od&nbsp;potrzeb. Z&nbsp;drugiej strony mo\u017cemy za&nbsp;pomoc\u0105 rozbudowanych regu\u0142 poinstruowa\u0107&nbsp;<em>control plane,<\/em>&nbsp;aby \u017c\u0105dan\u0105 cz\u0119\u015b\u0107 ruchu przekierowa\u0142 do&nbsp;us\u0142ug w&nbsp;konkretnej wersji. W&nbsp;ten spos\u00f3b zyskujemy mo\u017cliwo\u015b\u0107 testowania nowych funkcjonalno\u015bci na&nbsp;w\u0105skiej, jasno zdefiniowanej grupie u\u017cytkownik\u00f3w (tzw.&nbsp;<em>canary deployment<\/em>).<\/p>\n\n\n\n<p>Je\u015bli spojrzymy na&nbsp;opisane p\u0142aszczyzny Service Mesh, to&nbsp;mo\u017cemy zauwa\u017cy\u0107, i\u017c&nbsp;<em>data plane<\/em>&nbsp;sk\u0142ada si\u0119 z&nbsp;bezstanowych proxy, kt\u00f3re s\u0105 zarz\u0105dzane przez&nbsp;stanowy komponent&nbsp;<em>control plane<\/em>. Takie rozwi\u0105zanie upraszcza utrzymanie klastra, poniewa\u017c nie&nbsp;musimy martwi\u0107 si\u0119 o&nbsp;synchronizacj\u0119 i&nbsp;zarz\u0105dzanie rozproszonym stanem, co z&nbsp;definicji jest trudnym, a&nbsp;przy pewnych ograniczeniach wymuszonych przez&nbsp;wymagania na\u0142o\u017cone na&nbsp;infrastruktur\u0119, niemo\u017cliwym do&nbsp;rozwi\u0105zania problemem. W&nbsp;opisywanym podej\u015bciu ka\u017cda potencjalna awaria na&nbsp;poziomie us\u0142ugi i&nbsp;proxy mo\u017ce by\u0107 rozwi\u0105zana przez&nbsp;<em>control plane<\/em>&nbsp;poprzez uruchomienie ich nowych instancji. Bezstanowe&nbsp;<em>sidecar proxy<\/em>&nbsp;zaraz po&nbsp;uruchomieniu pobierze wymagan\u0105 konfiguracj\u0119 z&nbsp;centralnego&nbsp;<em>control plane<\/em>. Proste i&nbsp;efektywne rozwi\u0105zanie.<\/p>\n\n\n\n<p><strong>Przeczytaj artyku\u0142:<\/strong> <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/mikroserwisy-nowa-jakosc-w-miedzynarodowych-projektach-it\/\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/mikroserwisy-nowa-jakosc-w-miedzynarodowych-projektach-it\/\">Mikroserwisy \u2013 czy to jeszcze rewolucja i nowa jako\u015b\u0107 czy ju\u017c standard w projektach?<\/a><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Gdzie-jest-haczyk-?\">Gdzie jest haczyk?<\/h2>\n\n\n\n<p><strong>Koszty<\/strong> \u2013 oczywi\u015bcie nic nie dostajemy za darmo. Utrzymanie dodatkowych komponent\u00f3w architektury to sta\u0142y koszt, na kt\u00f3ry nie ka\u017cda organizacja mo\u017ce sobie pozwoli\u0107. Jak zawsze pomocny jest tutaj bilans zysk\u00f3w z posiadania dodatkowej warstwy w stosunku do koszt\u00f3w jej utrzymania.<\/p>\n\n\n\n<p><strong>Kompetencje<\/strong> \u2013 wprowadzenie dodatkowych ruchomych cz\u0119\u015bci do infrastruktury zwi\u0119ksza tak\u017ce potencjalne ryzyko awarii. Niepoprawnie wdro\u017cony i skonfigurowany Service Mesh mo\u017ce przynie\u015b\u0107 wi\u0119cej szkody ni\u017c po\u017cytku, dlatego organizacja musi posiada\u0107 in\u017cynier\u00f3w o odpowiednich kompetencjach umo\u017cliwiaj\u0105cych utrzymanie Service Mesha.<\/p>\n\n\n\n<p><strong>Wi\u0119ksze obci\u0105\u017cenie<\/strong> \u2013 dodatkowa warstwa komunikacji mi\u0119dzy us\u0142ugami w klastrze zwi\u0119ksza jego obci\u0105\u017cenie. Ma to kluczowe znaczenie, zw\u0142aszcza gdy klaster uruchomiony jest w chmurze, bo implikuje dodatkowe koszty i jednocze\u015bnie powoduje wyd\u0142u\u017cenie czasu komunikacji mi\u0119dzy us\u0142ugami. Spowodowane jest to tym, \u017ce us\u0142ugi nie komunikuj\u0105 si\u0119 ju\u017c bezpo\u015brednio, ale przez dodatkowe proxy. Co prawda w wi\u0119kszo\u015bci przypadk\u00f3w narzut ten jest mo\u017cliwy do pomini\u0119cia i nie ma wp\u0142ywu na og\u00f3ln\u0105 wydajno\u015b\u0107 systemu, niemniej jednak musimy by\u0107 \u015bwiadomi takiego ryzyka.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Kiedy-stosowa\u0107-Service-Mesh-?\">Kiedy stosowa\u0107 Service Mesh?<\/h2>\n\n\n\n<p>Istniej\u0105 obszary biznesowe, w kt\u00f3rych wprowadzenie architektury Service Mesh w og\u00f3le nie wchodzi w gr\u0119, poniewa\u017c dodatkowy narzut czasu komunikacji jest krytyczn\u0105 metryk\u0105, kt\u00f3rej nie mo\u017cna przekroczy\u0107 (np. <a href=\"https:\/\/www.wikiwand.com\/en\/High-frequency_trading\" target=\"_blank\" rel=\"noopener\"><em>HFT<\/em><\/a>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Service-Mesh-podsumowanie\">Service Mesh \u2013 podsumowanie<\/h2>\n\n\n\n<p>W&nbsp;odpowiedzi na&nbsp;dynamiczny rozw\u00f3j system\u00f3w i&nbsp;potrzeb\u0119 skr\u00f3cenia procesu wydawniczego coraz wi\u0119cej firm stosuje architektur\u0119 mikroserwisow\u0105. Nie&nbsp;jest to&nbsp;rozwi\u0105zanie idealne, poniewa\u017c musimy liczy\u0107 si\u0119 z&nbsp;dodatkowymi cyklami wydawniczymi, kosztem aktualizacji oprogramowania i&nbsp;powielaniem implementacji. Dzi\u0119ki architekturze Service Mesh unikamy wydawania nowej wersji us\u0142ugi i&nbsp;eliminujemy czas jej niedost\u0119pno\u015bci, a&nbsp;ca\u0142y proces jest przejrzysty. Warto mie\u0107 jednak na&nbsp;uwadze, \u017ce&nbsp;w&nbsp;pewnych obszarach biznesowych to&nbsp;rozwi\u0105zanie nie&nbsp;wchodzi w&nbsp;gr\u0119. Je\u015bli decydujemy si\u0119 na&nbsp;wdro\u017cenie go w&nbsp;\u015brednich i&nbsp;du\u017cych systemach rozproszonych, to&nbsp;warto zapozna\u0107 si\u0119 z&nbsp;dost\u0119pnymi na&nbsp;rynku rozwi\u0105zaniami.<\/p>\n\n\n\n<p>Obecnie istnieje wiele gotowych rozwi\u0105za\u0144 i&nbsp;implementacji architektury Service Mesh zar\u00f3wno w&nbsp;postaci dostosowanych do&nbsp;wdro\u017cenia komponent\u00f3w (r\u00f3wnie\u017c open source), jak i&nbsp;gotowych bezpo\u015brednio do&nbsp;u\u017cycia jako SaaS od&nbsp;dostawc\u00f3w chmur (AWS czy&nbsp;GKE). W&nbsp;drugiej cz\u0119\u015bci artyku\u0142u po\u015bwi\u0119conego Service Mesh postaram si\u0119 przybli\u017cy\u0107 i&nbsp;por\u00f3wna\u0107 konkretne rozwi\u0105zania i&nbsp;produkty dost\u0119pne na&nbsp;rynku.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na prze\u0142omie ostatnich kilku lat bran\u017ca IT przesz\u0142a ogromn\u0105 metamorfoz\u0119. Chmura to ju\u017c nie tylko fanaberia czy chwytliwy buzzword, ale dla wi\u0119kszo\u015bci biznes\u00f3w prawdziwe \u201eby\u0107 albo nie by\u0107\u201d w dynamicznie zmieniaj\u0105cej si\u0119 rzeczywisto\u015bci. 2020 rok jeszcze dobitniej podkre\u015bli\u0142 jej znaczenie. Handel i inne us\u0142ugi mog\u0105ce funkcjonowa\u0107 w kana\u0142ach elektronicznych uros\u0142y w skali nieprzewidywanej w naj\u015bmielszych planach rozwojowych firm. Maj\u0105c na uwadze powy\u017cszy kontekst i w konsekwencji konieczno\u015b\u0107 rozbudowy zaplecza IT tak, aby sprosta\u0142o wymaganiom rozwojowym biznes\u00f3w prowadzonych online, chcia\u0142bym opisa\u0107 rozwi\u0105zanie, jakim jest architektura Service Mesh.<\/p>\n","protected":false},"author":170,"featured_media":29440,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":521,"footnotes":""},"categories":[1,582],"tags":[],"offering":[522],"class_list":["post-29432","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","offering-tech-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/170"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=29432"}],"version-history":[{"count":3,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29432\/revisions"}],"predecessor-version":[{"id":33921,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29432\/revisions\/33921"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/29440"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=29432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=29432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=29432"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=29432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}