Szukasz najlepszych programistów C#? Znajdziesz ich w kilka kliknięć.

Budowa mikroserwisów w C#: przewodnik biznesowy

14 lut 20227 min czytania

Robert Krajewski

Współzałożyciel i CEO Ideamotive. Przedsiębiorca, mentor i doradca startupów.

Korporacje mają dość monolitycznych aplikacji, które są zbyt trudne w utrzymaniu i zamieniają dodawanie nowych funkcji w katastrofę. Tu wkraczają mikroserwisy. 

 

Mikroserwisy to styl architektoniczny, w którym aplikację buduje się jako zestaw pojedynczych, niezależnych modułów komunikujących się ze sobą przez API. Każdy moduł (mikroserwis) pełni określoną funkcję - jeden odpowiada za profile użytkowników, drugi za koszyk, trzeci za wyszukiwarkę na stronie itd. 

 

Usługi można wdrażać i zmieniać pojedynczo, co oznacza, że łatwo skalujesz i dodajesz nowe funkcje, a praca nad jedną z nich nie wymaga wyłączania całej aplikacji. 

 

W ciągu ostatnich 5 lat firmy zaczęły dostrzegać, jak korzystna jest ta technologia, a liczba wyszukiwań hasła „microservices” w Google zanotowała wzrost o 200%. Wielkie firmy, takie jak Amazon, Netflix, Uber czy eBay, już przeszły na ten typ architektury, co pozwoliło im zarządzać stale rosnącą listą użytkowników i funkcji znacznie mniejszym nakładem sił niż w przypadku aplikacji monolitycznych. 

 

Mikroserwisy można pisać w dowolnym języku, a poszczególne usługi nawet w różnych językach, zależnie od tego, która technologia lepiej pasuje do danej funkcji (lepiej jednak nie mieszać zbyt wielu - trudno będzie zapewnić im dobrą komunikację). Najczęściej używane języki do mikroserwisów to Python, JavaScript, Java, .NET i C#

 

W tym artykule skupimy się na budowie mikroserwisów w C#: dla jakich firm i projektów się sprawdzą, jakich zasobów będzie wymagać development, jakie są plusy i minusy tej technologii oraz jaki będzie jej wpływ. Dowiedz się wszystkiego, co trzeba wiedzieć o tworzeniu mikroserwisów w C#, aby w pełni świadomie zdecydować, czy to najlepsza opcja dla Twojego kolejnego projektu. 

 

Building Microservices in C# - Microservice Architecture

Budowa mikroserwisów w C#: czego wymaga?

Zanim zaczniesz projekt z mikroserwisami w C#, musisz lepiej poznać zasoby, których będziesz potrzebować do jego realizacji. 

Znajdź architekta oprogramowania

Przede wszystkim będziesz musiał znaleźć architekta oprogramowania. Mikroserwisy stawiają inne wyzwanie niż monolit - chodzi o to, by usługi komunikowały się ze sobą i poprawnie przekazywały dane. Część przykładowych mikroserwisów w C# będzie ze sobą współpracować i od siebie zależeć, o co również trzeba zadbać. Na przykład ulubione i rekomendacje będą musiały się komunikować, aby zapewnić bardziej spersonalizowane doświadczenie. Zaprojektowanie architektury to jeden z pierwszych kroków developmentu. Architekt oprogramowania to osoba, która potrafi zagłębić się w te niuanse i zadbać, by Twoje mikroserwisy łączyły się ze sobą w sensowny sposób. 

Znajdź programistów znających C# i mikroserwisy

Po drugie, będziesz potrzebować programistów doświadczonych zarówno w C# jak i w mikroserwisach. Lepiej pracować w kilku małych, 1-2-osobowych zespołach, z których każdy zajmuje się jednym lub dwoma mikroserwisami. Zalecamy zatrudnić project managera, który widzi produkt w szerszej perspektywie i zapewnia dobrą komunikację z zespołem oraz kadrą zarządzającą. Czasem, gdy mikroserwisów jest zbyt wiele, trzeba zatrudnić więcej niż jednego project managera. 

Zaplanuj proces rozwoju produktu

Jako product owner będziesz zaangażowany głównie na etapie planowania, gdzie decydujesz o funkcjach, liczbie mikroserwisów, harmonogramie, budżecie i zespołach. Potem możesz włączać się rzadko, głównie odbierając aktualizacje od project managera. Jeśli go nie masz, będziesz zaangażowany nieustannie, bo potrzebna będzie komunikacja między zespołami, a Ty musisz monitorować postępy każdego z nich. 

Zatrudnij dodatkowych specjalistów

Prawdopodobnie będziesz też potrzebować inżynierów DevOps i administratorów baz danych, aby zapewnić nieprzerwany proces wytwarzania oprogramowania.

Zaplanuj budżet

