Streszczenie:
Tematem pracy było projektowanie systemów informatyczny na podstawie
architektury mikroserwisów. We wprowadzeniu postawiono hipotezę, że można skutecznie
stworzyć system oparty na mikroserwisach z pominięciem tworzenia systemu-monolitu.
Hipoteza ta jest przeciwieństwem do powszechnie panującej opinii o mikroserwisach, że jest
to narzędzie przeznaczone wyłącznie dla dużych systemów, które osiągnęły duży stopień
dojrzałości jako systemy-monolity i potrzebują specjalnych rozwiązań w celu zwiększenia
dostępności i zapewnienia wysokiej stabilności.
Pracę podzielono na trzy rozdziały, w pierwszym rozdziale opisano pochodzenie
terminu mikroserwisy, skupiając się na dzieleniu systemów-monolitów na usługi oraz
przedstawiono koncepcje związane z wdrażaniem mikroserwisów w organizacjach. Zawarto
informacje na temat historii i szczegółów dotyczących architektury opartej na
mikroserwisach, na podstawie doświadczeń dużych firm, takich jak Netflix, eBay, Disney,
Amazon, Gilt czy SoundCloud. W rozdziale drugim opisano prace projektowania
przykładowego systemu z myślą o implementacji przy użyciu mikroserwisów. Proces
projektowania został przeprowadzony przy użyciu metodyki Domain-Driven Design.
Sprawozdaniem z implementacji systemu jest rozdział numer trzy, w którym opisano wybór
technologii użytych przy implementacji. Przedstawiono kluczowe przykłady kodu
źródłowego oraz wyniki przeprowadzonych testów wydajnościowych mających na celu
sprawdzenie skuteczności stworzonej implementacji. W systemie wykorzystano
wieloparadygmatowy język programowania Go, dokumentową bazę danych MongoDB oraz
oprogramowanie do konteneryzacji Docker w trybie Docker Swarm. Do przeprowadzenia
testów wykorzystano napisane w języku Python narzędzie Locust.
W zakończeniu stwierdzono, że mikroserwisy mogą być skutecznie używane do
implementacji mniejszych systemów i zawyrokowano, że architektura oparta na
mikroserwisach jest godną alternatywą dla podejścia monolitycznego niezależnie od
wielkości tworzonego systemu. Stwierdzono również, że ostateczny wybór zawsze powinien
być podyktowany charakterystyką problemu, który próbuje się rozwiązać dzięki danej
implementacji. Pracę zamyka spis wykorzystanych źródeł zawierający głównie publikacje
poświęcone tematyce mikroserwisów oraz przemówienia pracowników firm, w których
stworzono implementacje systemów opartych na mikroserwisach.