Zo bouw je WordPress webapps met een microservices architectuur

ict

[ad_1]

WordPress is een krachtig Content Management Systeem (CMS) dat de basis kan leggen voor verschillende soorten sites en apps. Dit maakt gebruik van een typische ‘monolithische architectuur’, maar naarmate een site groeit, is dit misschien niet de beste oplossing. Dit is waar een ‘microservices architectuur’ voordelig kan zijn.

In dit artikel onderzoeken we hoe je WordPress webapps kunt bouwen met behulp van een microservices architectuur. We introduceren ook de Create Block Theme plugin en bespreken hoe deze opwindende oplossing in je ontwikkeling past.

Wat microservices zijn

Voordat je een webapp gaat bouwen, moet je begrijpen wat microservices zijn en hoe ze verschillen van monolithische architecturen.

Bij een monolithische architectuur is er een nauwe koppeling tussen alle onderdelen van een applicatie. Het draait in wezen als een enkele service. Het is een eenvoudige manier om een app te ontwikkelen, hoewel onderhoud en schaalbaarheid een uitdaging kunnen worden naarmate de complexiteit toeneemt.

Met microservices daarentegen kun je de app opsplitsen in een verzameling kleinere services. Elke service is onafhankelijk van elkaar wat betreft ontwikkeling, deployment en schaalbaarheid.

Elke service voert een specifieke taak uit en communiceert met de andere services via een API (Application Programming Interface). Neem bijvoorbeeld een typische e-commerce site met een winkelwagen, kassa, orderverwerking, productpagina en meer.

De DARTDrones website toont een aankomend drone trainingsprogramma, met een overzicht van wat er in het pakket zit. Er zijn opties om een stad te selecteren en je nu in te schrijven.
De website van DARTDrones toont een van de e-commerce pagina’s.

In een monolithische architectuur zouden al deze functies deel uitmaken van één grote applicatie. WordPress is monolithisch en het gebruik van Woo als je e-commerce platform is een uitstekend voorbeeld.

Als je echter een microservices architectuur implementeert, kun je voor elke taak de juiste technologie gebruiken. Je zou bijvoorbeeld het beste CMS van WordPress kunnen gebruiken voor je contentmarketing. Adobe Commerce zou je productbeheersysteem kunnen zijn. Een kassa-oplossing zoals Bolt zou aan je behoeften kunnen voldoen.

Een vrouw met een groene broek loopt terwijl ze een grote turquoise boodschappentas vasthoudt, tegen een felgele en witte achtergrond met abstracte geometrische vormen en de tekst “Conversie verbeteren, gegarandeerd”.
De website van Bolt.

Deze aan elkaar lijmen is mogelijk met microservices. Laten we het vervolgens hebben over waarom microservices een belangrijke overweging zouden moeten zijn voor je volgende project.

Wat microservices onderscheidt van monolithische architecturen

De ‘elevator pitch’ voor microservices is hoe je verschillende technologieën en tools kunt combineren tot een geheel. Er zijn echter nog andere, diepere kenmerken die het vermelden waard zijn:

  • Ontkoppeling. Elke service behoudt zijn onafhankelijkheid. Dit betekent dat je voor elke taak de beste technologie kunt gebruiken in plaats van te moeten werken met ongeschikte frameworks.
  • Autonomie. In het verlengde daarvan hoeven de services die je integreert niet van elkaar afhankelijk te zijn om goed te presteren.
  • Specialisatie. Natuurlijk zal elke service zich richten op zijn eigen taak, wat weer invloed heeft op de prestaties.
  • Veerkracht. Een deel van deze inherente en performante troef is dat één storing in een service niet je hele site platlegt.

