Skytjenesten Azure er i siget om dagen. Vi skriver stadig vekk om at store norske teknologinavn som Vipps og Lånekassen flytter dit, men hva er det som gjør Azure så bra?
For å finne ut av det trenger vi en ekspert, og fagansvarlig for .NET i Novanet Lars Alexander Jakobsen (40) er nettopp det. Til daglig jobber han nemlig med en tjenesteplattform bygget på Azure for Dahl Optimera, norges ledende distributør for byggemateriell.
#1. Lars, hvordan forklarer du Azure til en nyutdannet utvikler? 🤔
Azure er Microsofts plattform for å utvikle tjenester og applikasjoner i skyen.
Plattformen er svært omfattende og strekker seg fra drift av servere i skyen (Virtual Machines) til mer spesialiserte tjenester forfor eksempel maskinlærning, overvåkning eller apputvikling.
Azure gjør det også mulig å koble løsninger som er satt opp på lokale servere (on-prem) mot Azure.
#2. Det finnes mange andre skytjenester, hvorfor skal man velge Azure istedenfor? 👋
Jobber man i hovedsak med .NET, slik som meg, så er det lett å bli trukket i retning av Azure.
Blant annet fordi Microsofts utviklerverktøy er godt integrert mot Azure, og Azure er tidlig ute med å støtte nye versjoner av .NET-rammeverket.
Microsoft har de siste årene tatt en retning hvor de ønsker å tiltrekke seg alle utviklere, også de som ikke jobber med .NET. Dette ved å fokusere på Open Source, kryssplattform og støtte for andre programmeringsspråk. Dette gjør det tryggere å velge Azure, også for fremtidige behov og teknologivalg.
Tjenesten til Fredrik (31) har hundretusenvis av samtidige brukere
En siste fordel med Azure er at hos kunder som allerede benytter Microsoft sine produkter, f.eks. Microsoft 365 eller Dynamics, kan det være enklere å selge inn Azure.
Det sagt, så ser vi også kunder som velger å kombinere flere skyleverandører og velger de tjenestene som passer de best på tvers av leverandører. Dette kan for eksempel være basert på kostnad eller i hvilken land/region tjenestene er tilgjengelig. Andre kunder som ønsker å være mindre knyttet til en enkelt skyleverandør, kan for eksempel benytte seg av Containers og Kubernetes, som gjør det lettere å løfte tjenestene fra en leverandør til en annen.
#3. Vi synes det er vanskelig å få oversikt i Azure. Hva bruker du? 💡
Azure har over tid blitt en veldig omfattende plattform, men i prosjektene våre ser vi at et utvalg av tjenestene brukes ofte.
- For å drifte applikasjoner og tjenester brukes ofte Azure App Service, Azure Functions eller Azure Static Webapp.
- For lagring brukes blant annet Azure SQL Server, Azure CosmosDB og Azure Storage.
- Hos flere kunder bruker vi Azure API Management for å ha kontroll på API-ene våre, samt å tilby en utviklerportal.
- For å kommunisere mellom tjenestene bruker vi ofte Azure Service Bus.
- Alt kobles mot Azure Application Insights slik at vi kan følge med på logger og ressursbruk.
- I tillegg brukes Azure Devops til bygg/deploy, samt oppsett av Azure-ressurser (via Azure CLI, Terraform e.l.).
Valg av Azure-tjenester som benyttes er basert på behovene til hver enkelt kunde. Dette kan være for eksempel krav til skalering, kostnad eller hva slags data som skal lagres.
Utviklere kontrollerer Tesla med Microsoft Hololens
I Novanet har vi utarbeidet en referansearkitektur for skyløsninger som er basert på mange av tjenestene som jeg har nevnt. Denne er basert på kjente prinsipper og best practices, og er et forsøk på å lage en robust og fleksibel arkitektur som kan benyttes som utgangspunkt når vi foreslår løsninger. Noen av prinsippene vi benytter oss av er beskrevet her: https://novanet.no/arkitekturprinsipper.
Det viktigste er vel å kjenne til fordeler og ulemper for de vanligste tjenestene i Azure. Slik at man gjør bevisste valg når man velger det ene fremfor det andre. Man kan f.eks. ta en Azure-sertifisering, som Azure Fundamentals, for å få god oversikt over Azure-tjenestene.
#4. Hva bruker du mest tid på i uka i forbindelse med Azure? 💼
I det siste har jeg brukt mye tid i Azure Devops.
I prosjektet jeg er nå, bruker vi Azure Devops til å sette opp Azure-infrastruktur, rulle ut tjenestene våre (bygg/deploy) og til å kjøre tester.
Vi bruker Terraform til å sette opp Azure-infrastruktur, så det går med en del tid til å få Terraform-skriptene riktig når det er mange Azure-ressurser som skal settes opp.
I tillegg så kjører vi både ytelsestester (med K6) og UI-tester (med Cypress) fra Azure Devops, og disse må skrives og oppdateres når vi får ny funksjonalitet.
#5. For folk som vil komme i gang med Azure, hva anbefaler du å teste ut? 👶
Først ville jeg kanskje satt opp en enkel nettside på for eksempel Azure Static Webapp.
Videre kan man koble denne mot et REST API på Azure App Service og koble dette mot en database Azure SQL Server. Da har man en fungerende applikasjon, som ligner mye av det vi lager hos kundene våre.
Sånn lærte Vipps-utviklerne Azure
Man finner masse god dokumentasjon og «hands-on-labs» hos Microsoft Learn. Hvis man vil utfordre seg selv litt ekstra, kan man sette opp dette via kommandolinje med Azure CLI.
I reelle prosjekter ser man fort at det lønner seg å benytte Azure CLI eller en annen løsning for Infrastructure-as-code for å sette opp skyinfrastrukturen, slik at man er sikker på at infrastrukturen blir satt opp helt likt hver gang.
#6. Er det noen spesiell programmerings-stack Azure fungerer bedre enn andre med? 🪟
Alt som har med .NET å gjøre fungerer åpenbart godt på Azure, da .NET og Azure begge er utviklet av Microsoft.
Ellers så synes jeg at støtten for andre språk og rammeverk i Azure begynner å bli veldig god.
#7. Er det noe som er knotete med Azure? 😠
For eksempel det å sette opp et Kubernetes-cluster i Azure kan være vanskelig.
Dette er vel ikke nødvendigvis på grunn av Azure, men fordi Kubernetes i seg selv er et kompleks emne å sette seg inn i. Hos en del kunder ser vi at Kubernetes-clusters driftes av spesialister på dette.
En annen ting som kan være knotete i Azure er søk og oversikt i Application Insights. Her kunne grensesnittet i Azure-portalen vært bedre, og gjort det lettere å få oversikt over logger og ressursbruk på tvers av tjenester.
Vi ser stadig kunder som velger andre løsninger for overvåkning/monitorering, spesielt de som har behov for å slippe andre enn utviklere inn for å sjekke.