18 lis 202124 min czytania
Miłosz Kaczorowski
Współzałożyciel Ideamotive. Doradca technologiczny i konsultant ds. oprogramowania.
Tradycyjna monolityczna architektura aplikacji łączyła całą funkcjonalność w jednej usłudze. Bardzo utrudniało to wdrażanie nowych funkcji, bo wymagało długiego przestoju, co ograniczało możliwość aktualizowania aplikacji. Skalowanie takich aplikacji jest drogie, bo trzeba skalować całą aplikację, nawet jeśli duży ruch trafia tylko na jedną usługę.
Wejście chmury zrewolucjonizowało sposób, w jaki projektujemy, planujemy architekturę i wdrażamy aplikacje. Pomogło w szybszych wdrożeniach, lepszej dostępności, skalowaniu na żądanie i krótszym czasie wejścia na rynek.
Tak właśnie pojawia się aplikacja oparta na mikroserwisach - architektura, której celem jest tworzenie małych, odizolowanych usług wdrażanych i skalowanych niezależnie od siebie, co zwiększa elastyczność.
Dowiedz się o tym więcej poniżej!
Mikroserwisy - znane też jako architektura mikroserwisowa - to styl architektoniczny, w którym aplikacja jest zbiorem usług. Łatwych w utrzymaniu i testowaniu. Luźno powiązanych. Zdolnych do samodzielnego wdrożenia. Zorganizowanych wokół możliwości biznesowych.
Idea mikroserwisów polega na skupieniu się na tworzeniu osobnych usług, które robią jedną rzecz dobrze.
Mówiąc prosto, mikroserwisy to podejście do rozwiązywania dużego lub złożonego problemu biznesowego przy pomocy zestawu mniejszych i prostszych usług działających razem; mikroserwis uruchamia własny, unikalny proces, który przyczynia się do nadrzędnego celu biznesowego.
Ponownie: architektura mikroserwisowa to podejście do budowania aplikacji serwerowej jako zbioru małych usług. Każda usługa powinna działać we własnym procesie i komunikować się z innymi przy użyciu protokołów takich jak HTTP/HTTPS, WebSockets itd. Każdy element takiego szkieletu (czyli usługa) powinien być zaprojektowany jako samodzielna jednostka, którą da się wdrożyć niezależnie. Każdy mikroserwis musi mieć własny model danych domeny i logikę domenową, a może opierać się na różnych technologiach przechowywania danych. Co więcej, można go napisać w różnych językach programowania.
Kluczem do tworzenia mikroserwisów jest budowanie luźno powiązanych usług, dzięki czemu każdą usługę w aplikacji można niezależnie wdrażać, skalować i rozwijać. Jeśli mówimy o rozmiarze mikroserwisów, warto starać się, by były jak najmniejsze, ale z minimalną liczbą bezpośrednich zależności od innych mikroserwisów. Daje to długofalową elastyczność, skalowalność i lepsze utrzymanie w przyszłości.
Budowa drobnoziarnistej architektury opartej na mikroserwisach umożliwia ciągłą integrację (CI) i ciągłe dostarczanie (CD). Ułatwia to dokładanie nowych funkcji do działających już aplikacji. Możesz całkowicie zmienić jeden z mikroserwisów, by wdrożyć nową funkcjonalność, a nawet go zepsuć, nie uszkadzając całego zbudowanego systemu.
Wreszcie do każdego mikroserwisu możesz dodać testy jednostkowe, co ułatwi wykrycie problemów lub błędów w systemie, zanim trafią na produkcję. Nie trzeba wtedy sprawdzać całej aplikacji - wystarczy zdebugować mały fragment kodu, czyli bieżący mikroserwis.

Udane zbudowanie w pełni funkcjonalnej aplikacji mikroserwisowej i wdrożenie jej na konkretnej platformie do zarządzania mikroserwisami oznacza korzyści takie jak opłacalność, skalowalność i dostępność 24/7. Utrzymanie mikroserwisów w dobrej kondycji można osiągnąć, przenosząc instancje na sprawne maszyny wirtualne lub serwery platformy. Gdy więc oprogramowanie lub sprzęt, na którym działają, zawiedzie albo wymaga restartu w celu aktualizacji, system automatycznie przenosi je w bezpieczne miejsce, gdzie mogą dalej działać.
Nawiasem mówiąc, mikroserwisy można w ten sam sposób skalować, po prostu kopiując usługę na nową maszynę wirtualną i uruchamiając kolejną instancję.

Architektura mikroserwisowa pozwala podzielić możliwości systemu na różne domeny. Każda domena skupia się na jednej rzeczy i związanej z nią logice, może łatwo i niezależnie przejść na kolejną wersję oraz niezależnie się skalować, gdy zajdzie taka potrzeba.
Ponieważ każdą usługę budujemy, testujemy, wdrażamy i śledzimy osobno, a liczba jednostek wdrożeniowych rośnie w porównaniu z architekturą monolityczną, musimy trzymać się kultury automatyzacji, tworząc ją pod ciągłą integrację i ciągłe dostarczanie.
Mikroserwisy powinny być zaprojektowane tak, by nie ujawniać wewnętrznych szczegółów: ani implementacji technicznej, ani rządzących nią reguł biznesowych. Ograniczy to wzajemne powiązania i pomoże wprowadzać zmiany oraz usprawnienia bez wpływu na całą architekturę.
W tradycyjnych wdrożeniach monolitycznych oprogramowanie projektuje się pod jedną bazę danych z różnymi tabelami, a mikroserwisy projektuje się tak, by zarządzały własną bazą.
Aby w pełni skorzystać z tej architektury, mikroserwisy muszą być wdrażane niezależnie. Jeśli nie potrafisz tego zrobić, sprawdź aplikację pod kątem powiązań i je usuń.
Skutki awarii są w architekturze mikroserwisowej mniejsze niż w monolicie, bo dotkną tylko konkretnych usług i tych z nimi powiązanych, podczas gdy pozostałe mogą działać dalej. Powiązane usługi powinny obsługiwać scenariusze takie jak brak odpowiedzi albo spowolnienie usługi, od której zależą.
Usługi powinny zbierać jak najwięcej informacji, by dało się analizować, co dzieje się w każdej z nich - na przykład logi zdarzeń i statystyki.