Naast deze aspecten zijn er nog meer voordelen bij het gebruik van microservices:

  • Schaalbaarheid. Je kunt individuele services schalen op basis van individuele behoeften zonder de rest van je app te beïnvloeden.
  • Flexibiliteit. We hebben al kort aangegeven hoe je services de beste technologie voor hun taak kunnen gebruiken. Dit geldt zelfs voor de programmeertalen die je gebruikt om ze te maken.
  • Snellere ontwikkeling. Je kunt sneller kleine en gerichte services ontwikkelen, de functionaliteit van je service beter begrijpen en het systeem eenvoudiger onderhouden.
  • Verbeterde foutisolatie. Met de ‘modulaire’ opzet kun je een service isoleren als deze uitvalt zonder dat dit invloed heeft op je andere services.

Aan de andere kant kunnen microservices complexiteit introduceren voor communicatie, gegevensconsistentie en het beheren van gedistribueerde systemen. Daarom moet je de vereisten van je app zorgvuldig afwegen. Kortom, overweeg zowel de voordelen als de afwegingen voordat je besluit om microservices te gebruiken.

De onderdelen van een microservices architectuur

Zoals je zou verwachten, kan een microservices architectuur uit verschillende componenten bestaan. Deze ‘radertjes’ werken samen in het hele ‘wiel’ om een schaalbare en onderhoudbare app te leveren.

Daarom zijn er een aantal componenten die essentieel zijn voor een soepele implementatie:

  • API gateway: Dit is het ingangspunt voor alle clientverzoeken. Het stuurt die verzoeken door naar de juiste microservices. Het kan ook taken afhandelen zoals snelheidsbeperking en authenticatie.
  • Service discovery: Je zult een dynamische manier moeten gebruiken om microservices elkaar te laten ontdekken en met elkaar te laten communiceren. Hulpmiddelen zoals Consul of Eureka kunnen hierbij helpen.
  • Containerisatie: Het is gebruikelijk om microservices te containeriseren en in te zetten als containers met tools zoals Docker. Zo zorg je voor isolatie voor elke service.
  • Orkestratie: Naarmate je meer microservices aan je app toevoegt, wordt het beheer ervan complexer. Een tool als Kubernetes kan helpen om dit servicebeheer te automatiseren.
  • Caching: Cachingmechanismen zoals Redis of Memcached verbeteren vaak de prestaties. Dit kan cruciaal zijn, gezien de grotere druk op je backendservices en databases.
  • Messaging: Natuurlijk moeten je services ook met elkaar praten. Dit is de taak van ‘asynchrone’ berichtenoplossingen zoals RabbitMQ of Apache Kafka. Deze ‘message brokers’ maken een losse koppeling tussen je microservices mogelijk.

Tools zijn echter maar één aspect van je opstelling. Er zijn nog andere overwegingen, zoals hoe je elke microservice ontwerpt binnen de volledige architectuur.

Ontwerppatronen voor microservices

Je design patterns voor microservices zijn hier net zo belangrijk als elders in je ontwikkelworkflow. Gezien de potentiële complexiteit van je app, is het belangrijk om te overwegen welke patterns de grootste impact zullen hebben. Er zijn er drie die we kunnen aanwijzen:

  • Database-per-service: Elke microservice gebruikt zijn eigen dedicated database, wat helpt bij data-isolatie en autonomie.
  • API samenstelling: Je kunt microservices samenstellen om services of API’s op een hoger niveau te maken. Deze flexibiliteit en herbruikbaarheid is een groot voordeel.
  • Event-driven architectuur: Hier communiceren services via events. Dit bevordert een lossere koppeling en asynchrone verwerking.

Het is ook belangrijk om rekening te houden met specifieke ontwerppatronen voor de tools die je gebruikt om je architectuur te bouwen. Docker en Kubernetes hebben bijvoorbeeld allebei typische patterns waarmee je rekening moet houden naast het globale ontwerp van je architectuur.

Begrijp echter dat niet elk onderdeel een microservice hoeft te zijn. Het juiste idee is om te beginnen met de belangrijkste services en de architectuur in de loop van de tijd verder te ontwikkelen. Later zullen we hier dieper op ingaan. Eerst moeten we kijken hoe we de voorkant kunnen ontwikkelen.

[ad_2]

https://kinsta.com/nl/blog/wordpress-web-apps/