Close

Microservices: understanding what it is and its benefits

Nog niet zo lang geleden was een monolithische architectuur, een enkele, autonome eenheid, de voorkeursmethode voor het bouwen van softwaretoepassingen. Deze aanpak werkte goed voor veel ontwikkelaars totdat applicaties steeds complexer werden. Wanneer een wijziging in een klein deel van de code wordt aangebracht in een monolithisch systeem, moet het hele systeem opnieuw worden opgebouwd, moeten tests worden uitgevoerd op het hele systeem en moet een geheel nieuwe versie van de applicatie worden geïmplementeerd.

Toen kwamen microservices, een aanpak waarbij softwaresystemen worden opgesplitst in kleinere eenheden die onafhankelijk van elkaar worden ontwikkeld en geïmplementeerd. De microservices-architectuur werd gestimuleerd door de DevOps-beweging die regelmatig updates wil leveren, zoals nieuwe functies, bugfixes en beveiligingsverbeteringen. Het werd in veel gevallen ook een manier voor bedrijven om oude applicaties te herschrijven in een moderne programmeertaal en updates van een technologiestack.

Microservices zijn een verzameling kleine eenheden die continu grote, complexe toepassingen leveren en implementeren.

Wat zijn microservices?


Een microservices-architectuur, ook wel gewoon microservices genoemd, is een manier om een toepassing te bouwen als een reeks onafhankelijk inzetbare services die gedecentraliseerd en onafhankelijk van elkaar zijn ontwikkeld. Deze services zijn losjes met elkaar verbonden, onafhankelijk inzetbaar en gemakkelijk te onderhouden. Een monolithische applicatie is gebouwd als een enkele, ondeelbare eenheid. Met microservices wordt die eenheid opgesplitst in een verzameling onafhankelijke eenheden die samen het grotere geheel vormen. Microservices zijn een integraal onderdeel van DevOps, omdat ze de basis vormen voor continue leveringspraktijken waarmee teams snel kunnen inspelen op de vereisten van de gebruiker.

Afbeelding van microservices

Een microservice is een webservice die verantwoordelijk is voor één stuk domeinlogica. Meerdere microservices vormen samen een applicatie, waarbij elk een stukje functionaliteit biedt voor een domein. Microservices communiceren met elkaar via API's, zoals REST of gRPC, maar hebben geen kennis van de interne werking van de andere services. Deze harmonieuze interactie tussen microservices is de microservices-architectuur.

Met een microservices-architectuur kunnen ontwikkelaars zich organiseren in kleinere teams die gespecialiseerd zijn in verschillende services, met verschillende stacks en losgekoppelde implementaties. Jira wordt bijvoorbeeld aangedreven door meerdere microservices die elk specifieke mogelijkheden bieden, waaronder issues zoeken, issuedetails bekijken, opmerkingen, issuetransities en meer.

Kenmerken van microservices


Er is geen officiële definitie van een microservices-architectuur, maar er zijn wel een paar patronen of kenmerken die belangrijk zijn.

In een microservices-architectuur kan elke component worden ontwikkeld, geïmplementeerd, beheerd, gewijzigd en opnieuw worden geïmplementeerd zonder de functie van andere services of de integriteit van een toepassing in gevaar te brengen.

Voordelen van microservices


Microservices provide many advantages. They simplify development and project management. Sometimes, they may eliminate the need for separate operations teams since developers can handle operations for the microservices they build. 

Some other benefits of microservices include:

Afbeelding van weegschaal

Flexibel schalen

Omdat microservices per ontwerp worden gedistribueerd en in clusters kunnen worden geïmplementeerd, zorgen ze ervoor dat bedrijven dynamisch en horizontaal kunnen schalen, over servicegrenzen heen. Als een microservice zijn laadvermogen bereikt, kunnen nieuwe installaties van die service snel worden ingezet in de bijbehorende cluster om de druk te verlichten.

Toelichting Agile

Agility

Omdat kleine, onafhankelijke teams doorgaans een service binnen microservices bouwen, worden teams gestimuleerd om agile praktijken te gebruiken. Teams kunnen zelfstandig werken en snel schakelen, waardoor de ontwikkelingscyclus sneller verloopt.

Afbeelding gereedschapskist

Flexibele technologie

