KubeCon 2019: Kubernetiseren van bestaande applicaties

Sai Vennam is developer advocate bij IBM. Hij haalt een Gartner rapport aan, dat vertelt dat elke dollar die wordt geïnvesteerd in innovatie betekent dat er tenminste drie keer zoveel investering nodig is om legacy applicaties te moderniseren.

Sai stelt de vraag waar je moet beginnen als je applicaties wil kubernetiseren. Er is veel te vinden op Google, maar vaak gaat het om stukken tekst die je in een paar minuten hebt gelezen. Maar hoe gaat het nu echt?

In de visie van IBM zijn er vier redenen om te moderniseren. Allereerst kun je op deze manier ontkomen aan vendor lock-in, een term die veel terugkomt tijdens de KubeCon. Ten tweede is Kubernetes wereldwijd beschikbaar zodat het bereiken van klanten eenvoudiger wordt (voor bedrijven die wereldwijd opereren, dan – klein detail) en wordt het ten derde mogelijk om in principe onbeperkte resources toe te passen – schalen kan tot in het oneindige. Als laatste maakt de enorme ecosfeer van Kubernetes het mogelijk gebruik te maken van veel nieuwe integraties.

Het recept voor kubernetiseren heeft drie ingrediënten: Lift and shift, Innovate en Deconstruct. Kubernetiseren gebeurt dan vaak met als reden om beter gebruik te maken van schaalbaarheid, wat met VM’s te duur zou worden.

Sai laat een live demo zien: hij porteert de Petstore (een veelgebruikte demo-applicatie uit de Java-wereld) naar Kubernetes. De lift en shift gaat eenvoudig, het is niet meer dan een container maken en die deployen naar Kubernetes. De onderliggende database heeft een on premise versie die wordt gerepliceerd naar eentje in de Cloud. In de volgende stap, Innovate (en improve) wordt het interessanter. Innovatie wordt vaak moeilijk gemaakt door restricties die in de legacy architectuur zitten. Sai laat dit zien aan de hand van een demo met Twilio en Watson Image recognition. Omdat we nu gaan innoveren en cloud native gaan werken, grapt Sai, schakelen we van Java over naar Go.

Hij bouwt met een paar klikken een integratie tussen Twilio, Watson image recognition en de Petstore. Door een afbeelding van een kat te SMS-en naar de Petstore, krijgt hij een SMS terug met als antwoord dat er in de Petstore een kat te koop is. Eenvoudig maak indrukwekkend, vooral de snelheid waarmee een dergelijke integratie te maken is.

In de laatste stap, Deconstruct (en refactor) wordt er gesleuteld aan de legacy applicatie zelf, bijvoorbeeld door de front-end te scheiden van de overige code, er API’s aan toe voegen of onnodige functionaliteit te verwijderen. Dit is vaak een complexe (en dure) operatie.

In het voorbeeld dat Sai laat zien vervangt hij de eerder genoemde database replicatie van on premise naar de Cloud met een Node.JS API connector, die vervolgens schaalbaar wordt – zowel de API als de database die al in de Cloud draait.

De demo laat zien dat een monolithische applicatie op veel verschillende manieren te moderniseren is, vooral ook door op een slimme manier integraties en nieuwe ontwikkelingen toe te passen.