En förutsättning för att kunna utnyttja molnet fullt ut är att dina applikationer ska kunna flyttas till molnet. För att kunna göra detta krävs ofta att applikationerna moderniseras. Detta krävs då äldre typer av monolitiska applikationer har en helt annan struktur som innebär att de hade lång livslängd, uppdaterades sällan och ändringar som genomfördes påverkade ofta hela applikationen. Att lägga till nya funktioner krävde inte sällan en omkonfigurering av hela applikationsstacken.
Microservices
För att råda bot på detta utvecklades microservices-arkitekturen. Mikrotjänster delar upp en applikation i oberoende tjänster som också distribueras individuellt. Denna arkitektur gör det möjligt för varje tjänst att uppdateras utan att de andra tjänsterna i applikationen störs.
En mikrotjänst-arkitektur skapar ett mycket skalbart och distribuerat system. Microservices gör det lättare att bygga, optimera och underhålla applikationer. Det blir också enkelt att underhålla koden eftersom de olika mikrotjänsterna kan utvecklas i olika programmeringsspråk och använda olika databaser, så flaskhalsar undviks. Det gör också applikationerna stabilare, eftersom de kan fortsätta fungera även om en mikrotjänst faller ifrån eller kraschar. Det är då möjligt att ersätta den tjänsten med en annan mikrotjänst. Det går också att automatisera uppdateringar under livscykeln, så att berörda mikrotjänster byts ut eller uppdateras vid behov.
Från ett utvecklarperspektiv finns flera fördelar med mikrotjänster. Olika utvecklarteam kan arbeta oberoende av varandra på ett smidigt sätt. Det möjliggör också för utvecklare att jobba mer agilt och utvecklarna kan bli mer lyhörda för och snabbt svara upp mot verksamhetens behov.
För att få ut mesta möjliga ur sin arkitektur används en servicemesh. Det är ett tunt lager ovanpå tjänstelagret som möjliggör managerad, observerbar och säker kommunikation mellan de olika mikrotjänsterna. Det gör också att utvecklare och applikationsansvariga kan fokusera på att utveckla och ta hand om applikationen istället för att hantera ändringar och tillägg för varje enskild mikrotjänst.
Vidare brukar mikrotjänster delas upp i två olika typer, stateless och stateful. Stateless mikrotjänster sparar eller lagrar inte data. De hanterar en förfrågan och levererar ett svar. De använder ingen eller begränsat med lagring och det som lagras är temporärt. Stateful mikrotjänster kräver lagring. De läser från och skriver data i databaser. Den lagrade datan är kvar även när mikrotjänsten startas om. De flesta mikrotjänster delar dock inte samma databas med andra mikrotjänster, vilket gör det smidigare att byta ut eller migrera databaser.
Containrar
För att applikationer, baserade på mikrotjänster, ska kunna flyttas mellan olika miljöer paketeras de med hjälp av containrar. Containrar är ett enkel effektivt och standardiserat sätt att separera mikrotjänster från varandra.
Tanken med containrar är att de ska vara operativsystemsoberoende. De använder resurser effektivt och kan snabbt och enkelt skalas upp och ner. Containrar fungerar också sömlöst on-prem, i molnet eller i en hybridmiljö och kan enkelt flyttas mellan dessa olika miljöer.
Ackumulera inte mer teknisk skuld
Alla dessa delar krävs för att du ska kunna modernisera applikationer och flytta dem till molnet. Denna typ av modernisering gör din applikation ”cloud native”. Det kan te sig besvärligt och resurskrävande att modernisera applikationer, men faktum är att för varje dag som går utan modernisering ackumuleras en teknisk skuld. En investering i att modernisera och containerisera applikationer betalar sig ofta ganska snabbt. Det gör också att du snabbare kommer kunna vidareutveckla, uppdatera och få ut nya funktioner på marknaden. Många utvecklare föredrar också att arbeta i denna arkitektur. Och inte minst kan du utnyttja molnet fullt ut, vilket är en förutsättning för innovation idag.
Vill du veta mer om hur vi på CGI kan hjälpa dig? Läs mer eller kontakta mig.