Tradycyjne stosy technologiczne nie nadają się do wdrażania architektury mikroserwisowej. Każdy, kto interesuje się mikroserwisami, powie Ci, że „mikroserwisy są DZIŚ możliwe dzięki pojawieniu się kontenerów Docker”.
Zgodzilibyśmy się z tym stwierdzeniem, ale dodalibyśmy, że trzeba też oddać sprawiedliwość technologiom PaaS. Ostatnio widzieliśmy kilka dużych przedsiębiorstw inwestujących w rozwiązania PaaS z zamiarem przejścia na architekturę mikroserwisową. Do udanego wdrożenia mikroserwisów konieczne jest danie sprawczości programiście (zespołowi) mikroserwisów.
Zarówno technologia kontenerów Docker, jak i oferty PaaS dały zespołom technologicznym swobodę używania tego, co ma sens dla ich aplikacji - i to bez przechodzenia przez przestarzałe, biurokratyczne procesy dostarczania IT.
Przez ostatnią dekadę przedsiębiorstwa zainwestowały miliony w oprogramowanie budowane w oparciu o programy Service Oriented Architecture (SOA). W tej długiej dekadzie wdrażania SOA firmy wypracowały kompetencje, procesy i platformy (takie jak ESB). Wiele z nich doszło do punktu, w którym straciły kontrolę nad usługami na tych platformach SOA (ESB) - i choć umiejętności tworzenia i zarządzania usługami są, to elastyczność oczekiwana przez interesariuszy (klientów, biznes) jest nieosiągalna przez złożoną i monolityczną naturę usług budowanych na tych platformach.
Innymi słowy, przedsiębiorstwa dotarły do punktu malejących zwrotów z SOA. Mikroserwisy postrzega się jako architekturę usług nowej generacji, która usuwa bolączki obecnego stanu SOA.
Oczekuje się, że wdrożenie wzorca mikroserwisów (i technologii) na bazie SOA pozwoli zespołom deweloperskim zrealizować cyfrowe ambicje przedsiębiorstwa.
Sukces Netflixa i Amazona w mikroserwisach to jeden z najczęściej omawianych przykładów tego, jak realne firmy korzystają z tego nowego wzorca architektonicznego. Firmy te nie tylko przyjęły praktyki mikroserwisowe, ale też podzieliły się wiedzą, a nawet narzędziami, ze społecznością technologiczną. Ich praktyczne pomysły zwiększyły wiarygodność tej społeczności. Do tego narzędzia stworzone przez te firmy pokazały luki, które trzeba wypełnić narzędziami automatyzacji.
DevOps jest niezbędny do udanego wdrożenia mikroserwisów. Niemal każdy klient, z którym pracujemy, ma program DevOps. Firmy mają dziś do dyspozycji wiele narzędzi i technologii do budowy potoków ciągłej integracji, testów i dostarczania. Ta dojrzałość DevOps buduje w zespołach IT większą pewność, że poradzą sobie z budową i zarządzaniem aplikacjami opartymi na mikroserwisach.
Częstym motywem współczesnych konferencji są mikroserwisy oraz to, jak technologie oferowane przez danego dostawcę (sponsora) wspierają ich tworzenie i zarządzanie nimi.
Jedną z obserwacji z tych konferencji było to, że każda sesja z mikroserwisami w tytule była wyprzedana. Blogi dostawców technologii pełne są dziś porad, jak budować mikroserwisy i zarządzać nimi przy użyciu ich produktów.
Oczywiście cały ten marketing wielu dostawców zdecydowanie skłania decydentów IT do rozważenia przejścia na mikroserwisy.
Na koniec: raport O'Reilly z 2020 roku o wdrożeniach mikroserwisów pokazuje, że 92% organizacji odnosi z nimi sukces.
Jak pokazał poprzedni rozdział, przy inwestycji w architekturę mikroserwisową w .NET trzeba wziąć pod uwagę wiele rzeczy. Inna kwestia, tak podstawowa, że łatwo ją przeoczyć, to nie to, czy potrafisz stworzyć mikroserwis, ale jak powinieneś to robić z perspektywy biznesowej.
Ponieważ ta decyzja mocno dotyczy wszystkich interesariuszy w firmie, przygotowaliśmy ten rozdział dla product ownerów i PM-ów, którzy nie tylko prowadzą zespół inżynierski ku swojej wizji technicznej, ale też kontaktują się z resztą biznesu. To wielowątkowe pytanie, więc zanurzmy się głębiej.
Przejdźmy teraz do rekrutacji. Jak wiesz, zatrudnianie bardzo doświadczonych programistów .NET jest a) trudne; b) długotrwałe.
Co więcej, każdy mikroserwis sam w sobie działa jak niezależna aplikacja, więc zespoły też muszą tak działać.
Twórz osobne zespoły do pracy z różnymi mikroserwisami. Wymaga to też, by miały niezbędne umiejętności i narzędzia do samodzielnego rozwijania, wdrażania i zarządzania daną usługą. Zespoły muszą być wszechstronne i wystarczająco duże, by działać autonomicznie, nie tracąc czasu na komunikację.
Choć konkretny stos technologiczny może się różnić w zależności od istniejącej infrastruktury, dobry programista mikroserwisów w .NET musi mieć określone kwalifikacje. Oto przykład takich kwalifikacji od poziomu mid do seniora:
Szukając programistów o konkretnych umiejętnościach technicznych, pamiętaj też, że muszą mieć określone kompetencje miękkie, by być skutecznymi w pracy z mikroserwisami.
Kolejne pytanie brzmi: ilu programistów zatrudnić? Sprawdźmy!
Zrozumienie tego, co dzieje się przy przejściu z monolitu na mikroserwisy, jest kluczowe dla zrozumienia, jak działają procesy i jak buduje się zespoły.
Zaczynasz więc od istniejącej, zwykle ogromnej aplikacji legacy.
Zamiast dużej aplikacji programiści pracują więc z usługą o wąskiej funkcji i ściśle określonym miejscu w procesie biznesowym.
Jak te zmiany wpływają na obciążenie programistów mikroserwisów i które role są kluczowe dla ich skutecznego tworzenia? Co powinien wiedzieć programista mikroserwisów?
Typowy skład zespołu przypomina ten z tradycyjnego wytwarzania oprogramowania. Przy mikroserwisach role różnią się jednak nieco.
Przy tworzeniu mikroserwisów architekt oprogramowania (SA) odpowiada za budowę aplikacji mikroserwisowej. Musi nie tylko zaplanować podział i dekompozycję monolitu, ale też rozumieć potrzeby konkretnego obszaru biznesowego i odwzorować mikroserwisy na procesy w firmie. Architekt odpowiada również za wybór odpowiedniej metodyki i technologii dla magazynu zdarzeń, rejestru usług, wykrywania usług, kontenerów usług i ich wdrożenia. Wybiera też najbardziej odpowiednie metody integracji, takie jak bramy API dla rejestru usług, ograniczanie ruchu, orkiestracja itd.
Architekt pełni też rolę pojedynczego źródła prawdy (SPOT) w kwestiach pytań, wymagań i logiki biznesowej, a także ogólnej mapy drogowej.
Ten zespół zwykle składa się z product ownera, product managerów, projektantów i analityków biznesowych, których zadaniem jest przełożenie potrzeb biznesowych na wymagania techniczne. Odpowiadają też za informowanie zespołów deweloperskich o potrzebach biznesu i zarządzanie budżetami zgodnie z bieżącymi potrzebami.
Aby odnieść sukces, każdy zespół musi odpowiadać za całościowe wytworzenie jednego lub dwóch mikroserwisów. Zespół powinien być mały (5-9 osób), autonomiczny i luźno powiązany. Im mniejsze usługi, tym lepsze możliwości (w tym utrzymywalność, testowalność i łatwość wdrażania). Jeśli pracujesz w Agile, w zespole znajdą się Scrum Master, programiści i inżynierowie QA.
W małym projekcie może wystarczyć jeden specjalista DevOps. Jeśli jednak mówimy o średnich i dużych projektach w rodzaju ERP, możesz potrzebować zespołu ekspertów od infrastruktury. Dbają oni nie tylko o CI/CD, ale też zarządzają takimi sprawami jak koszt środowiska.
W zależności od typu i wielkości projektów oraz obciążenia systemu możesz potrzebować usług administratora baz danych.
Przechodząc z monolitu, ustawiasz więc swoich programistów pod mikroserwisy, z którymi będą pracować.

