Microsoft Azure’s PaaS tjänster är bästa valet av molntjänst för agila .Net utvecklare

”Even for someone who has been developing Alexa skills, (like myself), AWS Lambda is still not that intuitive for someone with an ASP.NET 4.x background exclusively – at least not in my opinion. This makes it less preferable to Azure, which makes initial setup significantly easier as Microsoft intimately knows the kinds of projects .NET developers have traditionally worked with, and ease the barrier to entry for an HTTP triggered function.”

AWS Lambda vs Azure Functions for C# Serverless

Vad gäller Azures serverless PaaS tjänster som app services så har de övriga molntjänsterna inget som är lika bra när det gäller kombinationen användardokumentation och utbildningar om ni jobbar med .Net eller .Net Core utveckling i C# mot App Services och övriga serverless PaaS tjänster i Azure.

Även om stora molntjänster är betydligt komplexare att lära sig använda än till exempel IIS on-prem eller att drifta sajter på ett vanligt webbhotell så är nog Azure PaaS det lättaste att komma igång med för .Net utvecklare.

”.NET on Azure for Beginners will teach you the basics of Azure and how to leverage its services and features to build amazing cloud applications. You will learn how to deploy web apps, work with storage and data, authenticate and use Managed Identity, harness the power of containers, and even deploy with GitHub Actions. By the end of this series, you will have the skills and confidence to start developing your own .NET applications on Azure!”

För systemutveckling i .Net eller .Net Core finns oftast inga skäl att använda något annat än Azure om man har behov av en stor molntjänst och vill göra det enkelt för sig.

Azure PaaS fungerar även med t.ex. java/spring boot och node.js applikationer men stödet är bäst för .Net inklusive dokumentation, stöd från communityn och utbildningsmaterial och kommer troligen alltid vara, så .Net och C# bör vara förstahandsvalet för systemutveckling i Azure.

T.ex AWS som nog har lite fler tjänster än Azure har byggt sin grund på att drifta VM:s, streaming och lagring medans Microsoft alltid varit ett utvecklarfokuserat bolag, och den skillnaden märks även mellan de olika molntjänsterna.

Men java utvecklare kan däremot ha skäl att välja AWS ändå eftersom alla deras tjänster har bättre stöd för Java då det är huvudspåret i AWS, precis som Google Cloud har bäst stöd för Python.

Top Azure PaaS Services That Developers Love and Why

Skripta Azure infrastrukturen för er .Net applikation i Powershell och Azure CLI i stället för att använda själadödande ARM Templates

”After weighing all the advantages and disadvantages, for me the points that make the difference to use the Azure CLI in favor of ARM Templates are:

Better maintainability
Easy to read
Easy and much faster to create
More in control
Doable by all team members

Only when the Azure CLI does not support a resource, and I expect this is only temporary, I still use an ARM template. In case of provisioning Application Insights for example.”

Stop using ARM templates! Use the Azure CLI instead

I början kommer ni antagligen att skapa upp infrastrukturen för er applikation i Azure via webbgränssnittet manuellt eller inifrån Visual Studio när ni vill publicera den till Azure vilket är enklast när man lär sig eller om det bara är enstaka saker man driftar där och inte behöver olika miljöer.

Quickstart: Deploy an ASP.NET web app

När ni väl börjat förstå er på hur man skapar upp infrastrukturen för en applikation i Azure och enkelt vill kunna återskapa den vid behov och kanske har behov av flera olika miljöer är det mycket enklare att sköta återskapandet av infrastrukturen ni behöver för en applikation i Azure genom att skripta den i Powershell och Azure CLI i stället för att använda själadödande ARM Templates som många förespråkar.

Då kan ni riva ner infrastrukturen (resursgruppen med de tjänster er applikation använder) och sedan enkelt återskapa den genom att köra ert Powershell eller Azure CLI skrip och på nån minut har ni lagt upp den igen och kan börja deploya dit.

