Close

Microservices: inzicht in wat microservices zijn en wat de voordelen ervan zijn

Tot ongeveer 2013 bouwden bedrijven meestal bedrijfssoftware door toepassingen te bouwen als afzonderlijke eenheden met grote codebases, een zogenaamde monolithische architectuur. Naarmate software complexer werd en de populariteit van cloud computing toenam, werd deze aanpak minder praktisch.

Door de komst van software-as-a-service-producten (toepassingen die via de cloud worden geleverd) konden bedrijven providers, zoals Amazon Web Services, gebruiken om snel nieuwe servers te creëren en redundantie toe te voegen. Dit zorgde ervoor dat de services online bleven tijdens upgrades. Het luidde ook een nieuw tijdperk van snelheid en behendigheid in. Gebruikers verwachtten snelle upgrades en verbeteringen, wat bedrijven ertoe aanzette hun ontwikkelingsprocessen te veranderen.

Bedrijven begonnen toepassingen op te splitsen in kleinere, onafhankelijke services of microservices. In plaats van een berichteninbox toe te voegen als onderdeel van een monolithisch e-commerceplatform, kunnen ze bijvoorbeeld een aparte microservice aanmaken voor deze functionaliteit.

Tegelijkertijd begonnen ontwikkelaars te werken in kleinere, meer gespecialiseerde groepen die individuele services aanpasten en verbeterden zonder dat dit een risico vormde voor de gehele toepassing. Deze groepen namen ook vaak de verantwoordelijkheid voor de werking van hun code, een model genaamd DevOps. Om deze veranderingen mogelijk te maken, begonnen projectmanagers nieuwe methodologieën te ontwikkelen, zoals Agile, waarbij projecten worden opgedeeld in kleinere, frequentere releases.

Lees verder voor meer informatie over de samenstelling van toepassingen op basis van microservices. Ontdek ook hoe Compass van Atlassian de complexiteit vermindert en tegelijkertijd ontwikkelaars in staat stelt om de vruchten te plukken van dit architecturale model.

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

Compass-logo.

Compass gratis uitproberen

Verbeter je ontwikkelaarservaring, catalogiseer alle services en verbeter de gezondheid van je software.

Wat zijn microservices?


Een microservice is een functie die verantwoordelijk is voor een enkel stukje logica (behalve voor domein-microservices, zoals hieronder wordt uitgelegd). Meerdere microservices worden gecombineerd om gedistribueerde toepassingen aan te maken, zoals Jira Software.

Afbeelding van microservices

Er zijn drie soorten microservices:

  1. Bij domein-microservices worden services losjes aan gerelateerde functionaliteit gekoppeld.
  2. Dankzij integratie-microservices wordt de interactie tussen niet-gerelateerde toepassingen vereenvoudigd.
  3. Bij de unit-of-work-microservices worden enkelvoudige functies behandeld.

Microservices communiceren met elkaar via API's (Application Programming Interfaces). Ontwikkelaars die aan individuele services werken, kunnen de interne werking van de andere microservices ook leren beheersen. Dit biedt nog een voordeel ten opzichte van een monolithische architectuur.

Op microservices gebaseerde architectuur biedt veel voordelen, maar kan zaken ook een stuk ingewikkelder maken. Daarom heeft Atlassian Compass ontwikkeld, waarmee bedrijven het schalen kunnen vereenvoudigen. Compass is een ontwikkelaarsplatform dat alle informatie over engineering-output en teamsamenwerking samenbrengt op één centrale, doorzoekbare locatie.

De belangrijkste principes van microservices


De op microservices gebaseerde architectuur heeft verschillende onderscheidende kenmerken. Ontwikkelaars kunnen hun services onafhankelijk ontwikkelen en implementeren met behulp van de talen en technologieën die bij hun componenten passen.

De communicatie tussen microservices is gebaseerd op API's, waardoor je zonder aanpassingen toegang hebt tot gegevens uit verschillende bronnen. Individuele services kunnen worden geschaald op basis van vraag, waardoor kosten worden bespaard en beschikbaarheid wordt gegarandeerd.

Deze eigenschappen maken gedistribueerde toepassingen op basis van microservices flexibel en gemakkelijk te onderhouden.

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 bieden veel voordelen. Ze vereenvoudigen de ontwikkeling en het projectbeheer. Het is mogelijk dat er soms geen aparte operationele teams meer nodig zijn, omdat ontwikkelaars de activiteiten kunnen afhandelen voor de microservices die ze bouwen.

Enkele andere voordelen van microservices zijn onder meer:

Afbeelding van weegschaal

Herstellingsvermogen en foutisolatie

Eén fout is van invloed op de hele toepassing bij monolithische architecturen. Maar microservices zijn onafhankelijk. Eén fout heeft geen invloed op de andere delen van de toepassing.

Toelichting Agile

Agility

Het opdelen van applicaties in kleinere delen versnelt de ontwikkeling. Het stelt teams in staat om sneller software te bouwen, te testen en te implementeren.

Afbeelding gereedschapskist

Technologische diversiteit

Microservices stellen ontwikkelaars in staat om de juiste tools en technologieën voor een bepaalde taak te kiezen. Dit verhoogt de efficiëntie en productiviteit.

Afbeelding van gestapelde blokken

Verbeterd onderhoud

De mogelijkheid om afzonderlijke componenten te testen maakt het makkelijker om bugs op te sporen en op te lossen zonder dat de hele toepassing offline moet worden gezet.

Uitdagingen van microservices


Een op microservices gebaseerde architectuur heeft veel voordelen, maar brengt ook uitdagingen met zich mee.

