Build
Mikrotjenester og Service Fabric på årets Build - Bouvet Norge blogmask-mobile

Mikrotjenester og Service Fabric på årets Build

Håvard Engum 
10. mai 2016

I månedsskiftet mars-april dro fire Bouvet-konsulenter fra Oslo-kontoret til San Francisco for å delta på årets Build-konferanse. Dette er stedet å være hvis man ønsker å få med seg store kunngjøringer innen Microsofts portefølje av teknologi, produkter og verktøy. Årets billetter ble (tilsynelatende) utsolgt på minutter, men mange som først ble satt på venteliste fikk etterhvert plass på konferansen.

En av de mest interessante og morsomme presentasjonene, etter min mening, var en presentasjon holdt av Scott Hanselman under åpningsforedraget den andre dagen. Her demonstrerte han spillet Age of Ascent som er en imponerende oppvisning i hva man kan få til av grafikk i en moderne nettleser i dag.

Skjermbilder fra spillet Age of Ascent
Skjermbilder fra spillet Age of Ascent

Kanskje like interessant er hvordan spillet er bygd opp under panseret ved bruk av en mikrotjeneste-arkitektur bygd på Service Fabric. Dette gjør at de enkelt kan skalere systemet opp når belastningen øker, samt skalere enkelt-tjenester uavhengig av hverandre dersom lasten er ubalansert.

I tillegg kan de oppgradere individuelle tjenester i spillet samtidig som tusenvis av spillere er inne og spiller, uten at disse nødvendigvis merker at noe er skjedd. Plattformen hjelper systemet å være robust ved at det restarter tjenester som feiler. Systemet kan også rulle tilbake til forrige versjon dersom oppgradering av en tjeneste feiler.

Service Fabric har vært i preview i over et år og under årets Build annonserte Microsoft at de endelig hadde sluppet Service Fabric under General Availability (GA). Man har dermed mulighet til å ta plattformen i fullt bruk i produksjonssystemer med støtte og support fra Microsoft. Service Fabric kan kjøres som en tjeneste i Azure, On-Premise eller hos en annen skyleverandør (f.eks. Amazon). En versjon for Linux er også i en testfase.

En annen video fra Build det også være greit å få med seg er intervjuet med Mark Russinovich (CTO Azure) hvor han blant annet snakker om når det lurt (og ikke lurt) å bruke Service Fabric.

Litt mer om Service Fabric..

Et Service Fabric-system er bygd opp av et cluster av virtuelle eller fysiske maskiner (noder). Et cluster må bestå av minst fem noder og disse blir arrangert logisk i en ring-topology. Her vil de forskjellige nodene overvåke hverandre, og sjekke helsetilstanden til hverandre. Tjeneste som kjører i systemet vil da bli distribuert utover disse maskinene basert på konfigurasjon. Man kan selvfølgelig dynamisk øke antallet noder, og man kan flytte tjenester rundt på de forskjellige nodene samt endre antallet av hver tjenestetype.

Under ser du et system som består av fem noder og tre tjenester som er distribuert utover de forskjellige nodene:

service-fabric-topology

Når nå Service Fabric SDK er tilgjengelig kan hvem som helst begynne å leke seg med applikasjoner bygd på mikrotjeneste-arkitektur. Når man installerer SDK'en, følger det med en Visual Studio prosjektmaler som gjør det lettere å komme i gang med å bygge tjenester. I tillegg vil det installeres støtte for å debugge Service Fabric lokalt. Her vil det da emuleres at det kjøres på fem noder.

For å overvåke systemet kan man bruke Service Fabric Explorer som er en del av plattformen:

Service fabric explorer

For de som ønsker å gå litt mere i dybden vil jeg anbefale et foredrag holdt av Jeffrey Richter og Mark Fussell på Build: Azure Service Fabric for developers

Det finnes det også en rekke andre ressurser på nettet som man kan lære av, og her er et lite utvalg:

Service Fabric Overview: https://azure.microsoft.com/nb-no/documentation/articles/service-fabric-overview/
Service Fabric Getting started: github.com/Azure/azure-content/blob/master/articles/service-fabric/service-fabric-get-started.md Claus Asbjørn Sørensens blog med mange gode eksempler: http://blog.geist.no/azure-service-fabric-introduction-getting-it-running/

Til slutt..

Noe av filosofien bak Service Fabric er at den skal gjøre det enklere å lage systemer som innehar de egenskapene som moderne systemer krever. Dette er egenskaper som skalerbarhet, robusthet og evnen til å kjapt oppgradere med ny funksjonalitet. Dette uten at utviklerne skal være nødt til å løse alle de vanskelige problemene det faktisk er å implementere disse egenskapene. Tanken er å la utvikleren konsentrere seg om forretningslogikken i tjenestene, mens plattformen langt på vei skal ta seg av resten.

Det er en god del ting å sette seg inn i - og det vil nok oppleves som en terskel å gå fra en mer tradisjonell arkitektur til en mikrotjeneste-arkitektur basert på Service Fabric. Dersom man likevel har funnet ut at mikrotjenester er det man ønsker å gå for - er jeg er overbevist om at man kan få mye gratis ved å ta i bruk denne plattformen. Det skal bli spennende å se hvilke systemer som vil bli utviklet på Service Fabric.

Temaer