Why Microservices?

For a company, it is pretty common to have web-processes in place that become larger and complexer over time. Because of this, software applications can suffer from ever slower development cycle. The amount of dependancies within the code keeps increasing, eventually causing something to break on the left side, when something is changed on the right side. Apart from this, the code also becomes more and more unclear, and unused code isn't removed anymore out of fear of breaking something. This causes a "technical debt", that apart from the ever slower development cycle, also causes more bugs in the code and can cause an obstruction in continuous deployment of new features.

This is where a Microservice Architecture comes in. A Microservice Architecture requires and ensures that every party of a technical system is a seperate component. This causes the system to be less dependant on eachother, while also being better maintainable and scalable. Every microservice has its own responsibility, causing changes to the responsibility only to cause changes to that single component. The components communicate to each other through a pub-sub system, for example a message bus. Other microservice can subscribe to events from a certain component, and update their own view model accordingly.

 

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.