Plattformsmigrering
Kubernetes, ett modeord?
Efter att i åratal ha studerat vår plattform, satt oss in i Googles metoder för Site Reliability Engineering och experimenterat med deras verktyg bestämde vi att Kubernetes, baserat på Googles Borg-distributionsarkitektur, var bäst lämpat för nästa iteration av vår Lighthouse.
Vad är Kubernetes?
Kubernetes är en teknik med öppen källkod baserad på Googles interna Borg-arkitektur, som de använde internt i många år och som senare släpptes offentligt. Det är teknik i absoluta framkant som utnyttjar kraften i containerorkestrering.
Containerorkestrering är ett laddat begrepp, men även om det är komplext är det inte krångligt att förstå.
Låt oss börja med byggstenarna:
En container innehåller endast den mjukvara och de beroenden du behöver för att få igång din applikation. Det betyder att din mjukvara körs i sin egen miljö utan att behöva ladda ner eller importera externa beroenden. Detta liknar en virtuell maskin, förutom att den bara innehåller det den behöver och därför är lätt och enkel.
Slutsatsen är: om det fungerar på min dator så fungerar det på din dator, eftersom containern tillhandahåller allt som behövs på egen hand.
Var kör vi våra containrar?
Vanligtvis behöver containrar sina egna miljöer att köra i. Om du utvecklar på en enda maskin körs applikationen vanligtvis i något som Docker. Men om du vill köra flera avbildningar på flera noder eller ett kluster är Kubernetes det föredragna alternativet.
Kubernetes är det mest flexibla alternativet eftersom hela konfigurationen (inte bara containrarna), miljön, applikationskonfigurationerna och nätverkskonfigurationerna alla kan definieras som kod.
Varför är detta bra?
Genom att lagra våra konfigurationer som kod kan vi ha en enda källa till sanning och lagra våra konfigurationer i Git. Det gör att vi kan driftsätta ändringar mycket enklare, säkrare och med mer fart och effektivitet.
Det ger oss många fördelar:
Skalbarhet: vi kan enkelt skala upp och vår last kan fördelas över många noder, vilket förbättrar prestandan
Tillgänglighet: detta hänger också ihop med tillförlitlighet, för om en pod eller container inte fungerar eller om noden dör finns det andra containrar kvar som tar över lasten
Enkelhet: det passar perfekt in i vår arbetsmodell med extreme programming och continuous delivery, som fokuserar på små iterativa ändringar
Kontroll: att ha allt i kod gör det enkelt att styra hur och var det körs
Observerbarhet: vi får mer insikt i hur och var det körs, och eftersom vi lever av att leverera insikter förs den information vi samlar in vidare till vår produkt och berikar den information vi tillhandahåller
Teknik: eftersom vi har bättre åtkomst och allt är förenklat blir det enklare för oss att integrera med nya banbrytande tekniker som maskininlärning, big data, AI och vad som nu än är på väg.
Detta är inte heltäckande, men illustrerar på ett litet sätt den kraft som blir tillgänglig genom att anamma denna teknik allt eftersom vi växer tillsammans mot en mer tillförlitlig framtid.