Det kan vara praktiskt för utvecklings och testmiljöer som kanske inte alltid behöver ligga uppe och även för att få test och produktionsmiljöerna att se exakt likadana ut.

Skapar man upp miljöerna manuellt finns alltid risken för att man inte gör exakt likadant varje gång så i de fallen är det lämpligt att automatisera det genom att skripta dem i stället och dessa skript kan lagras i en folder i er applikations solution / projekt och versionshanteras via git precis som applikationen i sig.

”But they come at a cost of complexity and are generally unfriendly for developers to understand and tweak. It feels to me like we’re not too far away from code-based approaches being able to offer the same benefits but with a much simpler and more developer-friendly syntax. The Azure CLI already seems very close so long as you take a sensible approach to what additional actions your script performs.”

ARM Templates vs Azure CLI

De renläriga infrastructure-as-code människorna kanske inte håller med mig men de är oftast lite för dogmatiska och tänker inte alltid praktiskt och man måste göra en kostnads/nytto anlys för saker man gör.

Jag anser inte att ARM Templates tillför ett tillräckligt stort mervärde för att berättiga den icke oanseliga extra tiden och energin man måste lägga ner på att skapa upp infrastruturen med dem i stället för att skripta det ens om man använder Biceps.

För en utvecklare är det dessutom mycket naturligare att skripta än att knacka ihop ARM Templates.

Azure Command-Line Interface (CLI) documentation

Azure PowerShell Documentation

Azure’s serverless PaaS tjänster och Azure Devops fd. VSTS ger möjligheter till DevOps out-of-the-box för agila .Net utvecklare

”In this episode, Robert is joined by Mickey Gousset, who takes us on a tour of Azure Pipelines. He shows how straightforward it is to automate your builds and deployments using Azure Pipelines. They are a great way to started on your path to using DevOps practices to ship faster at higher quality.”

Deploy to App Service using Azure Pipelines

Azures PaaS lager i kombination med Azure Devops fd. VSTS ger även utvecklarna bra möjligheter att jobba på ett modernt och effektivt sätt enligt devops, men de behöver då lära sig använda Azure DevOps och CI/CD i kombination med Azures PaaS lager.

För större organisationer eller tjänsteleverantörer med behov av CI/CD för att snabbt och säker kunna deploya sina system ofta kan det var värt att investera tiden som krävs för att lära sig göra det via Azure DevOps och dess CI/CD pipelines, men för lite enklare behov kan man även deploya till Azure direkt från Visual Studio om man vill slippa overheaden med CI/CD piplines i Azure DevOps.

”Having said that, the decision shouldn’t be taken hastily. Automated pipelines are better suited for big projects with a lot of resources. Small teams and simple projects can incorporate some automation into their processes without having to establish a full-fledged pipeline.”

”Before taking the plunge, it’s a good idea to hire consultants that can assess the potential costs and risks of implementing continuous integration and delivery to your processes. Make an informed choice, one that suits the needs of your business.”

Pros and Cons of CI/CD Pipelines

Alla organisationer har kanske inte behov av stora och komplexa molntjänster som Azure eller behov av att använda automatiserade CI/CD pipelines, så många mindre organisationer klara sig nog bra med att deploya sina webbappar och webb API’er direkt från Visual Studio i stället vilket är enklare.

Kortfattat kan man säga att ju fler utvecklare som är involverade i utvecklingen av en viss produkt eller tjänst och ju oftare ni måste deploya, desto vettigare är det att använda CI/CD pipelines och automatiserade tester.

Driftsmodeller i Azure med betoning på agil utveckling i .Net

”Operating models are unique and specific to the business they support, based on their current requirements and constraints. But operating models aren’t snowflakes. There are several common patterns in customer operating models; this article outlines the four most common patterns.”

Review and compare common cloud operating models

