2 mrt. 2020 | Door: Pascal Vleugels
Citynavigator Open Data Platform verhuisd naar Google Cloud Platform
Na ruim een jaar aan voorbereidingen, is vorige week het nieuwe hostingplatform officieel in gebruik genomen. Tijdens alle voorbereidingen zijn alle applicaties geschikt gemaakt om te verhuizen van server en om klaar te zijn voor de nieuwe manier waarop we webapplicaties bouwen en hosten. Dat doen we omdat we steeds meer applicaties draaien (inmiddels ruim 100 toeristische websites), meer data te verwerken krijgen en ook steeds meer bezoekers mogen verwelkomen op al onze sites. Met deze monstermigratie hebben we meer capaciteit, meer stabiliteit en zijn we klaar voor de toekomst!
Op woensdag 19 februari is de migratie van het Citynavigator Open Data Platform (ODP) naar het nieuwe hostingplatform succesvol afgerond. Door middel van deze blogpost willen we graag wat meer vertellen over de reden waarom deze migratie plaats heeft gevonden en wat de voordelen hiervan zijn.
In het kort heeft het nieuwe hostingplatform de volgende voordelen:
- Stabiliteit en betrouwbaarheid met Kubernetes en Google Cloud Platform
- Isolatie van drukte per website
- Volledig geautomatiseerd schaalbaar
- Verbeterde server statistieken en logging
- Geautomatiseerde kwaliteitschecks en deployment proces
- Fysieke verhuizing van Ierland naar Groningen
We zijn enorm trots op het feit dat we deze wijzigingen door hebben kunnen voeren voor al onze partners. We beseffen dat onderstaand verhaal behoorlijk technisch is geworden, maar we willen het toch wel wel heel graag vertellen 😉. Dus mocht je al afhaken bij termen als: Kubernetes, containers en redundancy, geen probleem. No hard feelings. Lees je wel nog even door? TOP! We hebben geprobeerd om alles enigszins in Jip en Janneke taal te vertellen.
Stabiliteit en betrouwbaarheid met Kubernetes en Google Cloud Platform
Doordat er gebruik gemaakt wordt van Kubernetes (oorspronkelijk bedacht door Google) op het Google Cloud Platform is de algehele kwaliteit en doorontwikkeling ook gewaarborgd.
Kubernetes is Grieks voor ‘stuurman voor een schip’
Kubernetes werkt met ‘pods’. Een pod is een omhulsel voor één of meerdere containers. De app (in ons geval het Open Data Platform) wordt als het ware verpakt in een doosje (container) met daarin alleen het hoogstnodige om te kunnen functioneren. Kubernetes werkt met Docker-containers, die veruit het populairst zijn.
Foto door chuttersnap
Door te werken met containers, kun je dus heel snel geïsoleerd applicaties maken en die vervolgens weer met elkaar samen laten werken. Maar die onafhankelijkheid en schaalbaarheid brengt ook uitdagingen met zich mee. Je hebt al gauw tientallen containers draaien die je moet monitoren en beheren. Daar zit de kracht van Kubernetes. Met Kubernetes kun je al deze containers en pakketjes beheren, monitoren en samen laten werken. Kubernetes is niet voor niets in een hele korte periode de populairste standaard voor de uitrol en management (orkestratie) van containers geworden.
Wil je meer weten over Kubernetes? Bekijk dan onderstaand filmpje:
Isolatie van drukte per website
Voorheen kon het voorkomen dat er meerdere websites op 1 server draaien. Dat kon ervoor zorgen dat als website A het erg druk had, website B hier last van kon hebben. Met de nieuwe hosting opzet, heeft iedere website zijn eigen gereserveerde capaciteit.
We isoleren alle websites, zodat ze geen “last” meer van elkaar kunnen hebben
Op die manier zorgen we ervoor dat het nooit meer voor kan komen dat er bij grote drukte, een vertraging bij andere sites plaats kan vinden.
Volledig geautomatiseerd schaalbaar
Naast de isolatie van alle websites, zijn de servers van de individuele websites ook nog eens automatisch schaalbaar.
Zodra het drukker wordt qua traffic, komt er (volledig automatisch) een server bij
De capaciteit wordt automatisch vergroot bij drukte. Dit gebeurt in een fractie van een seconde. Een bezoeker zal hier dus niets van merken. Dat betekent ook dat de website niet op 1 server draait, maar op hetzelfde moment op wel 10 verschillende servers kan draaien om de capaciteit aan te kunnen. Nogmaals: Daar merk je als bezoeker helemaal niks van (behalve dat de site gewoon normaal bereikbaar en bruikbaar is 😀)
Er is minder kans op downtime, doordat elke website meervoudig draait (redundant uitgevoerd). Als er onverhoopt een server uitvalt, zijn er altijd nog andere servers beschikbaar, of wordt er direct een nieuwe server opgeschakeld. Ook het datacentrum en de netwerkverbinding is redundant, het hostingplatform is verspreid over 3 datacentra.
Er is altijd een minimum aantal van 2 servers waar de website op draait. Bij een crash van een server start er automatisch een nieuwe op (self-healing).
Verbeterde server statistieken en logging
Door de uitgebreide tooling van Kubernetes en Google Cloud Platform beschikken we nu over meer en betere statistieken en monitoring. We kunnen op ieder moment kijken wat de status van een individuele website/server/pod is. Daarnaast hebben we ook uitgebreide meldingen, mochten er dingen verkeerd gaan. Op dat moment kunnen we daar direct actie op ondernemen om problemen te voorkomen.
Voorbeeld van monitoring in Google Cloud Platform
Geautomatiseerde kwaliteitschecks en deployment proces
Door gebruik te maken van geautomatiseerde processen, wordt de kans op fouten geminimaliseerd. Doordat alle code automatisch wordt getest, wordt de kans aanzienlijk verkleind dat er “niet werkende” code op een live website terechtkomt.
Daarnaast is het ook mogelijk om per applicatie gebruik te maken van een eigen programmeertaal. Zo kun je de meest efficiënte programmeertaal voor de uit te voeren taak kiezen. Op deze manier wordt je gehele applicatie een stuk efficiënter en sneller.
Fysieke verhuizing van Ierland naar Groningen
Voorheen maakten we gebruik van Amazon Web Services. Deze servers draaiden in Ierland. Aangezien we een Nederlands bedrijf zijn en werken voor de mooiste bestemmingen in Nederland, vonden we het uiteraard ook niet meer dan logisch dat onze webservers en data ook in Nederland staan.
Bijkomend voordeel is dat het datacentrum van Google erg duurzaam is opgezet. Zo draait het datacentrum voor 100 procent op duurzame stroom uit windturbines en zonnepanelen (en verbruikt het datacentrum 3,5 keer minder stroom dan andere vergelijkbare datacentra). Meer weten? Check de video van Google over het Nederlandse Google Cloud Platform
De servers van ons nieuwe hostingplatform (Google Cloud Platform) staan in het datacentrum in de Eemshaven in Groningen. Met de verhuizing van het Open Data Platform, zijn ook onze Elasticsearch servers verhuisd, zodat ook onze zoekmachine efficienter kan zoeken.
What’s next?
De komende tijd zullen we bezig blijven met het optimaliseren van alle processen en servers, zodat we maximaal kunnen genieten van onze nieuwe hostingomgeving. De volgende stap die we nu gaan nemen, is ook het verhuizen van alle websites naar het nieuwe hostingplatform. Op dit moment zijn we druk bezig om alle voorbereidingen te treffen, om ook deze overgang soepeltjes en zonder downtime te laten verlopen.