Szukasz najlepszych specjalistów od oprogramowania? Znajdziesz ich w kilka kliknięć.

Serverless vs mikroserwisy: co wybrać do swojego produktu?

16 lut 20226 min czytania

Robert Krajewski

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

Architektura serverless a mikroserwisy

Budowanie aplikacji w 2023 roku jest bez wątpienia ekscytujące, choć wymaga kompleksowego planowania. Żeby Twoje oprogramowanie było trwałe i wciąż aktualne, świetnym punktem wyjścia jest wybór nowoczesnych technologii, które płynnie odpowiadają celom i wymaganiom projektu. Ta strategiczna decyzja może okazać się kluczem do stworzenia trwałych i wartościowych rozwiązań.

 

Mikroserwisy i serverless to obecnie dwie główne koncepcje w chmurze obliczeniowej. Dobrze wpływają na efektywność aplikacji oraz sprawiają, że zmiany i skalowanie są znacznie łatwiejsze i szybsze. 

 

Dowiedz się więcej o architekturze mikroserwisowej i serverless: kiedy używać której, do jakiego rodzaju oprogramowania pasują, jakie mają zalety i wady oraz jak wpływają na produkt jako całość. 

Czym są mikroserwisy?

Mikroserwis to zdecentralizowany wzorzec architektoniczny, w którym aplikację dzieli się na szereg niezależnych funkcji (usług), które mogą działać i komunikować się ze sobą przez API. Każdy mikroserwis ma własną bazę danych, biblioteki i szablony, a testuje się je osobno.

 

Często porównuje się je do architektury monolitycznej. W tej drugiej wszystkie funkcje stanowią jedność: są bardzo mocno powiązane i działają jako jeden byt. W mikroserwisach każdy komponent jest mniej lub bardziej niezależny i nie musisz uruchamiać całej aplikacji dla jednej funkcji. 

 

Weźmy na przykład serwisy streamingowe z muzyką: tworzenie profilu, wyszukiwanie muzyki, tworzenie playlist i odtwarzanie to osobne funkcje, które możesz zamienić w szereg mikroserwisów. Jeśli potrzebujesz nowej funkcji (choćby trybu karaoke), po prostu tworzysz nowy mikroserwis i podłączasz go do reszty systemu. 

Czym jest model serverless?

Serverless to model, w którym zewnętrzny dostawca chmury sam zajmuje się serwerem. Programiści muszą martwić się tylko o kod, a całą resztę robi dostawca serwera - łatki bezpieczeństwa, równoważenie obciążenia, zarządzanie pojemnością, skalowanie, logowanie i monitoring. W modelu serverless możesz uruchomić całą aplikację albo jej część. 

 

Serwer jest wykorzystywany tylko wtedy, gdy używa się aplikacji: gdy tylko kod aplikacji zostanie wywołany, serwer przydziela mu zasoby i odbiera je, gdy aplikacja przestaje być aktywna. Właściciel aplikacji płaci wyłącznie za czas jej działania. 

 

Dostawcy chmury oferują albo Backend-as-a-Service (BaaS), albo Function-as-a-Service (FaaS). BaaS daje gotowe funkcje, dzięki czemu programista zajmuje się wyłącznie frontendem. Używa się go rzadko, bo daje ograniczoną kontrolę i możliwości dostosowania. FaaS jest natomiast bardziej elastyczny: programiści piszą backend i frontend, a potem po prostu uruchamiają je na zdalnym serwerze. 

 

FaaS pozwala zbudować aplikację jako zestaw funkcji. Każda funkcja ma swój cel i wyzwalacz, który ją uruchamia. Funkcja jest zwykle krótkotrwała i wyłącza się, gdy tylko przestaje być używana - nie może działać w sposób ciągły. 

Serverless vs mikroserwisy - główne różnice 

Najważniejsza różnica jest taka, że mikroserwisy to sposób projektowania aplikacji, a serverless to sposób jej uruchamiania (albo uruchamiania jej części). Mikroserwisy możesz hostować w modelu serverless.

 

Jeśli porównamy mikroserwis z funkcją serverless, różnice będą następujące:

  • Funkcje mikroserwisów mogą być długotrwałe, ciągłe i realizować więcej niż jedno zadanie.
  • Funkcje serverless nigdy nie są ciągłe, potrzebują zdarzenia wyzwalającego i nie mogą obejmować więcej niż jednego zadania.

Architektura serverless a mikroserwisy - główne różnice

Jak do nich podejść? Jakie role i zasoby są potrzebne?

Przy tworzeniu oprogramowania na mikroserwisach największą częścią pracy jest planowanie. Musisz ustalić, jakie mikroserwisy stworzyć, jakie mają pełnić funkcje i jak będą się ze sobą komunikować przez API. Będzie Ci do tego potrzebny architekt oprogramowania. 

 