Sen kan det vara ganska viktigt för er att fundera på vilken driftsmodell ni vill använda er av och man kan säga att den decentraliserade modellen är den som är mest kompatibel med agil utveckling där varje team kan jobba så självständigt som möjligt och nog passar bäst för små och medelstora företag och organisationer medans den centraliserade är motsatsen och kanske bara nödvändigt när det krävs stenhård kontroll på allt och entrerpriser modellen är för större organisationer som Microsoft anser är det man bör sträva efter.

Men allt beror på smak och behov och då jag själv är en agil förespråkare så anser jag att teamen ska kunna jobba så självständigt som möjligt antingen enligt den decentraliserade modellen eller enligt en decentraliserad approach i sin subscription i enterprise modellen med så lite centralisering och styrning i form av rättigheter, plattformar och riktlinjer som möjligt.

”As companies move data to the cloud, IT departments are looking to put in place policies and processes so that employees and business departments can take advantage of cloud services that drive business growth without compromising the security, compliance, and governance of corporate data. The purpose of this document is to provide an overview, guidance, and best practices for enterprise IT departments to introduce, consume, and manage Microsoft Azure-based services within their organization. The target audience is enterprise architects, cloud architects, system architects, and IT managers.”

Azure Onboarding Guide for IT Organizations

Minimum behöver man inte så mycket mer riktlinjer än kanske bestämma namnstandarder, utvecklingsspråk, ramverk,  eventuell databashanterare, meddelandehanterare o.s.v och möjligen vissa rättighets och säkerhetskrav så inte varje utvecklare eller team gör sin del i sitt favoritspråk, ramverk, db och mq för då kan det bli lite svårförvaltat med tiden.

Eventuell kan man även bestämma vilka tjänster som anser för dyra och helst ska undvikas för vissa saker kostar mycket.

I övrig får teamen själv avgöra arkitekturen och vilka tjänster som ska användas och hur så länge kraven på applikationens funktionalitet och andra krav uppfylls och självklart ska man följa KISS principen som agilt team och inte göra det mer komplicerat än det behöver vara.

Det innebär även att man ska försöka använda de billigaste tjänsterna eller versionerna av dessa som ändå uppfyller kraven då kostnadsaspekten är en viktigt del av att använda molntjänster som Azure, för det kan bli hur dyrt som helst om ni fläskar på för mycket bara för att det går eller faller i ”the new shiny thing” fällan.

I stora drag vad ni behöver fundera på men detaljerna i ert specifika fall måste ni utarbeta själva.

Hur ni kan gå tillväga för att migrera en befintlig on-prem .Net applikation till Azure

”As part of the hybrid cloud strategy, Azure provides growing solutions for migrating on-premises applications and workloads to the cloud. With simple steps, you can comprehensively assess your on-premises resources to determine how they’ll run in the Azure platform. With a deep assessment in hand, you can confidently migrate resources to Azure. When resources are up and running in Azure, you can optimize them to retain and improve access, flexibility, security, and reliability.”

Overview of application migration examples for Azure

Det även vara intressant för vissa att veta hur man migrerar en befintlig on-prem applikation till Azure så ovan har ni en bra och utförlig guide för hur ni ska gå tillväga och vad ni ska tänka på när ni flyttar en on-prem applikation till Azure, med scenarios för flytt både till Azures PaaS lager och dess IaaS lager.

Azure jämfört med andra molntjänster

Vill slutligen poängtera att detta inlägg handlar om systemutveckling i framförallt .Net, och de fördelarna som finns med Azures PaaS lager i kombination med Azure Devops fd. VSTS för större organisationer.

För att vara rättvis kan ni läsa nedan artikel för en grov jämförelse av Azure, AWS och Google Cloud, för det kan hända att någon av de andra två passar just er bättre om ni behöver något som är unikt för just dem.

Cloud Services Comparison: AWS vs. Google vs. Azure

Jag kommer även skriva ett inlägg lite längre fram med tips för er som funderar på vilken molntjänst som är bäst för era behov men själva utredningen av era behov vs de olika molntjänsterna är något ni bäst gör själva.