Microservice teknologistak

Når man udvikler microservices findes der et hav af forskellige open source værktøjer, der kan automatisere og simplificere en masse arbejde, og dermed hjælpe team’et med at gøre udviklingsprocessen, tests, deployment og overvågning af services i produktion nemmere.

Jeg har i et projekt arbejdet på at implementere en prototype på en serviceplatform, som er bygget op omkring en microservice infrastruktur. De forskellige microservices understøtter hver deres del af den samlede forretningsfunktionalitet. Prototypen skal open sources når projektet er færdigt.

Kvalitetsattributter

I starten af projektet gennemgik team’et alle software-kvalitetsattributter, og prioriterede dem på en skala fra 1 til 5. De to kategorier, som vi prioriterede højest med henblik på microserviceplatformen i produktion, er som følger:

Højest prioritet:

  • Modifiability: Andre grupper eller enkeltpersoner kan nemt tilføje ny funktionalitet til platformen og/eller microservices.
  • Monitorability: Det skal være muligt at overvåge ressourceforbrug, fejl, afhængigheder og andre vigtige aspekter af systemet. Som en del af et microservicesystem er det afgørende at kunne overvåge systemet til enhver tid.
  • Developer distribution: I en open source-verden skal dette prioriteres så højt som muligt.
  • Usability (of architecture): Fra udviklerens perspektiv skal det være nemt at tilføje nye komponenter og / eller bruge eksisterende komponenter så let som muligt.

Næst-højest prioritet:

  • Interoperability: Da der er mange forskellige leverandører til det virkelige system, skal de forskellige mikroservices i systemet være i stand til at kommunikere let, og mikroserviceplatformen skal kunne kommunikere nemt med microservices.
  • Security: Sikkerhed i microservices skal selvfølgelig have høj prioritet, men ikke som aller højest prioritet, da dette ville betyde, at sikkerhed dominerer alle kvalitetsattributter herunder.
  • Testability: Det skal være nemt at teste microservices, integrationen af microservices samt med platformen.

API-drevet udvikling med Swagger

Når man starter helt fra bunden med at definere en API-specifikation for sine microservices, kan man arbejde sig fra det yderste lag (API’et) og langsomt ind mod midten, dvs. kernefunktionaliteten i hver microservice. Det er her Swagger kommer ind i billedet, da det netop er det som Swagger er bedst til.

Swagger er en formel specifikation samt et økosystem af værktøjer, bl.a. en front-end brugergrænseflade, diverse low-level code libraries og kommercielle API managementløsninger. Man kan bruge Swagger Editor til at generere Swagger API definitioner, og derefter bruge den integrerede Swagger Codegen tool til automatisk og hurtigt at generere enten client eller server implementationen af det definere API.

  • Swagger Editor: Tillader redigering af API-specifikationer i YAML i en browser og visning af dokumentation i realtid. Gyldige Swagger JSON beskrivelser kan derefter genereres og bruges med det fulde Swagger toolset (kodegenerering, dokumentation osv.).
  • Swagger Codegen: Tillader generering af både klientbiblioteker og serverstubbe fra en given Swagger-definition.

Messaging og API gateway

Men hvordan håndteres kommunikation imellem microservices? Her har vi valgt et værktøj, der kan håndtere messaging imellem microservices på en meget elegant måde og kan håndtere millioner af beskeder samtidigt: nemlig Kafka.

Kafka er god ting én ting: messaging. Og derfor er det et ekstremt effektivt værktøj til netop det. I stedet for en anden messaging-løsning, der kan alt muligt andet oveni, men som af den grund ikke har de samme fordele som Kafka: skalering, fejl-tolerance, hastighed, høj load og lav latency osv. Kafka bliver brugt af mange af de store IT virksomheder i verden og der er stof nok til et blogindlæg kun om Kafka.

Kong en open-source API Gateway og et Microservices Management lag, som tilføjer high performance and reliability ind i ens microserviceprojekt. Kong er et skalerbart, open source API lag (også kaldet API Gateway eller API Middleware). Kong kører foran enhvert RESTful API, dvs. i dette tilfælde foran hver REST-baseret microservice.

Til GOTO CPH 2017 konferencen er der specielt denne talk omkring microservices og hvad det kræver af forskellige teknologistakke, som ser spændende ud.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *