GitHub kondigde eerder deze maand aan dat het de servers gaat overzetten naar Azure-servers van moederbedrijf Microsoft. Momenteel gebruikt het ontwikkelaarsplatform nog eigen hardware in de Amerikaanse staat Virginia. De migratie kan tot twee jaar duren. Is dat niet heel erg lang voor een 'simpele' migratie van servers?
Voor onze eigen bofh Kees Hoekzema, die de Tweakers-servers zelf in beheer heeft, komt de opgegeven tijdsduur niet als een verrassing. Natuurlijk hebben we geen direct inzicht in de serverstructuur van GitHub, maar Kees kan wel een goed beeld schetsen van hoeveel werk er bij een servermigratie kan komen kijken.
Zeker bij de migratie van een groot platform als GitHub komt volgens Kees veel kijken. Bij een eenvoudige applicatie is het mogelijk om de applicatie eerst in de cloud op te bouwen zonder dat gebruikers erbij kunnen. De beheerders kunnen de applicatie testen en controleren of alles werkt. Vervolgens maken zij de datasynchronisatie, beveiliging en prestaties in orde en zorgen zij dat alles parallel kan draaien. Daarna wordt de overstap definitief gemaakt.
Bij ingewikkelde applicaties, zoals GitHub, voeren beheerders de migratie vaker per onderdeel uit. Op die manier kunnen beheerders snel terug naar de vorige, werkende situatie als er werkelijk iets misgaat. Dat maakt de migratie veiliger en zorgt voor minder downtime, maar zorgt ook voor een langzamere overstap.
Elk van die onderdelen van GitHub, waaronder functies zoals zoeken en gebruikersbeheer, draait op zijn eigen code. In theorie moet die software zo geschreven zijn dat het geen probleem is om deze over te zetten. Dat kan onder meer door gebruik te maken van configuratiebestanden in plaats van statische waarden, DNS in plaats van harde aannames over IP-adressen en abstracte lagen, waarbij een bepaalde laag verantwoordelijk is voor een aspect van het systeem zonder afhankelijkheden van de rest van het systeem. In de praktijk werkt dat vaak echter anders en moeten er toch zaken in de code worden herschreven of gefixt.
Rehost, replatform, refactor of rebuild?
De snelste manier van migreren is een zogenoemde lift and shift. Dit wordt door Microsoft een rehost genoemd. Daarbij wordt de infrastructuur vrijwel zonder veranderingen gemigreerd naar de cloud. Virtual machines en iaas worden overgezet naar iaas en paas naar paas. Deze migratie is volgens Microsoft snel en met minimale aanpassingen te doen en is geschikt voor workloads die stabiel zijn en geen directe modernisering nodig hebben. Ook een lift and optimize of replatform kan redelijk snel. Hierbij wordt de workload verhuisd naar een moderne hostingomgeving met minimale codewijzigingen om gebruik te maken van de voordelen van paasoplossingen.
Het is mogelijk dat een van deze strategieën onderdeel van het migratieproces vormt. Uiteindelijk zal GitHub waarschijnlijk echter een (gedeeltelijke) refactor, rearchitect of rebuild willen doen. Bij een refactor wordt code opgeschoond, waardoor hij efficiënter is en beter gebruik kan maken van de voordelen van de Azure-omgeving. Deze strategie beoogt de technische schuld, de 'schuld' die beheerders opbouwen door snelle oplossingen te kiezen in plaats van meer complexe, structurele oplossingen die langer duren om te schrijven, te verminderen.
Een rearchitect richt zich op het herontwerpen van de volledige architectuur om gebruik te maken van cloudnative mogelijkheden. De bestaande code wordt aangepast en geoptimaliseerd om de applicatie schaalbaarder, performanter en flexibeler te maken. Het geraamte van de huidige applicatie blijft nog wel staan, maar wordt drastisch vernieuwd.
Een rebuild is nog arbeidsintensiever: het platform wordt hierbij volledig herbouwd. GitHub ontstond in 2008 en de oprichters zullen toen geen rekening hebben gehouden met hoe het platform uiteindelijk zou groeien. Chief technology officer Vladimir Fedorov liet in een interne memo ook doorschemeren dat de schaalbaarheid van de huidige infrastructuur, die volledig draait op een datacenter in de Amerikaanse staat Virginia, beperkt is. Mogelijk is deze met een rearchitect te moderniseren, maar als dat niet het geval is, moet Microsoft het platform compleet opnieuw opbouwen.
Deze oplossingen kunnen eventueel in elkaar overlopen. Zo kunnen beheerders ervoor kiezen om eerst een rehost of replatform te doen om het platform zo snel mogelijk in een Azure-omgeving te laten draaien. Daarna worden tijdens een refactor alvast de technische schuld verminderd en de prestaties verbeterd met relatief kleine codewijzigingen. De beheerders krijgen in dat proces vaak ook meer inzicht in de beperkingen van de architectuur. Mochten zij die beperkingen als te zwaar beoordelen, dan kunnen zij alsnog kiezen voor een rearchitect of, als blijkt dat de huidige architectuur niet te moderniseren is, een rebuild.
Welke strategie Microsoft met GitHub gaat toepassen, is moeilijk te zeggen zonder inzicht in de architectuur. Bovendien zal dat nog verschillen per onderdeel. Een complete rebuild lijkt echter onwaarschijnlijk, aangezien GitHub in 2021 besloot over te stappen van een monolitharchitectuur naar microservices. Bij een monolitharchitectuur is de applicatie opgebouwd als één eenheid, terwijl deze bij microservices bestaat uit meerdere kleine, onafhankelijke inzetbare diensten. Een monolith is in principe makkelijker te beheren, omdat de hele applicatie een enkele codebase is. Deze architectuur is echter minder schaalbaar en flexibel. Diensten kunnen niet afzonderlijk worden geschaald, teams moeten allemaal dezelfde programmeertaal en databases gebruiken en applicaties kunnen vaak niet onafhankelijk worden gedebugd. Microservices zijn schaalbaarder, flexibeler en kennen minder afhankelijkheden, waardoor het onwaarschijnlijk lijkt dat het platform geheel opnieuw opgebouwd moet worden.
Tientallen petabytes aan data
Ook het overzetten van de grote hoeveelheid data zal de nodige tijd kosten. In 2022 schreef GitHub dat het 18,6PB aan data had opgeslagen. Dat zal in de tussentijd niet minder zijn geworden. Zelfs met een snelle verbinding duurt het waarschijnlijk maanden voordat alle Git-data van de ene naar de andere omgeving is overgezet.
Tot slot zal GitHub ook een tijdsmarge hebben ingebouwd. Dat schemerde al door in de verklaringen van chief technology officer Vladimir Fedorov. Hij wil binnen twee jaar volledig over zijn, maar zes maanden daarvan vormen een 'buffer' voor eventuele vertragingen. Binnen twaalf maanden moet het grootste deel van de overstap al voltooid zijn. Daarmee blijft het een grote overstap, maar het is niet waarschijnlijk dat de engineers van GitHub diep in 2027 nog beginnen aan de overgang van de zoekfunctionaliteit van GitHub naar Azure.
Een woordvoerder van GitHub geeft in een reactie aan Tweakers aan dat de migratie naar Azure nodig is om de 'explosieve groei in ontwikkelaarsactiviteiten en AI-gestuurde workflows bij te benen'. "Deze migratie zorgt ervoor dat GitHub het snelle en betrouwbare platform blijft waar ontwikkelaars op vertrouwen, terwijl we tegelijkertijd in staat zijn om meer te bouwen, meer te leveren en onbeperkt te schalen", geeft zij aan.
Redactie: Imre Himmelbauer • Eindredactie: Monique van den Boomen