Głównym elementem określania kosztu budowy aplikacji mikroserwisowych jest ustalenie zakresu modernizacji. Zawsze najlepiej zaczynać od małych rzeczy, bo to tanie i pozwala sprawdzić, czy aktualizacja działa. Mały start da Ci jasny obraz kosztu jednej fazy prac. Istnieje wiele narzędzi, które skutecznie utrzymują koszty w ryzach i pomagają zmieścić się w budżecie.
Gdy Twój zespół stworzy mikroserwis, staje się on Twoim dzieckiem. To Twoja odpowiedzialność, by o niego dbać i utrzymywać go w dobrym stanie. Jak przy każdym oprogramowaniu, trzeba usuwać pojawiające się błędy i problemy.
Poza utrzymaniem systemu Twój zespół odpowiada też za wprowadzanie potrzebnych usprawnień. Jeśli Twoja usługa pełni funkcję marketingową, zespół marketingu będzie chciał dodać do niej konkretne funkcje, by móc realizować swoje zadania.
Wypełnienie tych obowiązków zależy jednak od dostępnych mocy przerobowych. Utrzymanie oprogramowania to 75 procent całkowitego kosztu posiadania, co oznacza, że znaczna część czasu Twoich programistów idzie na utrzymanie.

W najprostszej definicji ukryty koszt mikroserwisów .NET Core to pieniądze wydawane na utrzymanie bardziej rozproszonego systemu, a można go rozbić na kilka kluczowych obszarów:
Każdemu szumowi towarzyszy taka sama dawka euforii i rozczarowania. Bierze się to głównie z jednego: wskakiwania na modę tylko dlatego, że jest modna.
Zaczynanie czegoś tylko dlatego, że robi to konkurencja, nie jest dobrym pomysłem. Twój biznes powinien korzystać ze strategii i rozwiązań pasujących do jego potrzeb. Dlatego warto się na chwilę zatrzymać i zastanowić, czy naprawdę potrzebujesz mikroserwisów.
Na początek zadaj sobie następujące pytania.
Jeśli Twoje odpowiedzi Cię przekonają - niezależnie od strony - będziesz w stanie podejmować bardziej świadome decyzje.
Dla uproszczenia zebraliśmy kilka wskazówek, które pomogą zrozumieć, kiedy warto, a kiedy nie warto stosować mikroserwisów.
Na dobry początek: oto sytuacje idealne, w których mikroserwisy mogą być lepsze od monolitycznych odpowiedników:
Współzałożyciel i CTO Contino, Benjamin Wootton, mówi, że mikroserwisy to nie darmowy lunch. Oznacza to, że nie są dla każdego. Od ich powstania - i odkąd Netflix nieco je zromantyzował, twierdząc, że na platformie działa ponad 700 mikroserwisów - firmy chętnie wprowadzają je do swoich biznesów.
Najczęściej przeoczano jednak to, że historie sukcesu pochodziły głównie od firm produktowych, które przeszły wiele iteracji i modeli, zanim miały produkt gotowy na rynek. Ta architektura stała się dla nich odpowiednia dopiero wtedy, gdy zrozumiały problem, który próbowały rozwiązać, i odniosły w tym sukces. Dlatego tak ważne jest, by wiedzieć, czy Twój biznes potrzebuje mikroserwisów.
Oto kilka czynników na początek:
Miej pełne zrozumienie problemów, a nie tylko korzyści, bo to one mówią więcej o tym, czy warto zaczynać wdrażanie tej architektury. Jeśli potrafisz dostrzec dla swojego produktu prawdziwą wartość w mikroserwisach, śmiało.

