
Hej 🙂
W przeszłości nie mieliśmy za bardzo możliwości skalowania frontendu naszej aplikacji, co wynikało z wielu powodów. Jeszcze kilka lat wstecz nie było takiej potrzeby, gdyż standardowym podejściem był gruby serwer, gdzie działała cała logika biznesowa, i cienki klient w celu wyświetlania wyników procesów przeprowadzanych na serwerze 🖥️

Rysunek. Mikrousługi z aplikacją jednostronicową
W ostatnich latach bardzo się to zmieniło. Użytkownicy chcą sprawniej poruszać się po platformach internetowych, włączając w to większą interaktywność i lepszą interakcję. Pojawiło się wiele firm oferujących swoje usługi, z których użytkownicy mogą korzystać po założeniu konta, i wiele osób dobrze je przyjęło. Dzisiaj nie jest już niczym nadzwyczajnym oglądanie filmów na życzenie zamiast zwykłych kanałów telewizyjnych, słuchanie muzyki przez aplikację zamiast kupowania płyt CD czy zamawianie jedzenia za pomocą aplikacji mobilnej zamiast dzwonienia do restauracji 💿📲
Ta zmiana zachowań wymaga od nas ulepszania aplikacji, by użytkownikowi korzystało się z niej jak najlepiej. Dodatkowo musimy zapewnić, by w naszej aplikacji użytkownik mógł zrobić to, co chce, nie napotykając przy tym na problemy i bez zapominania o wysokiej jakości zawartości oraz usługach. W przeszłości nasze podejście opierałoby się na podzieleniu aplikacji na części i umieszczeniu ich w dzielonej bibliotece z komponentami, wyciągnięciu pewnej logiki biznesowej i umieszczeniu jej w innych bibliotekach, by mogły być używane przez różne części aplikacji. Ogólnie staralibyśmy się używać ponownie jak najwięcej kodu.
Nie jestem przeciwny rozwiązaniom, które wciąż działają i doskonale pasują do wielu projektów, ale musimy się zmierzyć ze sporą liczbą wyzwań, gdy chcemy je zastosować. Na przykład jeśli mamy średniej wielkości lub duży zespół programistów, wszystkie zasady stosowane dla bazy kodu są często ustalane tylko raz, po czym trzymamy się ich przez wiele miesięcy, a nawet lat, ponieważ zmiana jednej decyzji wiązałaby się z dużym nakładem pracy, która musiałaby być wykonana na całej bazie kodu, co byłoby dużym kosztem dla organizacji. Ponadto wiele decyzji podejmowanych podczas programowania mogłoby wynikać z braku czasu, dążenia do doskonałej spójności lub po prostu z lenistwa. Musimy mieć świadomość, że biznes związany z technologią cały czas się rozwija i nie można tego uniknąć 👨🏫
Wydzielanie kodu także nie jest panaceum i często przedwczesne dzielenie kodu w celu wielokrotnego użycia powoduje więcej problemów, niż przynosi korzyści. Często widziałem, jak wydzielanie kodu sprawiało, że kod stawał się tysiąc razy bardziej skomplikowany, niż to było konieczne, a ten sam kod był używany tylko dwa razy w całym projekcie. Wielu programistów ma skłonność do tworzenia zawiłych rozwiązań z myślą, że użyją ich ponownie dziesiątki, o ile nie setki razy, a tak naprawdę będą mieli tylko kilka okazji do ich zastosowania. Używanie bibliotek w wielu projektach i przez wiele zespołów może prowadzić do większej liczby problemów niż korzyści, a w efekcie trzeba podjąć wysiłek przeprowadzania testów manualnych lub prowadzenia intensywnej wymiany informacji.
Musimy również wziąć pod uwagę frontend monolityczny. Takie podejście nie pozwala na udoskonalanie naszej architektury w dłuższej perspektywie czasowej, szczególnie jeśli pracujemy na platformach, które mają być dostępne dla naszych użytkowników przez wiele lat, lub jeśli mamy zespoły pracujące w różnych strefach czasowych.
Wymaganie od biznesu częstej zmiany technologii będzie się wiązać z dużymi kosztami na długo przed widocznymi rezultatami. Pojawia się więc oczywiste pytanie: czy jest możliwość korzystania z dobrze znanego wzorca lub architektury, które pozwalałyby na szybkie dodawanie nowych funkcjonalności, rozwijanie produktu wraz z biznesem i niezależne dostarczanie części aplikacji bez konieczności ponownej publikacji całej usługi?
Wyobrażam sobie coś na kształt poniższego rysunku:

Rysunek. Połączenie kilku mikroarchitektur. To ogólny zarys tego, jak mikrousługi i mikrofrontendy mogą ze sobą współpracować
Odpowiedź brzmi: tak, z całą pewnością możemy to zrobić i tutaj z pomocą przychodzą mikrofrontendy. Ta architektura nabiera sensu w przypadku średnich i dużych firm 📇
Chcesz odkryć, jak z powodzeniem tworzyć mikrofrontendowe architektury?
Zrozum zasady leżące u podstaw mikrofrontendów, by lepiej radzić sobie w fazie tworzenia projektów! ⌨️