det första steget i resan till att flytta monolitiska appar till Kubernetes
under hela min karriär inom mjukvaruutveckling är en av de mest värdefulla frågorna jag har lärt mig att ställa en kollega ”Vad betyder $något för dig?”. Det tvingar den andra ingenjören att utvärdera deras konsekvenser av att använda ett visst ord. Efter att ha följt upp de första rörliga monolitiska applikationerna till Kubernetes-samtalet ville jag spendera några minuter på att prata om vad en monolitisk applikation är. Eller åtminstone vad det betyder för mig.
detta är ett intressant utrymme som behöver lite uppmärksamhet. Det är relativt enkelt att använda en statslös mikroservice på Kubernetes, men att använda en stor statlig applikation har fortfarande en lång väg att gå. Att förstå vad en monolitisk applikation är kommer att vara det första steget för att underlätta migrationsprocessen.
för att definiera en monolitisk applikation måste vi först förstå komponenterna i en applikation som vi bryr oss om. De tre komponenterna vi är intresserade av kommer att vara användargränssnittet, dataåtkomstskiktet och datalagret.
användargränssnittet är ingångspunkten för applikationen och är också punkten för programmet som en användare kommer att interagera med. Detta kan vara en huvudfunktion (), webbplats, webbtjänst eller olika andra ingångspunkter.
dataåtkomstskiktet är lagret i programmet som kommer att paketera ett datalager. Vanligtvis hanterar dataåtkomstskiktet problem som autentisering med ett datalager och sanering av data innan det kvarstår i datalagret.
datalagret är den mest grundläggande delen av systemet och ansvarar för att lagra godtycklig information (data) och hämta den. Denna komponent är vanligtvis bara en databas.
dessa tre komponenter utgör en mycket vanlig typ av applikation som kallas en statlig applikation. Vilket innebär att applikationen lagrar och manipulerar data över tiden. Därför säger vi att ansökan har tillstånd. Ännu viktigare är att applikationens tillstånd kan förändras över tiden.
vid en monolitisk applikation observerar vi vanligtvis flera lager av applikationen tätt kopplade ihop. I exemplet nedan kan vi se att användargränssnittet och dataåtkomstskiktet är grupperade tillsammans. Detta görs vanligtvis via ett stort kodförråd, och båda dessa lager kommer troligen att bero på att den andra är på plats för att kunna köras. Dessutom är användargränssnittet och dataåtkomstlagren vanligtvis buntade i samma process vid körning. Det betyder att de kommunicerar på samma system med hjälp av systemresurser (minnes-och beräkningscykler) för att interagera med andra delar av systemet.
tvärtom skulle en mikroservicebaserad applikation bestå av små modulära komponenter som enkelt kan kopplas ut. Detta erbjuder ett koncept för komposterbarhet för en operatör och är ett tecken på att du arbetar med mikrotjänster istället för en monolitisk applikation. Exemplet nedan visar en flexibel och modulär applikation. Observera att vi i den här modellen kan köra de mindre komponenterna oberoende och använda ett nätverk för att ansluta vårt system tillsammans. Detta tillvägagångssätt är mycket mer skalbart.
så vad är en monolitisk applikation? Det är en enstegsprogramvara där användargränssnittet och dataåtkomstkoden kombineras till ett enda program på en enda plattform. Det är också ett program som kör flera komponenter i samma process, på samma system.
framåt försöker vi förstå nyanserna för att migrera monolitiska applikationer till Kubernetes, och hoppas att detta är ett värdefullt första steg i vår resa. Eftersom processen är relativt odokumenterad planerar vi att dela lärdomarna, så att alla kan dra nytta av det.