Każdy styl architektoniczny ma swoje kompromisy: mocne i słabe strony, które trzeba oceniać w kontekście zastosowania. Dotyczy to również mikroserwisów. Choć w wielu przypadkach to przydatna architektura, w większości sytuacji lepiej sprawdzi się monolit.
Przejrzyj kolejny rozdział, by poznać wyzwania, które mogłeś wcześniej przeoczyć.
Ogólnie rzecz biorąc, porównujemy tu zalety mikroserwisów .NET z zaletami monolitu. Czemu więc nie zestawić ich wprost?

Ogólnie mówiąc, w .NET są dwa rodzaje mikroserwisów:
Mikroserwisy bezstanowe to dobrzy kandydaci na klocki systemu rozproszonego. Jak sama nazwa wskazuje, nie utrzymują stanu sesji między żądaniami - jeśli na przykład usuniemy dowolną instancję usługi, nie wpłynie to na ogólną logikę jej działania. Systemy rozproszone preferują mikroserwisy bezstanowe.
Patrząc na diagram: klient składa zapytanie o produkt przez usługę ORDER, a wewnętrzna usługa ORDER sprawdza stan produktu przez usługę INVENTORY.
Bezstanowość oznacza, że każde żądanie wykonuje się niezależnie od poprzednich i przyszłych. Jedno wywołanie po szczegóły produktu zwróci ten sam wynik niezależnie od wcześniejszego kontekstu czy zapytań. Jeśli jedno wywołanie usługi ORDER się nie powiedzie, nie powinno zatrzymać całego procesu biznesowego. Inne instancje mikroserwisów muszą działać, by dokończyć zadanie.
Mikroserwisy stanowe przechowują informacje o sesji w kodzie. Gdy dwa lub więcej mikroserwisów się komunikuje, utrzymują stan żądania usługi.
W realnym świecie usługi bezstanowe są dobrym wyborem, ale jest kilka przypadków, w których trzeba przechowywać informacje o stanie. Prosty przykład: transakcje wymagające wielu rund dostępu do bazy danych wymagają stanowości.
Aby dowiedzieć się więcej o mikroserwisach stanowych, przejdź do Overview of Azure Service Fabric - Azure Service Fabric
Umiejętność dostosowania się do stale zmieniających się rynków to dziś jedyny sposób, by firma utrzymała się na powierzchni i rozwijała - dlatego skalowalność jest tak ważna.
Idea skalowalności jest prosta: im więcej zasobów, tym lepsza wydajność Twojego przedsiębiorstwa. Możesz odnieść ją do firmy, gdzie więcej zasobów oznacza odpowiedni wzrost sprzedaży, albo do architektury oprogramowania, gdzie oznacza zdolność do rozwoju wraz z rosnącym popytem.
Architektura mikroserwisowa to planowanie z wyprzedzeniem i upewnianie się, że jesteś gotów na przyszłość. Jakie dokładnie są potencjalne korzyści z mikroserwisów i jak realizują skalowalność? Zaraz odpowiemy!
Głównym powodem budowania architektury mikroserwisowej jest chęć rozwijania określonej linii biznesowej w oderwaniu od reszty. Takie podejście pozwala dodawać do danego modułu nowe funkcje przy minimalnym wpływie na resztę systemu. Chodzi o niezależność w tworzeniu i wdrażaniu. Ponieważ mikroserwisy organizuje się według wymagań biznesowych, zespół deweloperski lepiej zna oczekiwania użytkowników i rozumie perspektywę biznesową. Im lepsze zrozumienie, tym lepsze dopasowanie do biznesu.
Pomyśl o architekturze mikroserwisowej jako o filozofii samodzielności, w przeciwieństwie do podejścia monolitycznego. W architekturze monolitycznej aplikację traktuje się jako jedną całość złożoną z wielu elementów służących jednemu celowi. Architektura mikroserwisowa zrywa powiązania między tymi elementami, czyniąc z każdego niezależną jednostkę.
Architektura mikroserwisowa jest z definicji lekka. Dzieląc każdy komponent aplikacji na osobny mikroserwis, możemy skupić się na konkretnych potrzebach biznesowych, za które odpowiada dany moduł. Te niezależne moduły współpracują ze sobą, działając jako zbiór jednostek, a nie jeden monolit. Ponieważ procesy biznesowe są rozdzielone, łatwiej skalować w danym momencie te najbardziej krytyczne niż całą aplikację.
W ekosystemach mikroserwisowych najważniejsza jest efektywność. Osiągnięcie efektywności i skalowalności architektury, w której zadania rozłożone są czasem na dziesiątki (jeśli nie setki) małych usług, bywa bardzo trudne.
Skupiając się na zaletach tego podejścia, nie można zapominać o problemach wynikających ze wzrostu złożoności. Aby osiągnąć pożądany poziom skalowalności architektury przy zachowaniu szybkiego i udanego wdrożenia, trzeba właściwie zorganizować przepływ pracy i proces wytwórczy. Sukces nie jest możliwy bez odpowiedniego planowania i organizacji. Możesz mieć najlepszych programistów, ale jeśli nie zarządzasz tym dobrze, projekt się nie uda.
Przyjrzyjmy się więc najpierw dokładniej procesowi wytwórczemu.
Musisz wiedzieć, że przejście z monolitu do ekosystemu mikroserwisów bywa epicką podróżą. Jest kilka rzeczy, które trzeba zrobić, by wszystko poszło dobrze.
Przede wszystkim zidentyfikuj możliwości biznesowe, które chcesz zamienić w mikroserwisy. Zadbaj, by każdy mikroserwis zamykał w sobie konkretną zdolność biznesową. Możliwości biznesowe to to, co firma robi w danym obszarze, by realizować swoje cele i obowiązki.
Rozbijmy to teraz na bardziej szczegółowe kroki.

