BLOG

Docker bij Voogd en Voogd

15 juni 2017

Docker bij Voogd en Voogd
Alvorens in te gaan op het Docker-project bij Voogd en Voogd, willen we in deze eerste blog wat achtergrondinformatie over het huidige en toekomstige applicatielandschap binnen Voogd en Voogd geven.

Huidig applicatielandschap
Het grote deel van de backend systemen van Voogd en Voogd bestaat uit grote componenten met veel functionaliteit. De samenhang tussen de verschillende applicaties is geregeld middels database integratie. In de huidige tijd van agile werken zijn deze applicaties te groot om snel te kunnen te testen en in productie te nemen. Daar komt bij dat er momenteel ruim 300 (virtuele) servers zijn waarop de software is verdeeld. Dat maakt het beheren niet eenvoudiger.

Atlas: het nieuwe applicatielandschap
Drie jaar geleden is een traject gestart om dit applicatielandschap om te bouwen naar een moderne architectuur. Dit ambitieuze project draagt de codenaam Atlas. Uitgangspunt voor de nieuwe architectuur was een hoog schaalbare architectuur met een goede performance. Daarbij moest de software ook goed automatisch te testen zijn.

Daarop is gekozen voor het gebruik van Domain Driven Design. Met deze techniek wordt de ontwikkel focus op het core domein van een probleemgebied gelegd. Per probleemgebied (sub-domain) wordt een apart model gemaakt. De ontwikkelaars werken nauw samen met de experts bij het ontwikkelen van de modellen. Deze verschillende domeinen leveren losstaande software componenten. Deze componenten koppelen we aan elkaar middels een messaging systeem. Dit maakt het ook mogelijk om een applicatie uit productie te halen terwijl de rest door blijft draaien. De communicatie tussen de verschillende componenten wordt tenslotte opgevangen door de message bus.

Binnen de verschillende subdomeinen maken we ook nog gebruik van command query responsibility segregation (CQRS). Met deze techniek wordt naast een model voor de core logica een tweede model gebruikt voor de presentatie. Doordat er twee modellen zijn met een eigen database, kunnen de presentatie database-queries de database voor de core logica niet belasten. Verder kan de database voor de presentatie geoptimaliseerd worden voor het presenteren van de informatie.

Onlangs heeft de Software Improvement Group een review op onze nieuwe applicaties uitgevoerd. De conclusie was dat deze architectuur en de daarbij behorende uitvoering Netflix en Facebook -achtige proporties had.

Docker
Het nieuwe landschap gaat door het opdelen van de grote applicaties uit meer elementen bestaan. Dit maakt het deployen en monitoren van de componenten niet eenvoudiger. Docker belooft hiervoor een oplossing te zijn. Docker kan de verschillende componenten allen gescheiden in een container draaien zonder de overhead van een operating system voor elke container. Ook is Docker uitermate geschikt om componenten op te schalen.

Docker maakt het ook mogelijk om snel een nieuwe omgeving op te bouwen. Dit willen we gaan gebruiken voor het opbouwen van een test- en ontwikkelomgeving.

Vervolg
In deze serie van blogs willen we de resultaten van ons Docker implementatietraject beschrijven. We gaan niet beschrijven wat Docker is en hoe je het kunt installeren. De focus van deze serie ligt nadrukkelijk op de ervaringen tijdens het Dockerizen van een applicatielandschap. Ondertussen hebben we al een gedeelte van de Linux applicaties in productie op Docker draaien. Docker for Windows is nog in ontwikkelfase. Hierbij alvast een korte opsomming van de verschillende onderwerpen die aan bod gaan komen:

  • CI/CD met Jenkins in Docker
  • Wso2 api manager in Docker
  • Monitoring Elk stack in Docker
  • Clusteren van MySql in Docker
  • RabbitMq in Docker
  • .Net applicaties in Docker for Windows
  • Websites in Docker

DEZE BLOG DELEN OP

© 2018 | Voogd & Voogd
Website powered by Dutch Media Lab