Microservices-architecturen volgen niet per se een vaste aanpak met één toolchain, maar bieden teams de vrijheid om hun eigen tools te selecteren.

Afbeelding van gestapelde blokken

Regelmatige releases

Een van de belangrijkste voordelen van microservices zijn regelmatige en snellere releasecycli. Dit is een belangrijk element van continue integratie en continue levering (CI/CD) en hierdoor kunnen microservices-teams experimenteren met nieuwe functies en deze snel terugdraaien als er iets niet werkt. Hierdoor kan code gemakkelijker bijgewerkt worden en kunnen nieuwe functies sneller gereleased worden.

Uitdagingen van microservices


Microservices-based architecture has many benefits, but it also comes with challenges. 

One challenge of microservices is that the independent services generate their logs. This is a disadvantage compared to monoliths' centralized logs, which provide a single source of truth for developers and operations teams. Monitoring and infrastructure management are also more complicated since many moving pieces exist. Testing and debugging are challenging because, unlike monoliths, no integrated development environment (IDE) exists.

Atlassian's Compass can help with all these challenges. Compass facilitates collaboration and allows companies to manage the complexities of distributed architectures as they scale. It does this by bringing the disconnected information together in a central, searchable location.

Ontwikkelingswildgroei

De overgang van een monoliet naar microservices betekent meer complexiteit. Er zijn meer services op meer locaties die door meerdere teams zijn ontwikkeld. Hierdoor is het lastig om te zien hoe verschillende componenten zich tot elkaar verhouden, wie een bepaalde component bezit, en hoe je een negatieve impact op afhankelijke componenten voorkomt. Als de wildgroei onbeheerd blijft, resulteert dit in een lagere ontwikkelingssnelheid en slechte operationele prestaties. Naarmate een systeem groeit, is er een ervaren operations-team nodig om constante herimplementaties en regelmatige wijzigingen in de architectuur te beheren.

Gebrek aan duidelijk eigenaarschap

In een microservices-architectuur kan het soms lastig zijn om te zien wat van wie is. Een DevOps-team kan een combinatie van API's, componentbibliotheken, monitoringtools en Docker-images uitvoeren zodat gebruikers een toepassing kunnen implementeren. Het is belangrijk om inzicht te hebben in informatie over componenten, zoals hun eigenaren, resources en evoluerende relaties tussen andere componenten. Nauwkeurige communicatie en coördinatie tussen verschillende teams is vereist, zodat alle betrokkenen gemakkelijk de vereiste kennis kunnen vinden om een product te begrijpen.

Hogere infrastructuurkosten

Elke nieuwe microservice die aan een productimplementatie wordt toegevoegd zal kosten met zich meebrengen voor testsuites, implementatiedraaiboeken, hostinginfrastructuur, monitoringtools en meer.

Meer organisatie-overhead

Er is meer communicatie en samenwerking nodig om updates en interfaces tussen microservices-architectuurteams te coördineren.

Debuggen

Het kan een uitdaging zijn om een toepassing te debuggen die meerdere microservices bevat, elk met een eigen set logs. Een enkel bedrijfsproces kan op verschillende tijdstippen op meerdere machines draaien, wat het debuggen nog ingewikkelder maakt.

Incident response

Het is belangrijk om de juiste informatie over de respons van microservice-incidenten te hebben, zoals wie de microservice gebruikt, waar de microservice is geïmplementeerd, hoe de microservice is geïmplementeerd en met wie je contact opneemt als er iets misgaat.

Microservices en DevOps: twee handen op één buik


Omdat microservices steeds complexer en afhankelijker van elkaar worden, zijn de DevOps-praktijken van implementatie, monitoring en levenscyclusautomatisering een integraal onderdeel van microservices-architecturen. Daarom worden microservices vaak beschouwd als de eerste stap om een DevOps-cultuur te omarmen om het volgende mogelijk te maken:

  • Automatisering
  • Verbeterde schaalbaarheid
  • Beheerbaarheid
  • Agility
  • Snellere levering en implementatie

Belangrijkste technologie en tools voor een microservices-architectuur


Een container is gewoon de verpakking van een toepassing en al zijn afhankelijkheden, waardoor deze gemakkelijk en consistent kan worden geïmplementeerd. Omdat containers geen overhead hebben van hun eigen besturingssysteem, zijn ze kleiner en lichter dan traditionele virtuele machines. Ze kunnen sneller op en neer schalen, waardoor ze een perfecte match zijn voor de kleinere services binnen microservices-architecturen.