Jeśli chodzi o zespół, musisz znaleźć programistów i testerów, którzy naprawdę znają mikroserwisy. Język i framework nie mają większego znaczenia, bo mikroserwisy zbudujesz w dowolnej technologii. Najczęściej powstają jednak w takich technologiach jak JS/TypeScript, Java, .NET, i Python. Przy takich projektach zwykle wymagane jest też doświadczenie z projektami danych i z chmurą. Przy mikroserwisach programistom lepiej pracuje się w małych, interdyscyplinarnych zespołach.

 

Według strategów biznesowych, koszty mikroserwisów są wyższe na etapie wytwarzania, ale niższe w dłuższej perspektywie. W porównaniu z architekturą monolityczną utrzymanie kosztuje mniej, bo nowe funkcje dodajesz szybciej i bez kłopotu, a gdy jeden mikroserwis padnie, reszta aplikacji działa dalej - inaczej niż w monolicie. 

 

Projekty mikroserwisowe zajmują zwykle mniej czasu niż monolityczne, bo małe zespoły mogą jednocześnie i niezależnie pracować nad różnymi funkcjami. 

 

Jeśli mówimy o serverless, musisz znaleźć dobrego dostawcę usługi (najbardziej znani to AWS Lambda, Google Cloud Functions, Microsoft Azure Functions i Cloudflare Workers), wybrać między BaaS a FaaS oraz rozpisać wszystkie funkcje i ich wyzwalacze. 

 

Jeśli chodzi o zespół, musisz znaleźć ludzi, którzy potrafią pracować z wybranym dostawcą usługi i mają solidne umiejętności w JavaScripcie lub Pythonie. 

Jeśli chodzi o koszty wytworzenia, hostowanie aplikacji lub jej części na zdalnym serwerze jest zwykle tańsze - i o to właśnie chodzi. Koszty wytworzenia są znacznie niższe, niż przywykłeś. 

 

Tempo wytwarzania również należy do najszybszych: wiele firm sięga po tę technologię właśnie po to, by błyskawicznie wypuścić nowe aplikacje.

Kiedy używać architektury serverless, a kiedy mikroserwisów?

Nie ma jednej odpowiedzi na pytanie, co jest lepsze - mikroserwisy czy serverless - bo każdy projekt jest inny. Co więcej, można je też łączyć. 

 

Przyjrzyjmy się bliżej zastosowaniom obu. 

Zastosowania mikroserwisów

Mikroserwisy są szeroko stosowane przez takie potęgi jak Netflix, Uber czy Airbnb. Pozwalają im szybko skalować się, a te firmy cały czas rosną. Jeśli chodzi o startupy, konsultanci ds. finansowania twierdzą, że to nie najlepszy pomysł: koszty początkowe są zbyt duże, a mikroserwisy stosuje się głównie w dużych aplikacjach, które robią się trudne w utrzymaniu. Małe i lekkie aplikacje bez problemu utrzymasz jako monolit. 

  • Aplikacje, które muszą szybko skalować się w górę lub w dół
  • Oprogramowanie, do którego zapewne będziesz dodawać nowe funkcje i to w krótkim czasie
  • Aplikacje big data: w big data na każdym etapie masz jedno zadanie - zbieranie danych, przetwarzanie, dostarczanie, przechowywanie itd. - a sensem mikroserwisów jest właśnie obsługa pojedynczych zadań
  • Przepisywanie aplikacji legacy
  • Gdy masz więcej niż jedno oprogramowanie i chcesz ponownie wykorzystać część jego komponentów

Zastosowania serverless

Serverless to świetna okazja na tworzenie aplikacji webowych i mobilnych w startupach - jest tanie i doskonale sprawdza się przy lekkich aplikacjach. Firmy klasy enterprise powinny natomiast podchodzić do serverless ostrożniej, bo jego zastosowania są ograniczone. 

  • Oprogramowanie o zmiennym ruchu: jeśli Twoja aplikacja raz notuje wysokie skoki ruchu, a raz stoi zupełnie bezczynnie, to rozwiązanie idealne, bo automatycznie przydziela zasoby serwera zależnie od bieżącej sytuacji. Nie musisz płacić za bezczynność ani panikować przy skokach ruchu. 
  • Internet rzeczy: serverless opiera się na zdarzeniach, tak samo jak IoT
  • Automatyzacja continuous integration i continuous delivery: rozpisz automatyczne testy albo wdrożenia jako zdarzenia i wyzwalacze do nich 
  • Wszystko, co składa się z krótkotrwałych funkcji
  • Projekty, które muszą ruszyć natychmiast i przy niskich kosztach

Zalety i wady architektury serverless oraz mikroserwisów