Zacznij od zdolności biznesowych, które łatwo odłączyć od aplikacji monolitycznej. Pozwoli to też Twojemu zespołowi DevOps przygotować potrzebne środowisko wdrożeniowe i potoki ciągłego dostarczania.
Oto kilka pierwszych przykładów: wydzielenie usługi uwierzytelniania użytkownika albo „profilu klienta”. To usługi brzegowe, które łatwo odłączyć.
Ponieważ będziesz mieć do czynienia z wieloma API, zabierz się za system zarządzania API. Często wiąże się to z postawieniem service mesh, który działa jako dedykowana warstwa infrastruktury do uruchamiania szybkiej, niezawodnej i bezpiecznej sieci mikroserwisów.
Meshing zwykle zaczyna się od systemów orkiestracji kontenerów, takich jak Kubernetes, by dać wyższy poziom abstrakcji nad infrastrukturą wdrożeniową.
Ogranicz też zależności nowo tworzonych mikroserwisów od monolitu. Mikroserwis musi być niezależny i przyjmować żądania wyłącznie przez otwarte endpointy API. Jeśli będziesz ściśle przestrzegać tej zasady, skończysz z monolitem zależnym od zdolności tworzonych mikroserwisów, a nie odwrotnie.
Aby przyspieszyć przejście na mikroserwisy, najlepiej odłączyć od monolitu głęboko zintegrowane zdolności. Gdy takie zdolności pozostają w monolicie, ograniczają dalszą migrację. Zawsze będzie bowiem istnieć ta zależność od monolitu w danym obszarze.
Aby móc się rozwijać, zespół musi wskazać taką lepką zdolność, rozbić ją na dobrze zdefiniowane pojęcia domenowe, a potem rozbić te pojęcia na osobne mikroserwisy.
Idea architektury mikroserwisowej to efekt lat ewolucji najlepszych praktyk w branży IT. Gdy firmy dążą do poprawy doświadczenia klienta, naturalna wydaje się decyzja o wydzieleniu każdego procesu w osobną jednostkę - dzięki temu masz pewność, że każdy komponent aplikacji działa najlepiej, jak potrafi.
Ponieważ funkcje biznesowe są podzielone na osobne byty, każdy z nich można tworzyć, testować i uruchamiać niezależnie. Oznacza to też, że można je zmieniać w izolacji, nie zakłócając działania biznesu. Stała, a nawet rosnąca szybkość dostarczania przy zachowaniu elastyczności we wprowadzaniu zmian to coś, czego szuka każdy CEO - a architektura mikroserwisowa to gwarantuje.
Sprawdź więcej badań na ten temat!
Wdrażając aplikację mikroserwisową, firma buduje skalowalną infrastrukturę. Dodanie do tego rozliczeń na żądanie i za faktyczne użycie zwiększa efektywność operacyjną i optymalizuje koszty. Mikroserwisy w chmurze upraszczają dostarczanie aplikacji i pomagają produktom szybciej trafić na rynek.
Teraz, gdy wiesz, jak skuteczne są mikroserwisy .NET dla rozwoju firmy, podsumujmy ich bezpośrednie korzyści:
Pamiętaj: prostszych systemów często nie trzeba rozbijać na mikroserwisy, bo doprowadzi to tylko do zamieszania. Przy bardziej złożonych systemach architektura mikroserwisowa może być jednak dobrym wyborem.
Chęć Microsoftu, by dać programistom jedną platformę do rozwiązywania dowolnych problemów, zrealizowała się dzięki .NET. Platforma .NET od kilkudziesięciu lat wspiera aplikacje webowe, desktopowe i mobilne, zarówno w startupach, jak i w korporacjach.
Nie ma wątpliwości, że .NET odgrywa centralną rolę w branży wytwarzania oprogramowania. Popularność .NET w społeczności programistów jest faktem. Możesz ją zmierzyć liczbą projektów open source na świecie i obecnością C# w pierwszej piątce najpopularniejszych języków programowania. Ta popularność ma jeszcze rosnąć, zwłaszcza po ostatnim wydaniu (.NET 6), które zrewolucjonizowało branżę, tworząc koncepcję uniwersalnego wytwarzania oprogramowania.