Ponieważ będziesz potrzebować więcej programistów o wąskich specjalizacjach i project managerów niż przy zwykłym developmencie monolitu, koszty będą prawdopodobnie wyższe i trzeba być na to gotowym. Jednocześnie koszty ogólne nie powinny Cię odstraszać — w dłuższej perspektywie mikroserwisy są znacznie tańsze w utrzymaniu. Będziesz mógł być na bieżąco ze wszystkimi nowymi trendami na rynku, dodając nowe funkcje tak szybko, jak to możliwe, i nie cierpieć z powodu przestojów całego systemu, gdy jedna funkcja nie działa. Mniejszy jest też strach przed zepsuciem całej aplikacji, jak to zwykle bywa przy oprogramowaniu monolitycznym. 

Kiedy stosować mikroserwisy?

Mikroserwisy zdecydowanie nie są odpowiedzią na każdy projekt i każdą firmę. Inaczej firmy IT przeszłyby na to rozwiązanie w całości. 

 

Ten typ architektury jest przeznaczony dla przedsiębiorstw o licznych i złożonych operacjach lub dla firm, które planują mocno się skalować. Głównym celem mikroserwisów jest ułatwienie zarządzania dużymi aplikacjami. Nie ma sensu komplikować sprawy przy niewielkiej liczbie funkcji. Ze względu na wysokie koszty ogólne technologia ta jest rzadko stosowana przez startupy. Choć wydaje się, że startupy będą się mocno skalować, na początku nigdy nie wiadomo, czy produkt trafi w rynek. 

 

Jeśli tworzysz nowe rozwiązanie, ta technologia dobrze pasuje do następujących projektów:

  • Aplikacje wymagające użycia wielu języków
  • Aplikacje, których komponenty można wykorzystać ponownie w kilku projektach
  • Oprogramowanie z różnymi użytkownikami końcowymi: pracownikami, różnymi rodzajami klientów, inwestorami, podmiotami zewnętrznymi
  • Aplikacje mocno obciążone danymi

Jeśli chcesz przepisać starą aplikację, która stała się zbyt złożona, mikroserwisy też są świetną opcją. Na przykład Amazon oferował zbyt wiele usług i już na początku lat 2000 monolit przestał wystarczać. Usiedli więc, zaplanowali, jak zorganizować aplikację w mikroserwisy, i dziś cieszą się skalowalnością oraz zwinnością nowej architektury.

 

Building Microservices in C# - Pros and cons

 

Decyzja o developmencie w mikroserwisach to kluczowy krok i przed jej podjęciem warto mieć wszystkie dostępne informacje. Przyjrzyjmy się plusom i minusom architektury mikroserwisowej w C#, by dać Ci pełny obraz. 

Zalety mikroserwisów w C#

  • Izolacja awarii. Jeśli coś stanie się z jednym mikroserwisem, nie wyłączy to całej aplikacji. Mikroserwisy są z natury dość niezależne i pozostaną w większości nietknięte przez jeden wadliwy mikroserwis.
  • Wszechstronność. Możesz łączyć różne technologie, języki i modele wytwarzania (jak serverless, kontenery, tradycyjne serwery i maszyny wirtualne). Dzięki temu efektywniej rozwiążesz zadanie danej funkcji. 
  • Łatwe zmiany. Możesz łatwo skalować lub dodawać nowe funkcje, by wyprzedzać konkurencję i przyjąć tylu użytkowników, ilu chcesz. 
  • Pole do eksperymentów. Ponieważ każdy moduł wdrażany jest osobno, łatwo przetestujesz nowe funkcje lub wprowadzisz szybkie zmiany, by zobaczyć, co działa, a co nie. To świetny sposób na dopasowanie aplikacji do potrzeb użytkowników końcowych. 
  • Proste integracje. Podłączenie usługi zewnętrznej do architektury mikroserwisowej jest bardzo łatwe. Możesz nawet użyć integracji zamiast tworzyć cały nowy mikroserwis — nie ma potrzeby wymyślać koła na nowo. 

Wady mikroserwisów w C#

  • Trudne planowanie. Planowanie to w istocie duża część całego procesu wytwarzania. Musisz mieć pewność co do komunikacji między usługami, zanim zaczniesz development. Przy różnych językach robi się to jeszcze bardziej skomplikowane. 
  • Testowanie jest wymagające. Każdy mikroserwis musisz traktować jak moduł oprogramowania i testować osobno. Gdy wszystko jest gotowe, trzeba jeszcze przetestować całość, aby upewnić się, że komunikacja między usługami przebiega płynnie. 
  • Problemy z debugowaniem. Podczas debugowania będziesz musiał odtworzyć stan błędu, co w systemie rozproszonym jest wyjątkowo trudne. Trzeba też przejrzeć wiele logów, aby wytropić problem. 
  • Potencjalne problemy z bezpieczeństwem. Firmy najczęściej szukają problemów bezpieczeństwa w pojedynczych mikroserwisach i zapominają o komunikacji między nimi. W efekcie widujemy nieszyfrowane lub wadliwe API, które są stale nadużywane. 

Ważne jest też izolowanie mikroserwisów i uniezależnianie ich, tak aby w razie naruszenia hakerzy nie dostali się do całej aplikacji. 

Rodzaje mikroserwisów w C#

