Hva er en monolitisk applikasjon?

det første trinnet i reisen til å flytte monolitiske apper til Kubernetes

Kris Nova
Feb 2, 2018 * 4 min lese

Gjennom min karriere innen programvareutvikling er et av de mest verdifulle spørsmålene jeg har lært å spørre en kollega, «Hva betyr $noe for deg?». Det tvinger den andre ingeniøren til å evaluere deres implikasjoner av å bruke et bestemt ord. Etter å ha fulgt opp de Første Bevegelige Monolitiske Applikasjonene Til Kubernetes call, ønsket jeg å tilbringe noen minutter å snakke om hva en monolitisk applikasjon er. Eller i det minste hva det betyr for meg.

dette er en interessant plass som trenger litt oppmerksomhet. Mens det er relativt enkelt å drive en statsløs mikroservice på Kubernetes, har det fortsatt en lang vei å gå å drive en stor stateful applikasjon. Å forstå hva en monolitisk applikasjon er, vil være det første trinnet i å gjøre migrasjonsprosessen enklere.

for å definere en monolitisk applikasjon må vi først forstå komponentene i et program som vi bryr oss om. De tre komponentene vi er interessert i vil være brukergrensesnittet, datatilgangslaget og datalageret.

brukergrensesnittet er inngangspunktet til applikasjonen, og er også poenget med programmet som en bruker vil samhandle med. Dette kan være en hovedfunksjon (), nettside, webtjeneste eller andre inngangspunkter.

datatilgangslaget er laget av programmet som vil pakke inn et datalager. Vanligvis vil datatilgangslaget håndtere bekymringer som godkjenning med et datalager og sanitisering av data før det vedvarer i datalageret.

datalageret er den mest grunnleggende delen av systemet, og er ansvarlig for å lagre vilkårlig informasjon (data) og hente den. Denne komponenten er vanligvis bare en database.

Disse tre komponentene utgjør en svært vanlig type program kalt en stateful søknad. Hvilket betyr at programmet lagrer og manipulerer data over tid. Derfor sier vi at soknaden har staten. Enda viktigere, at tilstanden til søknaden kan endres over tid.

i tilfelle av en monolitisk applikasjon, observerer vi ofte flere lag av applikasjonen tett koblet sammen. I eksemplet nedenfor kan vi se at brukergrensesnittet og datatilgangslaget er gruppert sammen. Dette gjøres vanligvis via et stort kodelager, og begge disse lagene vil trolig avhenge av at den andre er på plass for å kunne kjøre. Videre er brukergrensesnittet og datatilgangslagene vanligvis samlet inn i samme prosess under kjøring. Det betyr at de kommuniserer på samme system, ved hjelp av systemressurser (minne og beregningssykluser) for å samhandle med andre deler av systemet.

tvert imot vil en mikroservicebasert applikasjon bestå av små modulære komponenter som lett kan slås ut. Dette gir et konsept for komposisjonalitet for en operatør og er et tegn på at du jobber med mikrotjenester i stedet for en monolitisk applikasjon. Eksemplet nedenfor viser en fleksibel og modulær applikasjon. Merk at i denne modellen kan vi kjøre de mindre komponentene uavhengig og bruke et nettverk for å koble systemet sammen. Denne tilnærmingen er mye mer skalerbar.

Så hva er en monolitisk applikasjon? Det er et enkelt-lags program der brukergrensesnittet og datatilgangskoden kombineres til et enkelt program på en enkelt plattform. Det er også et program som kjører flere komponenter i samme prosess, på samme system.

Fremover søker vi å forstå nyansene for å migrere monolitiske applikasjoner Til Kubernetes, og håper dette er et verdifullt første skritt i vår reise. Siden prosessen er relativt udokumentert, planlegger vi å dele erfaringene, slik at alle kan dra nytte av det.



+