Dziś, według wielu szacunków, programistów ASP.NET jest na świecie około 7-8 milionów. Większość z nich to programiści C#.
Skoro mowa o C Sharpie, może warto zajrzeć w porównanie .NET i C#?
Choć C# uchodzi za główny język .NET, możesz używać wielu innych języków do wyboru. Nie wszystkie jednak są dobrze przystosowane do budowy architektury mikroserwisowej.
Dlatego polecamy skorzystać ze zweryfikowanego marketplace'u specjalistów IT. Dzięki temu masz pewność, że zatrudniasz wyłącznie doświadczonych programistów webowych.
Pojawienie się ASP.NET Core pomogło programistom budować wieloplatformowe mikroserwisy w .NET na wielu systemach operacyjnych, z łatwym wdrożeniem w chmurze.
Jest wiele powodów, dla których ASP.NET Core jest tak lubiany:
ASP.NET, platforma .NET do tworzenia aplikacji webowych, ułatwia budowanie API, które stają się mikroserwisami. Ma wbudowane wsparcie dla tworzenia i wdrażania mikroserwisów w kontenerach Docker.
.NET zawiera API, które po prostu korzystają z mikroserwisów w dowolnej zbudowanej przez Ciebie aplikacji - desktopowej, mobilnej, internetowej, w grach itd.
Jeśli masz aplikację, możesz zacząć wdrażać mikroserwisy .NET bez jej całkowitej przebudowy. Wstępna konfiguracja obrazów Dockera dla .NET jest już gotowa i dostępna na Docker Hubie, dzięki czemu skupisz się wyłącznie na budowie mikroserwisów.
Architektura mikroserwisów .NET pozwala kompilować technologię pomiędzy poszczególnymi usługami. Dzięki temu możesz użyć .NET w konkretnej części aplikacji, bez wciskania go wszędzie.
Mikroserwisy .NET możesz mieszać z aplikacjami napisanymi w Javie, Node JS czy dowolnym innym języku (sprawdź, co jest lepsze: .NET czy Java).
Pozwala to stopniowo przechodzić na technologię .NET dla nowych mikroserwisów działających razem z innymi mikroserwisami i usługami zbudowanymi w innych technologiach. Podobnie mikroserwisy .NET mogą działać na wszystkich wiodących platformach chmurowych.
Podstawowe założenia, na których opierają się mikroserwisy i ASP.NET Core, są całkiem do siebie zbliżone. Ponieważ .NET jako jeden z pierwszych tworzył aplikacje oparte na Simple Object Access Protocol, jego metodykę uznaje się za nowoczesną architekturę mikroserwisową.
Przyjrzyjmy się teraz bliżej kluczowym cechom ASP.NET Core i jego atutom przy budowie mikroserwisów.
Każdą aplikację ASP.NET Core można umieścić w kontenerze Docker. Nawet tradycyjne oprogramowanie wspiera technologię kontenerów. Najnowsza wersja pozwala jednak uzyskiwać obrazy lepszej jakości i szybciej.
Zgodność z Kubernetesem jest opcjonalną funkcją w nagłówku ASP.NET Core, dzięki czemu można wykorzystać wszystkie możliwości Kubernetesa i skutecznie budować mikroserwisy. Nawet budowanie mikroserwisów w Dockerze jest efektywne dzięki całej dostępnej, szczegółowej dokumentacji.
ASP.NET Core wspiera wiele systemów operacyjnych i jest zgodny z technologiami wieloplatformowymi. Wcześniejsza wersja była ograniczona, ale ta jest już wieloplatformowa. Dla mikroserwisów ważne jest, by nie były zależne od platformy ani architektury.
Z czasem i wraz z kolejnymi wersjami najnowsze wydania ASP.NET Core stają się szybsze, lepsze i bezpieczniejsze. Ostatnie badania pokazują, że efekty tej pracy są coraz lepsze. Liczba wydań wzrosła w ostatnich latach.
Rzut oka na najnowsze benchmarki ASP.NET Core pokazuje, że jego wydajność od premiery tylko rosła.
Budując aplikację w środowisku mikroserwisowym przy użyciu ASP.NET Core, programiści mogą wybrać IDE, które najbardziej im odpowiada. Nie trzeba wybierać Microsoft Visual Studio. Programiści mogą sięgnąć po darmowe oprogramowanie do budowy aplikacji opartych na mikroserwisach.
Podstawowa natura ASP.NET Core wspiera skalowalność chmurową. Każdy rodzaj mikroserwisów zbudowanych w tej technologii z pewnością będzie działał płynnie na wszystkich ważnych usługach chmurowych. Przykładowo Azure to jedna z technologii chmurowych, które polecamy, bo powstała specjalnie dla społeczności .NET.
Dwie główne cechy ASP.NET Core - modułowość i lekkość - są kluczowe przy wyborze go do budowy aplikacji mikroserwisowej opartej na kontenerach.
Na początku 2017 roku, gdy ukazała się wersja 1.0, wielu funkcji jeszcze brakowało, wsparcie dla połączeń z bazami danych było słabe, a .NET Core wyglądał jak produkt w wersji beta z dużym potencjałem.
Od tego czasu framework znacznie się poprawił:
Wszystkie informacje o wydaniach poszczególnych wersji znajdziesz tutaj.
ASP.NET Core pozwala budować, kompilować, uruchamiać i wdrażać z poziomu wiersza poleceń.
Za pomocą prostego polecenia w rodzaju „dotnet new webapi” otrzymujesz fundament swojego mikroserwisu.
Wytwarzanie w ASP.NET Core ugruntowało swoją pozycję na rynku IT i jest z powodzeniem uznawane za odpowiednie do budowy mikroserwisów. Do wyboru jest wiele języków programowania przy tworzeniu idealnej architektury mikroserwisowej, ale ASP.NET Core okazał się wyborem doskonałym. Wykazanie wartości ASP.NET Core nie jest trudne. To udowodniony fakt!

