Hur microservices i Azure kan användas för olika branscher

16 november 2017

En dag i mitten av oktober byttes kontoret mot Sf Bio Rigoletto och “Patterns and Practices Architecture Summit - Designing Microservices on Azure”. Här är vår sammanfattning av dagen:

På schemat stod ett heldagsseminarium som utgick ifrån ett fiktivt case med att utveckla ett system för ett företag med affärsmodellen att leverera paket med hjälp av drönare. Dagen var indelad i fyra huvudsakliga sessioner följt av ett avslutande verkligt case. Presenterade gjorde Masashi Narumoto, Principal Lead Program Manager, Francis Cheung, Software Development Engineer, och Einar Ingebrigtsen, Principal Technical Evangelist, från Microsoft. De delade med sig av sin arbetsprocess och vad som låg till grund för de arkitekturella beslut som togs under projektets gång.

 

Session 1: Designing Microservices using domain driven design

Inledningsvis lyftes styrkorna med microservices fram, där möjligheten till snabbare release-cykler genom deploy av enskilda tjänster målades upp som den enskilt viktigaste faktorn. Masashi Narumoto presenterade också hur domändriven design använts i arbetet med att bestämma avgränsningen av tjänsterna och dess storlek. Grundläggande här var att de använt konceptet bounded context som tak för att begränsa en tjänsts omfattning, samt domain services, application services, och aggregat som lämpliga indelningar att bygga som tjänster. Med detta som grund belystes även vikten av att ta hänsyn till mer tekniska aspekter så som livscykel och krav på kommunikation. Till exempel kan det vara lämpligt att slå ihop två tjänster för att undvika stora mängder anrop mellan dessa.

 

Session 2: Microservices design patterns

Liksom inom övrig systemutveckling kan man vid utveckling av microservices dra nytta av designmönster. Under denna delen av dagen presenterades vissa av de mönster som användes i caset, vilket inkluderade exempelvis Ambassador, Scheduler Agent Supervisor, samt Load Leveling pattern. Vid implementationen av Load Leveling användes exemplevis en Azure Event Hub och IoTHub React för att begränsa antalet inkommande meddelanden, vilket motverkar en överbelastning av systemet.

 

Session 3: Microservices Reference

Under denna session presenterades den implementation av microservices och övriga resurser i Azure som hade gjorts. De valda resurserna var bland annat Azure Container Service, Kubernetes, Azure Event Hubs, Azure Data Lake, och Azure Functions. Här lyftes fördelarna med att använda en service mesh för internkommunikation mellan tjänster, då det erbjuder stöd för saker som transient error retries och circuit breaking. För detta berättade Francis Cheung att de hade valt att använda sig av linkerd.

 

Session 4: DevOps in Microservices

För att återkoppla till inledningen och vikten av möjligheten till snabba release-cykler, så krävs det vid microservices-utveckling en bra DevOps-organisation som kan hantera ett Continuous Integration och Continuous Delivery workflow. En förutsättning för detta är en mogen IT-organisation där en hög grad av automatiserade tester, såväl enhetstester som integrationstester, används för att säkra nya ändringar.

 

Putting it all into practice: A real-world sample from Red Cross

Som avslutning på dagen presenterade Einar Ingebrigtsen ett pågående projekt där Microsoft arbetar med det norska Röda Korset. Målet med projektet är att ta fram en molnlösning, där utsatta länder med hjälp av volontärer kan rapportera in fall av Kolera och på så sätt upptäcka utbrott och i förlängningen rädda liv. Den här lösningen byggs också med Kubernetes och drivs som ett open source-projekt med frivilliga arbetsinsatser.

 

Nästa nyhet

Fler och mer relevanta bottar och appar i framtiden

10 november 2017

B