Są dwa główne typy wzorców projektowych mikroserwisów w C#: architektura all-to-all (synchroniczna) i sterowana zdarzeniami (asynchroniczna). 

Architektura synchroniczna

Komunikacja synchroniczna oznacza, że wywołujący musi poczekać na odpowiedź, zanim przejdzie do innych zadań. Tworzy to ścisłe powiązanie między usługami i czasem spowalnia procesy.

Architektura asynchroniczna

Komunikacja oparta na zdarzeniach oznacza, że wywołujący nie musi czekać na odpowiedź i może kontynuować swoje zadanie, zanim otrzyma wynik żądania. Mikroserwisy będą wyzwalane przez określone zdarzenia - na przykład gdy klient doda produkt do koszyka, automatycznie uruchomi to obliczenie kosztów dostawy. Ten typ pozwala na luźne powiązanie, ale wymaga większego doświadczenia. 

Mikroserwisy w C# — wpływ na produkt

 

Wybierając mikroserwisy w C#, możesz spodziewać się następujących zmian w oddziaływaniu na wszystkie strony:

  • Produkt stanie się łatwiejszy w utrzymaniu, rozbudowie o nowe funkcje, skalowaniu i zrozumieniu. Nie będziesz się bać, że jednym złym ruchem zepsujesz cały monolit. 
  • Biznes będzie musiał zmierzyć się z kosztami startowymi, ale ROI będzie świetny: przyciągniesz klientów nowymi funkcjami, poeksperymentujesz z oprogramowaniem, by sprawdzić, co im się podoba, i zoptymalizujesz koszty utrzymania
  • Użytkownicy końcowi dostaną złożone, wielofunkcyjne oprogramowanie, które zapewni im każdą usługę w jednym środowisku i szybko wdroży nowe funkcje wtedy, gdy najbardziej ich potrzebują

Pula specjalistów C# i popularność języka

C# jest w pierwszej dziesiątce najpopularniejszych języków programowania i piętnastce najbardziej lubianych języków, plasując się wyżej niż JavaScript i Java. Nie ma niedoboru programistów C#, więc raczej nie napotkasz problemów, szukając kilku ekspertów do małych zespołów. Wynika to z tego, że język stosuje się w bardzo różnych projektach, od stron internetowych po gry. 

 

Nie zapomnij jednak wybrać osób, które mają doświadczenie i wiedzę w pracy z mikroserwisami. Warto zadać dodatkowe pytania rekrutacyjne właśnie o architekturę mikroserwisową, a także o umiejętność pracy przy równoległym developmencie. Jeśli chcesz oszczędzić sobie tego kłopotu, możesz udać się do sprawdzonego dostawcy i zająć się innymi zadaniami biznesowymi, podczas gdy firma zapewni Ci przetestowanych i doświadczonych specjalistów. 

Czy C# nadaje się do mikroserwisów?

C# należy do najczęściej używanych języków przy mikroserwisach i ma to swoje uzasadnienie. Bardzo dobrze obsługuje projekty wielojęzyczne, bo działa na platformie .NET , jest zaprojektowany pod łatwe skalowanie oraz jest mocno ustrukturyzowany i wydajny. Oferuje też liczne biblioteki z narzędziami biznesowymi, co czyni go idealnym wyborem do back-endu. C# daje proste rozwiązania do budowy API łączących mikroserwisy i dobrze współpracuje z kontenerami Docker. 

Podsumowanie

Mikroserwisy to świetna alternatywa dla monolitu w złożonym, wielousługowym oprogramowaniu, bo znacznie ułatwiają zarządzanie różnymi usługami i pozwalają dodawać nową funkcjonalność oraz skalować jak najmniejszym wysiłkiem. 

 

Projekty w mikroserwisach z C# wymagają większej inwestycji na początku, ale ROI jest nieporównywalnie lepszy. Programistów znajdziesz łatwo, bo C# jest wśród nich popularny, a język to jeden z najlepszych wyborów do mikroserwisów. 

 

Jeśli szukasz architektów oprogramowania, programistów C#, project managerów, sprawnych testerów i reszty zespołu developerskiego, śmiało odezwij się do Ideamotive. To pewny sposób na znalezienie ekspertów, których potrzebujesz - już po starannej weryfikacji i z wieloletnim doświadczeniem w podobnych projektach.

Robert Krajewski

Robert jest współzałożycielem Ideamotive. Przedsiębiorca, który z pasją szerzy cyfrową rewolucję w całym internecie. Mentor i doradca w akceleratorach startupów. Uwielbia się uczyć i odkrywać nowe modele biznesowe.

Zobacz wszystkie wpisy autora
CEE IT 2022

Outsourcing i offshoring IT w Europie Środkowo-Wschodniej: raport 2022

Białoruś • Polska • Rumunia • Ukraina

Czytaj teraz
Newsletter 9-1
Newsletter Ideamotive
Twój dwutygodniowy przegląd najgorętszych newsów technologicznych

Szukasz ekspertów od C# do swojego zespołu?

W naszej sieci talentów czekają dziesiątki zweryfikowanych specjalistów C#.