Globalne firmy, takie jak Amazon, Coca Cola czy Zalando, przekształcają swoje infrastruktury IT w architekturę mikroserwisową. Przy okazji przebudowują też wewnętrzne struktury organizacyjne i wyprzedzają konkurencję.
Większość dużych firm, a także startupów, buduje swoje systemy w architekturze monolitycznej. Zaczynają tak, bo na początkowym etapie projektu dużo szybciej jest stworzyć monolit i ruszyć z biznesem. Po jakimś czasie pojawiają się problemy wynikające z dojrzewania projektów lub przyrostu „tłuszczu”. Wraz ze wzrostem systemu kod staje się bardziej skomplikowany, architektura bardziej złożona, a do utrzymania potrzeba więcej programistów.
Jednocześnie tracimy szybkość, elastyczność i zwinność, przez co trudniej odpowiadać na potrzeby rynku.
Zobaczmy, jakie firmy rozwiązały swoje problemy, sięgając po mikroserwisy w .NET!

Gdy BestBuy.com zajmował 10. miejsce wśród 500 największych sklepów internetowych, firma doszła do punktu, w którym nawet proste zmiany i aktualizacje systemu IT były skrajnie trudne, a nawet niebezpieczne, bo nie dało się skutecznie przygotować na szczyt ruchu w okresie świątecznym. Ekosystem aplikacji stał się zbyt złożony i po prostu utknął w miejscu.
Po tym momencie zaczęła się transformacja, będąca chyba najlepszym przykładem mikroserwisów w .NET Core. Proces ruszył w 2010 roku od budowy grafów zależności między połączonymi modułami monolitycznej platformy, a potem programiści zaczęli wdrażać mikroserwisy. Best Buy użył wzorca Strangler, by krok po kroku zastąpić stary system mikroserwisami.
Ciężka praca nad kulturą pozwoliła wielu zespołom przyspieszyć rozwój i zyskać swobodę. Zawsze skupialiśmy się na uczeniu się, by być lepszym
powiedziała programistka Kristen Womack.
Choć przejście na mikroserwisy było trudne, Best Buy wykorzystał je, by przebudować organizację i system tak, by do siebie pasowały i wspierały przyszłe procesy firmy.
Dowiedz się więcej o mikroserwisach w BestBuy.com tutaj.

