Introduktion till molnbaserade program

Dricks

Det här innehållet är ett utdrag från eBook, Architecting Cloud Native .NET Applications for Azure, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

En annan dag, på kontoret, arbetar på "nästa stora sak.".

Din mobiltelefon ringer. Det är din vänliga rekryterare - den som ringer dagligen med spännande nya möjligheter.

Men den här gången är det annorlunda: Start-up, equity och massor av finansiering.

Omnämnandet av molnet, mikrotjänster och den senaste tekniken driver dig över gränsen.

Spola fram några veckor och du är nu ny medarbetare i en designsession som utformar ett stort e-handelsprogram. Du kommer att konkurrera med de ledande e-handelswebbplatserna.

Hur ska du bygga den?

Om du följer vägledningen från de senaste 15 åren kommer du troligen att skapa systemet som visas i bild 1.1.

Traditional monolithic design

Bild 1-1. Traditionell monolitisk design

Du skapar ett stort kärnprogram som innehåller all domänlogik. Den innehåller moduler som identitet, katalog, beställning med mera. De kommunicerar direkt med varandra i en enda serverprocess. Modulerna delar en stor relationsdatabas. Kärnan exponerar funktioner via ett HTML-gränssnitt och en mobilapp.

Grattis! Du har precis skapat ett monolitiskt program.

Allt är inte dåligt. Monoliter erbjuder vissa distinkta fördelar. De är till exempel enkla att...

  • build
  • test
  • deploy
  • Felsöka
  • lodrätt skalning

Många lyckade appar som finns idag skapades som monoliter. Appen är en hit och fortsätter att utvecklas, iteration efter iteration och lägger till fler funktioner.

Vid något tillfälle börjar du dock känna dig obekväm. Du förlorar kontrollen över programmet. När tiden går blir känslan mer intensiv, och du går så småningom in i ett tillstånd som Fear Cyclekallas :

  • Appen har blivit så överväldigande komplicerad att ingen enskild person förstår den.
  • Du är rädd för att göra ändringar - varje ändring har oavsiktliga och kostsamma biverkningar.
  • Nya funktioner/korrigeringar blir knepiga, tidskrävande och dyra att implementera.
  • Varje version blir så liten som möjligt och kräver en fullständig distribution av hela programmet.
  • En instabil komponent kan krascha hela systemet.
  • Nya tekniker och ramverk är inte ett alternativ.
  • Det är svårt att implementera agila leveransmetoder.
  • Arkitekturerosion sätter in när kodbasen försämras med oändliga "snabbkorrigeringar".
  • Slutligen kommer konsulterna in och säger åt dig att skriva om det.

Låter det bekant?

Många organisationer har tagit itu med den här monolitiska skräckcykeln genom att använda en molnbaserad metod för att skapa system. Bild 1–2 visar samma system som skapats med molnbaserade tekniker och metoder.

Cloud-Native Design

Bild 1-2. Molnbaserad design

Observera hur programmet delas upp i en uppsättning små isolerade mikrotjänster. Varje tjänst är fristående och kapslar in sin egen kod, sina data och beroenden. Var och en distribueras i en programvarucontainer och hanteras av en containerorkestrerare. I stället för en stor relationsdatabas äger varje tjänst ett eget datalager, vars typ varierar beroende på databehoven. Observera hur vissa tjänster är beroende av en relationsdatabas, men andra på NoSQL-databaser. En tjänst lagrar sitt tillstånd i en distribuerad cache. Observera hur all trafik dirigerar via en API Gateway-tjänst som ansvarar för att dirigera trafik till kärntjänsterna för serverdelen och framtvinga många övergripande problem. Det viktigaste är att programmet drar full nytta av funktionerna för skalbarhet, tillgänglighet och återhämtning som finns i moderna molnplattformar.

Molnbaserad databehandling

Hmm... Vi använde bara termen Cloud Native. Din första tanke kan vara, "Vad exakt betyder det?" En annan bransch buzzword kokas ihop av programvaruleverantörer att marknadsföra mer saker?"

Lyckligtvis är det mycket annorlunda, och förhoppningsvis kommer den här boken att hjälpa till att övertyga dig.

Inom kort har molnbaserat blivit en drivande trend inom programvaruindustrin. Det är ett nytt sätt att bygga stora, komplexa system. Metoden drar full nytta av moderna metoder för programvaruutveckling, teknik och molninfrastruktur. Molnbaserat ändrar hur du utformar, implementerar, distribuerar och operationaliserar system.

Till skillnad från den kontinuerliga hype som driver vår bransch är molnbaserat på riktigt. Överväg Cloud Native Computing Foundation (CNCF), ett konsortium med över 400 större företag. Dess stadga är att göra molnbaserad databehandling allestädes närvarande i teknik- och molnstackar. Som en av de mest inflytelserika grupperna med öppen källkod är den värd för många av de snabbast växande öppen källkod projekt i GitHub. Dessa projekt omfattar Kubernetes, Prometheus, Helm, Envoy och gRPC.

CNCF främjar ett ekosystem med öppen källkod och leverantörsneutralitet. Efter det här exemplet presenterar den här boken molnbaserade principer, mönster och metodtips som är teknikagnostiska. Samtidigt diskuterar vi de tjänster och den infrastruktur som är tillgänglig i Microsoft Azure-molnet för att konstruera molnbaserade system.

Så, vad exakt är Cloud Native? Luta dig tillbaka, slappna av och låt oss hjälpa dig att utforska denna nya värld.