Met de wildgroei aan services en containers is het orkestreren en beheren van grote groepen containers essentieel. Docker is een populair containerplatform en runtime waarmee ontwikkelaars containers kunnen bouwen, implementeren en uitvoeren. Het runnen en beheren van containers op schaal is echter een uitdaging als je alleen Docker gebruikt. Kubernetes en andere oplossingen zoals Docker Swarm, Mesos, HashiCorp Nomad en meer helpen om containerisatie op schaal aan te pakken.

Containerisatie en de inzet van containers is een nieuw patroon van een gedistribueerde infrastructuur. Docker en Kubernetes verpakken een service in een complete container die snel kan worden geïmplementeerd en verwijderd. Deze infrastructuurtools vormen een aanvulling op de microservices-architectuur. Microservices kunnen in containers worden geplaatst, en eenvoudig worden geïmplementeerd en beheerd met behulp van een containerbeheersysteem.

Wat zijn microservices?


Een microservices-architectuur, ook wel gewoon microservices genoemd, is een manier om een toepassing te bouwen als een reeks onafhankelijk inzetbare services die gedecentraliseerd en onafhankelijk van elkaar zijn ontwikkeld. Deze services zijn losjes met elkaar verbonden, onafhankelijk inzetbaar en gemakkelijk te onderhouden. Een monolithische applicatie is gebouwd als een enkele, ondeelbare eenheid. Met microservices wordt die eenheid opgesplitst in een verzameling onafhankelijke eenheden die samen het grotere geheel vormen. Microservices zijn een integraal onderdeel van DevOps, omdat ze de basis vormen voor continue leveringspraktijken waarmee teams snel kunnen inspelen op de vereisten van de gebruiker.

Afbeelding van microservices

Een microservice is een webservice die verantwoordelijk is voor één stuk domeinlogica. Meerdere microservices vormen samen een applicatie, waarbij elk een stukje functionaliteit biedt voor een domein. Microservices communiceren met elkaar via API's, zoals REST of gRPC, maar hebben geen kennis van de interne werking van de andere services. Deze harmonieuze interactie tussen microservices is de microservices-architectuur.

Met een microservices-architectuur kunnen ontwikkelaars zich organiseren in kleinere teams die gespecialiseerd zijn in verschillende services, met verschillende stacks en losgekoppelde implementaties. Jira wordt bijvoorbeeld aangedreven door meerdere microservices die elk specifieke mogelijkheden bieden, waaronder issues zoeken, issuedetails bekijken, opmerkingen, issuetransities en meer.

De toekomst van microservices


What tools do people commonly use in microservices?

Businesses often use containerization tools such as Kubernetes and Docker. They also frequently use API gateways between microservices and their clients. These gateways perform API traffic functions such as authentication, access control, and load balancing.

How do microservices differ from monolithic architecture?

Monoliths are large codebases that function as one system. They require system downtime for updates and debugging. Microservices architectures are distributed applications with smaller, independent chunks of functionality. Developers can upgrade, improve, and debug these modules without taking the entire application offline. This simplifies scaling and aids development velocity.

How do microservices impact DevOps?

Those who understand DevOps know that continuous integration and continuous delivery (the DevOps CI/CD pipeline) are the mainstays of DevOps methodologies. The modular nature of microservices aligns perfectly with this approach. Microservices empower developers to swiftly create, test, and deploy small, frequent releases.

Join the Atlassian Community for more microservices articles and discussions.

Navigeer door je microservices met Compass

Bij het werken met een microservicearchitectuur beheert Atlassian Compass de complexiteit van een gedistribueerde en schalende architectuur. Compass is een uitbreidbaar ontwikkelaarsplatform dat verspreide informatie over engineeringoutput en teamsamenwerking samenbrengt op één centrale, doorzoekbare locatie. Naast het beperken van de wildgroei aan microservices met de Component Catalog, helpt Compass je om best practices en de status van je software te bepalen met Scorecards. Ook biedt het gegevens en inzichten in je DevOps-toolchain met behulp van extensies die ontwikkeld zijn op het Atlassian Forge-platform.

Afbeelding van Compass-microservices