Een uitdaging op het gebied van microservices is dat de onafhankelijke services hun logs genereren. Dit is een nadeel vergeleken met de gecentraliseerde logs van monolithische structuren, die ontwikkelaars en operationele teams één enkele bron van waarheid bieden. Monitoring en infrastructuurbeheer zijn ook ingewikkelder omdat er veel bewegende onderdelen zijn. Testen en debuggen is lastig omdat er, in tegenstelling tot bij monolithische structuren, geen geïntegreerde ontwikkelomgeving (IDE) bestaat.

Compass van Atlassian kan je helpen bij al deze uitdagingen. Compass maakt samenwerking mogelijk en stelt bedrijven in staat om de complexiteit van gedistribueerde architecturen te beheren naarmate ze opschalen. Compass brengt de niet-verbonden informatie samen op een centrale, doorzoekbare locatie.

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.

Waar wordt de microservice-architectuur voor gebruikt?


Grote consumentenwebsites maken vaak gebruik van honderden of duizenden microservices. Microservices zijn bijzonder nuttig in de volgende gebruiksscenario's en bedrijfstakken:

  • E-commercesites zoals eBay gebruiken aparte microservices voor winkelwagentjes, mobiele apps en berichtenuitwisseling.
  • Financiële instellingen zoals de Bank of America gebruiken microservices om te communiceren met externe services. Ze worden ook gebruikt voor functies zoals gebruikersautorisaties en het weergeven van transacties.
  • Sociale-mediaplatforms zoals Instagram en Facebook gebruiken microservices om de nieuwsfeeds, berichten, meldingen en vriendennetwerken van gebruikers weer te geven.

Beste praktijken voor het beheer van microservices


In de loop der jaren hebben ontwikkelaars tientallen essentiële beste praktijken bedacht voor de ontwikkeling van microservices. Hieronder staan slechts een paar voorbeelden:

  • Het principe van één verantwoordelijkheid (SRP) specificeert dat elke module of microservice maar één functie mag hebben. De continue integratie (CI) van SRP is een methode voor het controleren van de broncode die de kwaliteitscontroles van de code automatiseert voordat ze in een project worden samengevoegd. Hierdoor wordt snelheid mogelijk gemaakt omdat er geen apart QA-proces nodig is. Deze beste DevOps-praktijk helpt bij de snelheid. CI gaat vooraf aan continue levering (CD), waarbij gebruik wordt gemaakt van geautomatiseerde bouwtools om software klaar te houden voor implementatie.
  • API-gateways vereenvoudigen de communicatie tussen microservices, beheren authenticatie en autorisatie en verhogen de beveiliging.
  • Asynchrone communicatie tussen microservices behoudt de autonomie en vermindert de afhankelijkheden die de werking van applicaties zouden kunnen vertragen.
  • Microservices met versiebeheer zijn van cruciaal belang wanneer ontwikkelaars ingrijpende veranderingen doorvoeren, zoals het verwijderen van een volledige operatie. Deze praktijk maakt overgangen soepeler en verkleint de kans op verstoring van de dienstverlening.

Open DevOps van Atlassian, mogelijk gemaakt door Jira Software, maakt het gemakkelijk voor teams om tools van partners en van Atlassian automatisch te integreren, zodat ze zich kunnen concentreren op het bouwen en uitvoeren van software.

Beheer je microservices-architectuur beter met Compass


Compass van Atlassian is een platform voor ontwikkelaarservaring dat gedistribueerde softwarearchitectuur en samenwerkende teams op één plek samenbrengt. Het biedt een handig overzicht van alle componenten en services waaraan een team werkt. Het bevat ook een catalogus met softwarecomponenten zodat ontwikkelaars gemakkelijk kunnen vinden wat ze zoeken.

Afbeelding van microservices

Compass maakt eenvoudig componentenbeheer mogelijk, evenals het volgen van eigendom en het monitoren van verbanden. De software houdt ook veranderingen in realtime bij.

Compass integreren in je ontwikkelomgeving is eenvoudig vanwege de aanpasbare gebruikersinterface en de compatibiliteit met interne en externe tools. Ontdek hoe je je microservices-architectuur kunt beheren met Compass en hoe het losgekoppelde informatie samenbrengt op een verbonden, centrale locatie.

Microservices: Veelgestelde vragen


Welke tools gebruiken mensen vaak in microservices?

Bedrijven gebruiken vaak tools voor containerisatie, zoals Kubernetes en Docker. Ze gebruiken ook vaak API-gateways tussen microservices en hun klanten. Deze gateways voeren API-verkeersfuncties uit, zoals authenticatie, toegangscontrole en taakverdeling.

Hoe verschillen microservices van een monolithische architectuur?

Monolithische structuren zijn grote codebases die als één systeem functioneren. Ze hebben downtime van het systeem nodig voor updates en foutopsporing. Microservices-architecturen zijn gedistribueerde toepassingen met kleinere, onafhankelijke delen van de functionaliteit. Ontwikkelaars kunnen deze modules upgraden en verbeteren en fouten opsporen zonder dat ze de hele toepassing offline moeten zetten. Dit vereenvoudigt de schaalbaarheid en bevordert de ontwikkelingssnelheid.

Welke invloed hebben microservices op DevOps?

Wie DevOps begrijpt, weet dat continue integratie en continue levering (de DevOps CI/CD-pipeline) de steunpilaren zijn van de DevOps-methodologieën. Het modulaire karakter van microservices past perfect bij deze aanpak. Microservices stellen ontwikkelaars in staat om snel kleine, frequente releases te maken, te testen en te implementeren.

Word lid van de Atlassian Community voor meer artikelen en besprekingen over microservices.

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