Waarom Microservices?

Wanneer een bedrijf te maken heeft met steeds complexere en steeds groter wordende bedrijfsprocessen, kunnen software applicaties snel te maken krijgen met een steeds trager wordende development-cyclus. De hoeveelheid afhankelijkheden binnen de code worden groter, wat ervoor zorgt dat wanneer er links iets aangepast wordt, er rechts een functionaliteit kapot kan gaan. Hiernaast wordt de grote hoeveelheid code onoverzichtelijk, en wordt sommige ongebruikte code ook niet meer weggehaald. Dit leidt tot een “technical debt”, wat naast een trager wordende development-cyclus ook kan zorgen voor meer fouten (bugs) in de code en een obstructie kan vormen in het continue live zetten van nieuwe functionaliteiten.

Hier biedt een Microservice architectuur uitkomst voor. Een microservice architectuur zorgt er voor dat elk onderdeel van een bedrijfsproces apart opereert, zodat een systeem minder afhankelijk wordt van elkaar, en wijzigingen aan het proces snel en zorgvuldig uitgevoerd worden. De verantwoordelijkheden van ieder apart onderdeel of bedrijfsproces worden gescheiden van elkaar, waardoor het aanpassen van een van deze onderdelen zich alleen hoeft plaats te vinden in dat specifieke gedeelte. De bedrijfsprocessen communiceren met elkaar via een zogenoemde “message-bus”, dat zorgt dat wanneer een update plaatst vindt binnen èèn proces, de andere processen up-to-date blijven.

 

De Training

Tijdens de twee-daagse training “Geavanceerde Microservices in PHP”, leert de ontwikkelaar de filosofie en basis implementatie voor het faciliteren van een microservice architectuur. De ontwikkelaar zal zelf leren hoe een microservice gemaakt wordt, en leert daarbij de belangrijkste fundamentele AGILE-technieken hiervoor:

  • SOLID: Er wordt aandacht besteed aan de SOLID manier van programmeren en we gaan dieper in op wat SOLID inhoudt, met name waarom SOLID helpt om kwalitatief betere code te ontwikkelen.
  • Hexagonal Architecture: Deze manier van organiseren van classes helpt bij het scheiden van de implementatie van de abstracties, en faciliteert daardoor makkelijk aanpasbare code.
  • Domain Driven Design: Elementen vanuit Domain Driven Design worden gebruikt om sneller duidelijk te maken wat de verantwoordelijkheid is van een class. Denk hierbij aan Entities, Repositories, Value Objects en meer.
  • Test-Driven Development: Hoe schrijf je code doormiddel van tests? Waarom levert het schrijven van tests uiteindelijk meer tijd op dan dat het kost? Hoe kunnen we “gerust” op vrijdagmiddag 5 uur deployen? Dit is waar Test-Driven Development om draait en de hele microservice zal Test-Driven ontwikkeld worden.
  • Commands & Events: Leer hoe microservices asynchroon met elkaar kunnen communiceren doormiddel van Commands en Events.
  • Docker Containerizing: Leer het gebruik van Docker om makkelijk en snel, uitwisselbare development environments te creëren.

Tijdens de training maken we gebruik van de Symfony 5 skeleton als basis framework. We zullen echter vrij snel symfony verlaten, en focus leggen de code dat onafhankelijk is van een framework.