co to jest aplikacja monolityczna?

pierwszy krok w drodze do przenoszenia monolitycznych aplikacji na Kubernetes

Kris Nova
Lut 2, 2018 · 4 min czytać

przez całą moją karierę w inżynierii oprogramowania jednym z najcenniejszych pytań, jakie nauczyłem się zadawać koledze, jest ” co dla ciebie znaczy $something?”. Zmusza to drugiego inżyniera do oceny konsekwencji użycia określonego słowa. Kontynuując pierwsze Przenoszenie aplikacji monolitycznych na Kubernetes, chciałem poświęcić kilka minut na rozmowę o tym, czym jest aplikacja monolityczna. A przynajmniej, co to dla mnie znaczy.

to ciekawa przestrzeń, która wymaga uwagi. Podczas gdy obsługa bezstanowej mikroserwisy na Kubernetes jest stosunkowo łatwa, obsługa dużej aplikacji stateful wciąż ma przed sobą długą drogę. Zrozumienie, czym jest aplikacja monolityczna, będzie pierwszym krokiem do ułatwienia procesu migracji.

aby zdefiniować monolityczną aplikację, musimy najpierw zrozumieć składniki aplikacji, na których nam zależy. Trzy komponenty, którymi jesteśmy zainteresowani, to interfejs użytkownika, warstwa dostępu do danych i magazyn danych.

interfejs użytkownika jest punktem wejścia aplikacji, a także punktem programu, z którym użytkownik będzie wchodził w interakcję. Może to być funkcja main (), strona internetowa, serwis internetowy lub różne inne punkty wejścia.

warstwa dostępu do danych to warstwa programu, która zawija magazyn danych. Zazwyczaj warstwa dostępu do danych poradzi sobie z problemami, takimi jak uwierzytelnianie za pomocą magazynu danych i dezynfekcja danych przed ich przechowywaniem.

magazyn danych jest najbardziej podstawową częścią systemu i jest odpowiedzialny za przechowywanie dowolnych informacji (danych) i ich pobieranie. Ten komponent jest zwykle tylko bazą danych.

te trzy komponenty tworzą bardzo powszechny typ aplikacji o nazwie aplikacja stanowa. Oznacza to, że aplikacja przechowuje i manipuluje danymi w czasie. Dlatego mówimy, że aplikacja ma stan. Co ważniejsze, stan aplikacji może się zmieniać w czasie.

w przypadku aplikacji monolitycznej często obserwujemy wiele warstw aplikacji ściśle ze sobą połączonych. W poniższym przykładzie widzimy, że interfejs użytkownika i warstwa dostępu do danych są zgrupowane razem. Zwykle odbywa się to za pośrednictwem dużego repozytorium kodu, a obie te warstwy będą prawdopodobnie zależeć od drugiej, aby była na miejscu, aby uruchomić. Ponadto interfejs użytkownika i warstwy dostępu do danych są zazwyczaj dołączane do tego samego procesu w czasie wykonywania. Oznacza to, że komunikują się w tym samym systemie, używając zasobów systemowych (pamięci i cykli obliczeniowych) do interakcji z innymi częściami systemu.

wręcz przeciwnie, aplikacja oparta na mikrousługach składałaby się z małych modułowych komponentów, które można łatwo wyłączyć. Oferuje to koncepcję kompozytowości dla operatora i jest znakiem, że pracujesz z mikroserwisami zamiast z monolityczną aplikacją. Poniższy przykład pokazuje elastyczną i modułową aplikację. Zauważ, że w tym modelu możemy uruchomić mniejsze komponenty niezależnie i użyć sieci do połączenia naszego systemu razem. Takie podejście jest znacznie bardziej skalowalne.

Co to jest aplikacja monolityczna? Jest to jednopoziomowa aplikacja, w której interfejs użytkownika i Kod dostępu do danych są połączone w JEDEN program na jednej platformie. Jest to również aplikacja, która uruchamia wiele komponentów w tym samym procesie, w tym samym systemie.

idąc dalej staramy się zrozumieć niuanse migracji monolitycznych aplikacji do Kubernetes i mamy nadzieję, że jest to cenny pierwszy krok w naszej podróży. Ponieważ proces ten jest stosunkowo nieudokumentowany, planujemy podzielić się zdobytymi doświadczeniami, aby każdy mógł skorzystać.



+