Niestety nie ma jednej idealnej technologii - w przeciwnym razie świat byłby szczęśliwym, ultrarozwiniętym miejscem. Każda technologia ma zalety, które możesz wykorzystać w projekcie, i wady, które musisz być gotów tolerować. Przyjrzyjmy się jednym i drugim.

Zalety mikroserwisów

  • Łatwiejsza skalowalność: możesz dodawać i usuwać funkcje oraz skalować przy minimalnym wysiłku, bo usługi są niezależne. Nie musisz brać pod uwagę całej bazy kodu, jak w aplikacjach monolitycznych
  • Większa odporność oprogramowania: skoro mikroserwisy nie zależą tak mocno od siebie, awaria jednego nie położy całej aplikacji. Przydaje się to zwłaszcza przy skokach ruchu
  • Wielojęzyczność: mikroserwisy możesz pisać w różnych językach i łączyć je przez API. To użyteczna zaleta, bo różne technologie lepiej odpowiadają różnym potrzebom funkcji. Jeśli jednak użyjesz zbyt wielu języków, możesz ucierpieć przez logistykę łączenia wszystkiego - lepiej trzymać się prostoty
  • Różne platformy: podobnie jak z językami, możesz połączyć mikroserwisy hostowane na różnych platformach. Część aplikacji możesz też hostować w modelu serverless, a część klasycznie
  • Miejsce na eksperymenty: choć mamy mnóstwo danych, nasze założenia nie zawsze są trafne - a mikroserwisy pozwalają wszystko przetestować. Nie musisz płacić tysięcy tylko po to, by dodać nową funkcję, którą później być może usuniesz, bo aplikacje na mikroserwisach są bardzo elastyczne, o czym już wspominaliśmy
  • Autonomia zespołów: wiele małych zespołów może pracować nad projektem naraz i mniej się ze sobą komunikować

Wady mikroserwisów 

  • Trudności w łączeniu: musisz dokładnie zaplanować, jak połączyć wszystkie mikroserwisy i przesyłać dane z jednego miejsca do drugiego
  • Trudne testowanie: musisz przetestować każdy mikroserwis osobno, a potem sprawdzić łączność w skali całości 
  • Skomplikowane debugowanie: musisz przechodzić przez logi w każdym mikroserwisie
  • Kwestie bezpieczeństwa: musisz bardzo uważać na swoje API, bo często są źle skonfigurowane, a przez to podatne

Zalety modelu serverless

  • Zarządzanie serwerem to nie Twój problem: możesz skupić się na aplikacji zamiast na utrzymaniu serwera
  • Bezwysiłkowe skalowanie: serwer skaluje się w górę i w dół automatycznie
  • Płacisz za tyle, ile zużyjesz: płacisz tylko za wykorzystaną pojemność serwera, bez opłat za czas bezczynności
  • Bardzo szybkie wdrożenie: szybko zbudujesz nowe funkcje i od razu przetestujesz swoje pomysły

Wady modelu serverless

  • Trudne testowanie: trudno przewidzieć, jak kod zadziała po wdrożeniu, bo środowiska serverless nie da się realnie odtworzyć
  • Zimny start: po zakończeniu każdej funkcji zostaje ona w cache'u, ale nie na długo. Gdy uruchomisz ją ponownie, a nie będzie w cache'u, będzie musiała jeszcze raz odpowiedzieć na żądanie wywołania, co zajmuje trochę czasu
  • Mała elastyczność: wielu osobom trudno związać się na długo z jednym dostawcą środowiska serverless

Przykłady z życia 

Choć obie technologie są stosunkowo nowe, przyciągnęły już wiele firm. W końcu trudno powiedzieć „nie” szybkiemu wytwarzaniu i skalowaniu. 

 

Kto używa mikroserwisów

Serverless a mikroserwisy - kto używa serverless

Serverless vs mikroserwisy: najważniejsze wnioski 

Serverless i mikroserwisy to świetne technologie, jeśli chcesz szybko skalować, błyskawicznie dodawać nowe funkcje i obniżyć koszty. Serverless sprawdzi się w startupach i średnich firmach, a mikroserwisy w dużych organizacjach. Jeśli jednak połączysz oba podejścia, użyjesz ich także na poziomie enterprise. 

 

Chcesz zbudować swoją kolejną aplikację w tych dwóch technologiach? Śmiało odezwij się do Ideamotive! Pomożemy Ci znaleźć doświadczonych specjalistów od serverless i mikroserwisów, żebyś mógł ruszyć z miejsca.

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
Newsletter 9-1
Newsletter Ideamotive
Twój dwutygodniowy przegląd najgorętszych newsów technologicznych
CEE IT 2022

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

Białoruś • Polska • Rumunia • Ukraina

Czytaj teraz

Szukasz wyjątkowych specjalistów do swojego zespołu?

W naszej sieci czekają sprawdzeni programiści, projektanci, menedżerowie i konsultanci biznesowi.