Som du säkert redan gissat har gitops att göra med Github och versionshanteringssystemet git, och även om du inte hört ordet gitops tidigare är det inte osannolikt att du redan använder det. Åtminstone delvis.
Vad är då gitops och behöver vi verkligen ett nytt modeord inom mjukvaruutveckling? Gitops är inte nödvändigtvis något nytt utan utgör snarare en logisk kulmen för några olika trender inom utveckling, utrullning och produktion, som tillsammans skapar ett nytt sätt att arbeta med synergier, skriver TheNextWeb.
Ordet gitops har myntats av Alexis Richardson på Weaveworks där de arbetar mycket med infrastruktur baserat på Kubernetes, ett system för virtuella applikationsbehållare. Men gitops handlar om mycket mer än endast Kubernetes; det är mer en filosofi kring utveckling och utrullning av mjukvara som kan tillämpas av alla organisationer som kör sin egen kod, på sin egen infrastruktur med sina egna konfigurationer.
Den viktigaste principen i gitops är att versionshanteringssystemet git är den "enda källan till sanning” för både kod och konfigurationer, såväl som för infrastrukturen. Detta betyder att git alltid har rätt. Git har sista ordet, och du kan förstå hela systemet genom att kolla i git, och bara i git. Allt du behöver finns där. Allt är ju kod.
Ingredienserna i gitops inkluderar applikationskoden, naturligtvis, och även kod i form av bibliotek och ramverk som applikationerna använder. Men där finns också annan typ av kod. Konfigurationer, till exempel, som tidigare placerades i databaser, skrivs idag ofta som YAML-kod och placeras i git-repos.
I många fall definieras till och med infrastrukturen som kod, vare sig det gäller virtuella servrar, docker-avbildningar eller kubernetes-kluster. Summa summarum är all denna kod tillräcklig för att beskriva hela systemet - från applikationskod till infrastruktur och drift, från Dev till Ops fast förankrat i git.
Det som verkligen får saker i gitops att hända är att automatiserade verktyg för testning, bygg och utrullning tar över CI/CD-processen (Continuous Integration and Continuous Delivery), och litar på "sanningen” i git-repon för att skapa hela systemet – att skapa infrastrukturen utifrån kod, som kör applikationskoden enligt instruktionerna i konfigurationskoden.
Gitops är att hela systemet är komplett beskrivet och deklarerat som kod i git och skapas automatiskt enligt de instruktionerna. Det är en metod som skär bort "dökött” och låter utvecklare fokusera på koden, och bara på koden.
Det finns även praktiska fördelar med gitops, som att alla förändringar utförs genom att förändra i git-repon genom förfrågningar (pull request), vilket betyder att det alltid finns revisioner, reversibilitet och transparens. Det finns inga konstiga inställningar någonstans som någon råkat ändra av misstag, och ingen känner till. Om någonting inte funkar finns svaret någonstans i repon. Om en utvecklare vill ändra en inställning görs det i YAML-koden och lägger in en förfrågan för granskning, och det finns en commit-historik.
Men alla metoder har förstås sina utmaningar. Gitops blir väldigt direkt i det att all kod som accepteras i repon trycks automatiskt till produktion och leder till förändringar som direkt påverkar applikationen. Det betyder att utvecklarna måste ändra taktik för att fånga upp buggar och misstag, helst innan koden accepteras. Å andra sidan är det bra att buggar hittas på ett tidigare stadium.
De som jobbar med gitops använder sig ofta av mindre utrullningar för att testa ny kod på en begränsad grupp användare. Gitops kan vara "känsligare” på så sätt att utvecklare måste vara mer försiktiga med hur de sammanfogar nya koddelar som potentiellt kan vara skadliga för applikationen. Automatiska CI/CD-verktyg testar ofta applikationskoden, men det kan räcka med ett fel i konfigurationskoden i en YAML-fil för att saker kan gå sönder.
Gitops är måhända ännu inte en utbredd metod, speciellt om man inte arbetar med Kubernetes och liknande behållare, men många jobbar med delar av konceptet redan idag. Många använder redan git som samlingsplats för "den enda sanna koden", andra kanske har flyttat all sin konfiguration till YAML eller använder någon form av automatisk CI/CD. När allt detta konvergerar, och verktygen blir en smula bättre, har du i realiteten gitops.
Läs också:
Alla pratar om devops – men vad är det egentligen?
KTH-forskare har byggt en bot som patchar kod lika bra som en människa
EU ger grönt ljus för Microsofts köp av Github