The Coca-Cola Company - 3800 produktów na świecie i spółki zależne na całym globie - to kolejny świetny przykład architektury mikroserwisowej w .NET. Firma stanęła przed wyzwaniem połączenia biznesów na różnych kontynentach i wsparcia ich wzrostu.
Globalny dział IT Coca-Coli postanowił użyć do tego mikroserwisów i API oraz stopniowo zastępować stare oprogramowanie. Szybka zmiana nie była tu możliwa ze względu na wiele rozwiązań wdrożonych globalnie (ERP, transformacje, repozytoria).
Firma wiedziała, że mikroserwisy można wdrożyć na wiele sposobów, i ostatecznie zdecydowała się przejść na nową architekturę w modelu DevOps. Wprowadziła w nim strukturę podzieloną na jedną aplikację, dzięki której może rozwiązywać wszelkie problemy z szybkością i zwrotnością.
Z drugiej strony GIT stworzył bibliotekę modułów wielokrotnego użytku (nazwaną Anypoint Platform), pogrupowanych w domeny dostępne dla wszystkich podmiotów w grupie. Dzięki bazie gotowych do użycia usług projekty w całej organizacji i u partnerów zewnętrznych mogą powstawać szybciej i taniej.
W porównaniu z naszym starym rozwiązaniem integracyjnym Anypoint Platform pozwoliła nam zmniejszyć przepływ danych do sieci Coca Coli o 50%, a czas potrzebny na skalowanie pod kolejne maszyny freestyle skrócić z tygodni do minut.
- Dani Ang, Corporate Integration Architect w The Coca Cola Company.
Wraz ze zmianami w technologii i architekturze Coca-Cola skupiła się na procesach i ludziach. Firma przeszła z modelu COE na model C4E (Center 4 Excellence) i zyskała synergię dzięki współpracy i dzieleniu się w ramach systemu.
Dowiedz się więcej o mikroserwisach w Coca-Coli tutaj.
Przejście na architekturę mikroserwisową to innowacyjny sposób na szybkie dostarczanie oprogramowania przy jednoczesnym ograniczeniu ryzyka. To priorytet wielu firm patrzących w przyszłość. Gdy Twój biznes jest gotów na taką zmianę, warto dokładnie wiedzieć, czego potrzebuje Twoja aplikacja, by ostatecznie zapewnić oczekiwaną jakość usług, skalowalność, elastyczność i sukces biznesowy.
Analiza korzyści biznesowych z mikroserwisów może pomóc Twojemu przedsiębiorstwu, startupowi czy scaleupowi określić własne cele migracji i upewnić się, że masz wsparcie potrzebne do opanowania dodatkowej złożoności przejścia na architekturę kontenerową.
Pracując z firmami nad ich mapami drogowymi i celami przejścia na architekturę kontenerową, widzieliśmy niesamowity wzrost i sukcesy wynikające z nowoczesnego podejścia do tej zmiany. Do najczęstszych korzyści biznesowych należą:

Wprowadzanie zmian w aplikacjach legacy jest bardzo ryzykowne, bo zmiana jednego procesu może negatywnie wpłynąć na inny. Przy luźno powiązanych mikroserwisach aktualizacje można natomiast wykonywać niezależnie od reszty aplikacji. Przekłada się to na szybsze tworzenie i wersjonowanie aplikacji, dzięki czemu firmy mogą „szybko upadać” i trzymać się elastycznych harmonogramów rozwoju produktu.
W mikroserwisach ważne jest pełne zrozumienie i widoczność zależności sieciowych, a także spójny dostęp i bezpieczeństwo każdego mikroserwisu. Wykorzystaj dogłębną wiedzę o skanowaniu kontenerów i sieciach klastrów oraz zastosuj service mesh, by mieć pewność, że Twoje środowisko używa każdego możliwego narzędzia dla maksymalnego bezpieczeństwa.
Mikroserwisy można skalować poziomo, uruchamiając dwie maszyny obok siebie, zamiast rozbudowywać istniejącą. Oznacza to, że możesz skalować w górę i w dół wtedy, gdy trzeba, oszczędzając pieniądze i poprawiając doświadczenie użytkownika.
Gdy pojawiają się problemy, dotyczą jednej małej części aplikacji, a nie całości. Daje to użytkownikom końcowym najlepszą wydajność i eliminuje przestoje, podczas gdy IT usuwa usterkę i przywraca normalne działanie usługi.
Wiele firm przechodzi na infrastrukturę kontenerową z potrzeby skalowania. Gdy mikroserwisy są zautomatyzowane i oparte na szablonach, łatwo nimi zarządzać oraz je powielać lub usuwać. Oznacza to spójne podejście do skalowania, orkiestracji i zarządzania aplikacją.
Mikroserwisy dają wyraźne korzyści: oszczędność kosztów i szybsze wejście na rynek. Zmniejszają liczbę awarii i zapewniają wyższą dostępność. Nadgorliwość albo błędne pokierowanie architekturą mikroserwisów potrafi jednak nadmiernie wszystko skomplikować. A wtedy stracisz wszystkie te korzyści.
Przechodząc na mikroserwisy, trzeba dobrze przemyśleć sprawę. Może zajść potrzeba zatrudnienia dodatkowych osób o nowych kompetencjach. Nie zapomnij też ocenić swojego obecnego zespołu DevOps.
Czujesz, że dodatkowa pomoc byłaby w tym procesie na wagę złota? Zwróć się do Ideamotive po najlepszych programistów C/C++! Potrzebujesz całego zespołu dedykowanych osób? Jesteśmy tu, by pomóc w każdej sprawie!
Współzałożyciel Ideamotive. Świetnie zna Ruby on Rails, JavaScript i administrację systemami Linux. Doświadczony we wdrażaniu skutecznych aplikacji webowych.
Zobacz wszystkie wpisy autoraPopularne artykuły
21 inspirujących projektów UI aplikacji mobilnych na 2023 rok
Michał Pruciak 7 min czytania
MedTech vs HealthTech vs BioTech: jakie są różnice?
Michał Pruciak 7 min czytania
10 biznesowych zastosowań sieci neuronowych (z przykładami!)
Michał Pruciak 4 min czytania
10 przykładów dobrych praktyk w web designie na 2023 rok
Adam Kozłowski 7 min czytania
28 znanych aplikacji webowych napisanych w PHP
Dawid Karczewski 14 min czytania
Jakich usług programistycznych szukasz?
W naszej sieci talentów czekają dziesiątki zweryfikowanych specjalistów .NET.
Dane rejestrowe:
Firma
Usługi
Najczęściej poszukiwani specjaliści
Ocena 4,8 / 5,0 od klientów z różnych branż i lokalizacji.