{"id":78194,"date":"2022-06-06T11:11:29","date_gmt":"2022-06-06T09:11:29","guid":{"rendered":"https:\/\/fotc.com\/?p=78194"},"modified":"2023-11-22T12:37:03","modified_gmt":"2023-11-22T11:37:03","slug":"mikroserwisy","status":"publish","type":"post","link":"https:\/\/fotc.com\/pl\/blog\/mikroserwisy\/","title":{"rendered":"Czym s\u0105 mikroserwisy i gdzie si\u0119 je stosuje? Rewolucja czy standard?"},"content":{"rendered":"\n
Tradycyjna monolityczna struktura tworzenia aplikacji ju\u017c dawno przesta\u0142a si\u0119 sprawdza\u0107. Na fali popularno\u015bci technologii chmurowych zast\u0119puje j\u0105 architektura mikroserwis\u00f3w. Mikroserwisy znacz\u0105co usprawniaj\u0105 prac\u0119 developer\u00f3w, zwi\u0119kszaj\u0105 tempo wdro\u017ce\u0144 i u\u0142atwiaj\u0105 aktualizacje oprogramowania. <\/p>\n\n\n\n
Przez dekady oprogramowanie tworzono jako monolit, \u0142\u0105cz\u0105c wszystkie funkcje w jednym bloku kodu \u017ar\u00f3d\u0142owego. Powstaj\u0105ce aplikacje by\u0142y owocem prac licznego zespo\u0142u wsp\u00f3\u0142pracuj\u0105cych ze sob\u0105 developer\u00f3w. Takie podej\u015bcie sprawia, \u017ce wszystkie elementy s\u0105 ze sob\u0105 \u015bci\u015ble powi\u0105zane.<\/p>\n\n\n\n
Awaria jednego z nich mo\u017ce zatem zak\u0142\u00f3ci\u0107 prac\u0119 ca\u0142ego programu, a zesp\u00f3\u0142 IT nie jest w stanie szybko wykry\u0107 usterki. Podobny scenariusz jest mo\u017cliwy r\u00f3wnie\u017c podczas wprowadzania zmian w kodzie. Poprawki w jednej funkcji oznaczaj\u0105 konieczno\u015b\u0107 aktualizacji ca\u0142ej aplikacji, kt\u00f3ra staje si\u0119 chwilowo niedost\u0119pna. Na szcz\u0119\u015bcie da si\u0119 inaczej, dzi\u0119ki implementacji architektury mikroserwis\u00f3w.<\/p>\n\n\n\n
Wprowadzenie nowego paradygmatu tworzenia oprogramowania zak\u0142ada podzia\u0142 aplikacji na mniejsze niezale\u017cne komponenty. Oczywi\u015bcie nadal komunikuj\u0105 si\u0119 one ze sob\u0105, nawet je\u015bli wykorzystuj\u0105 r\u00f3\u017cne technologie. Ka\u017cdy z nich mo\u017cna rozwija\u0107 i modernizowa\u0107 bez potrzeby ingerencji w kompletny kod i aktualizacji ca\u0142ego programu. \u0141atwiejsze jest r\u00f3wnie\u017c testowanie takich modu\u0142\u00f3w i wdro\u017cenie na produkcj\u0119.<\/p>\n\n\n\n
W przypadku aktualizacji lub awarii u\u017cytkownik nie do\u015bwiadczy dotkliwych problem\u00f3w z niedost\u0119pno\u015bci\u0105 ca\u0142ej us\u0142ugi. Dzi\u0119ki architekturze mikroserwis\u00f3w zesp\u00f3\u0142 developer\u00f3w mo\u017ce pracowa\u0107 du\u017co wydajniej, skupiaj\u0105c si\u0119 wy\u0142\u0105cznie na obszarze obejmuj\u0105cym pojedyncz\u0105 funkcj\u0119. Wspomniane lu\u017ane powi\u0105zanie serwis\u00f3w umo\u017cliwia niezale\u017cny rozw\u00f3j funkcjonalno\u015bci.<\/p>\n\n\n\n
Pierwsze pr\u00f3by stawienia czo\u0142a wyzwaniom zwi\u0105zanym z monolitycznymi aplikacjami stanowi\u0142a architektura zorientowana na us\u0142ugi (SOA – Service Oriented Architecture). Szybko okaza\u0142o si\u0119, \u017ce do jej wdro\u017cenia wymaga si\u0119 wykorzystania tzw. szyny integracyjnej (ESB – Enterprise Service Bus). ESB mia\u0142a zadanie skomunikowa\u0107 ze sob\u0105 wszystkie mikroserwisy i szybko okaza\u0142a si\u0119 w\u0105skim gard\u0142em architektury SOA.<\/p>\n\n\n
Poznaj Kubernetesa od strony teoretycznej oraz praktycznej<\/p><\/div>\r\n
Prze\u0142om nadszed\u0142 wraz z technologi\u0105 konteneryzacji, kt\u00f3ra z poziomu niezale\u017cno\u015bci technologicznej przechodzi na poziom niezale\u017cno\u015bci infrastrukturalnej. Odizolowane, a jednak wsp\u00f3\u0142pracuj\u0105ce ze sob\u0105 zasobniki idealnie nadaj\u0105 si\u0119 do hostowania w dowolnym \u015brodowisku chmurowym. <\/p>\n\n\n\n
W \u015brodku takiego kontenera znajduje si\u0119 w\u0142a\u015bciwy kod aplikacji lub jej cz\u0119\u015bci, a do tego wymagane biblioteki, procesy, zale\u017cno\u015bci, pliki binarne oraz sam silnik s\u0142u\u017c\u0105cy do uruchomienia zawarto\u015bci zasobnika. Dzi\u0119ki oprogramowaniu do orkiestracji (przyk\u0142adowo Google Kubernetes Engine) zarz\u0105dzanie wi\u0119ksz\u0105 liczb\u0105 kontener\u00f3w nie stanowi ju\u017c tak du\u017cego wyzwania.<\/p>\n\n\n\n
Mocna zale\u017cno\u015b\u0107 od infrastruktury stanowi\u0142a do niedawna jedno z najwi\u0119kszych wyzwa\u0144 dla mikroserwis\u00f3w. Jednym z rozwi\u0105za\u0144 okaza\u0142a si\u0119 wspomniana konteneryzacja i narz\u0119dzia do orkiestracji \u015brodowiska kontener\u00f3w. Aby uwolni\u0107 si\u0119 od zale\u017cno\u015bci w zakresie infrastruktury sieciowej opracowano model Service Mesh, kt\u00f3ry pomaga w komunikacji mi\u0119dzy poszczeg\u00f3lnymi mikroserwisami. Developerzy mog\u0105 po\u015bwi\u0119ca\u0107 czas na tworzenie nowych funkcjonalno\u015bci, zamiast dopasowywa\u0107 projekt do wymaga\u0144 infrastruktury. <\/p>\n\n\n\n
Po wdro\u017ceniu na produkcj\u0119 aplikacj\u0119 musimy monitorowa\u0107 pod k\u0105tem ewentualnych problem\u00f3w. Dogl\u0105danie kondycji systemu w spos\u00f3b manualny mo\u017ce okaza\u0107 si\u0119 zbyt czasoch\u0142onne. St\u0105d zaleca si\u0119 wykorzystanie narz\u0119dzi do monitorowania, \u015bledzenia ruchu i sporz\u0105dzania log\u00f3w. Jeden z dobrych przyk\u0142ad\u00f3w stanowi platforma Prometheus.<\/p>\n\n\n\n
Jedna z podstawowych zalet korzystania z mikroserwis\u00f3w ujawnia si\u0119 w \u015brodowisku chmurowym. To zdecydowanie \u0142atwiejsze skalowanie poszczeg\u00f3lnych funkcji aplikacji niezale\u017cnie od siebie. Du\u017cy plus stanowi te\u017c brak uzale\u017cnienia od jednej technologii albo dostawcy. Projekt mo\u017ce zatem uwzgl\u0119dnia\u0107 szerokie portfolio rozwi\u0105za\u0144, kt\u00f3re najlepiej pasuj\u0105 do konkretnych zastosowa\u0144.<\/p>\n\n\n\n
Stworzenie aplikacji w architekturze mikroserwis\u00f3w pozwala podnie\u015b\u0107 jej og\u00f3ln\u0105 niezawodno\u015b\u0107. Aplikacja nie odm\u00f3wi pos\u0142usze\u0144stwa, nawet je\u015bli jedna z jej funkcji oka\u017ce si\u0119 wadliwie zaprojektowana lub natrafi na nieoczekiwane problemy. W przypadku bardziej z\u0142o\u017conych aplikacji mo\u017cliwe jest wykorzystanie zasad ci\u0105g\u0142ego wdra\u017cania (Continuous Deployment – CD) oraz ci\u0105g\u0142ej integracji (Continuous Integration).<\/p>\n\n\n\n
Mikroserwisy wydaj\u0105 si\u0119 najlepiej dostosowane do wykorzystania architektury typu serverless<\/a>. W niekt\u00f3rych zastosowaniach taki wyb\u00f3r pozwoli zaoszcz\u0119dzi\u0107 na kosztach infrastruktury, szczeg\u00f3lnie w projektach, kt\u00f3re dopiero startuj\u0105.<\/p>\n\n\n\n Z punktu widzenia zespo\u0142u developer\u00f3w pojedyncza us\u0142uga jest \u0142atwiejsza w zrozumieniu, bo jej kod jest odpowiednio mniejszy. Budowanie nowych funkcji, ich testowanie i wdro\u017cenie, jak r\u00f3wnie\u017c wprowadzenie nowej osoby do pracy nad aplikacj\u0105 staje si\u0119 prostsze.<\/p>\n\n\n\n Korzystasz z us\u0142ug GCP? A mo\u017ce dopiero rozwa\u017casz tak\u0105 decyzj\u0119? Do\u0142\u0105cz do naszej spo\u0142eczno\u015bci na Facebooku!<\/a> Google Cloud Platform Polska to grupa stworzona z my\u015bl\u0105 o wszystkich u\u017cytkownikach i entuzjastach Google Cloud Platform,<\/a> kt\u00f3ra pozwala na zdobywanie do\u015bwiadczenia i dzielenie si\u0119 wiedz\u0105 na temat narz\u0119dzi dost\u0119pnych w ramach tej us\u0142ugi.<\/p>\n","protected":false},"excerpt":{"rendered":" Tradycyjna monolityczna struktura tworzenia aplikacji ju\u017c dawno przesta\u0142a si\u0119 sprawdza\u0107. Na fali popularno\u015bci technologii chmurowych zast\u0119puje j\u0105 architektura mikroserwis\u00f3w. Mikroserwisy znacz\u0105co usprawniaj\u0105 prac\u0119 developer\u00f3w, zwi\u0119kszaj\u0105 tempo wdro\u017ce\u0144 i u\u0142atwiaj\u0105 aktualizacje oprogramowania. Przez dekady oprogramowanie tworzono jako monolit, \u0142\u0105cz\u0105c wszystkie funkcje w jednym bloku kodu \u017ar\u00f3d\u0142owego. Powstaj\u0105ce aplikacje by\u0142y owocem prac licznego zespo\u0142u wsp\u00f3\u0142pracuj\u0105cych ze sob\u0105…<\/p>\n","protected":false},"author":23,"featured_media":78195,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":3,"_editorskit_typography_data":[],"_editorskit_blocks_typography":"","_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}"},"categories":[560,275],"tags":[891,889,939,940],"yoast_head":"\n