Wij werken dagelijkse met meerdere Independent Software Vendors (ISVs) om hun oplossing te optimaliseren met behulp van Microsoft Azure. Tijdens deze intensieve reis, met onze ISVs komen we veel verschillende Azure features tegen en implementeren we er minstens zoveel. De mogelijkheden binnen Azure zijn nagenoeg onuitputtelijk en de lijst met bouwstenen lijkt eindeloos. Echter zijn er een aantal services welke wij regelmatig tegenkomen die een vaste plek hebben veroverd in de architectuur van de ISV. Deze diensten vallen bijna altijd binnen de Platform as a Service propositie. Maar waarom Platform as a Service?
Platform as a Service (PaaS) binnen Microsoft Azure komt met een hoop voordelen welke out-of-the-box aanwezig zijn. Microsoft biedt uitstekende documentatie van de SDKs, biedt lifecycle management tooling en de onderliggende infrastructuur wordt beheerd door Microsoft. Dat betekent: Geen beheer van het operating system, geen onderhoud, geen patchavonden. Alleen een dienst afnemen.
Daarnaast zijn er mogelijkheden op het gebied van monitoring, security en support welke eenvoudig te implementeren zijn zonder dat daar complexe projecten aan vooraf gaan (denk bijvoorbeeld aan Application Insights).
Omdat wij een aantal van deze services dagelijks tegenkomen bij onze klanten willen wij onze top 5 met jullie delen.
Web Apps
Azure Web Apps zijn een onderdeel van de Azure App Services diensten. App Service bieden een platform om Web Applicaties, APIs, Bots en onder andere Functions te hosten, te beheren en te schalen. Web Apps zien wij vaak als eerste terugkomen waarmee we Azure Web App de huidige IIS of Apache configuratie vervangen. Met de juiste configuratie en minimale aanpassingen in de code kan bijna iedere Web Applicatie feilloos overgezet worden naar een Azure Web App. Met de transitie naar Web Apps krijg je direct de voordelen van geautomatiseerde updates (zonder downtime), een uitstekende SLA en ingebouwde security features. Hetgeen je in een traditionele omgeving zelf moet implementeren en onderhouden wordt met het gebruik van Azure Web Apps voor jou gedaan.
Nagenoeg alles kan worden ingezet op een Azure Web App, van .Net code tot NodeJS applicaties en met de beschikbaar extensions, welke deels door de community worden onderhouden, zijn de mogelijkheden eindeloos.
Wij adviseren wel altijd gebruik te maken van Web Apps in combinatie met Application Insights. Met onze ervaring werkt Web Apps het beste wanneer de best practices van de specifieke programmeertaal wordt aangehouden. Met Application Insights kunnen we naast het web verkeer ook de bottelnecks in de architectuur en de applicatie opsporen en tijdens de testfase van een initiële deployment of een nieuwe release al vaststellen wat de performance impact zal zijn voor de eindgebruiker. Een must have in ieder DevOps process.
Logic Apps
Azure Logic Apps kunnen worden gebruikt om de business logica te automatiseren (wie heeft er nu niet nog een aantal stappen die handmatig moeten worden uitgevoerd). Wij zien in de praktijk dan ook vaak dat Logic Apps ook goed werken om het zogenaamde “laaghangend fruit” te plukken en de eenvoudige, repetitieve taken te automatiseren.
Logic Apps komen met een groot aantal standaard connectoren voor de veelgebruikte SaaS oplossingen. Als de connector voor jouw gewenste oplossing er niet tussen zit dan is er altijd ruimte voor een stukje maatwerk, bijvoorbeeld in combinatie met een Azure Function. Kort samengevat kun je met Logic Apps letterlijk iedere workflow met een aantal klikken automatiseren.
Azure Functions
Azure Functions zijn (net als Logic Apps) gebaseerd op Azure App services. Echter hebben Functions een enkel doel: Execute on demand. Met de standaard beschikbaar HTTP triggers en REST API endpoints hoef je alleen maar de logica te ontwikkelen. Bijvoorbeeld: Het automatisch converteren van Word documenten naar PDF wanneer een document door je applicatie wordt weggeschreven, of een stuk ontvangen tekst automatisch door de cognitive services tekst analysis heen halen voor het detecteren sentiment in een bericht.
Je kunt eigenlijk alles bouwen op een Azure Function, echter houdt er wel rekening mee dat Azure Functions “short lived” zijn en alleen worden gestart wanneer deze wordt aangeroepen. Na de verwerking zal de function weer afsluiten en pas weer worden gestart wanneer deze nodig is. Het voordeel hiervan is dat zolang de functie niet wordt gebruikt, er ook geen kosten worden gemaakt.
Azure Functions worden doorgaans gecategoriseerd als een onderdeel van de Serverless propositie (net als Logic Apps). Echter zijn functions vergelijkbaar met App Services, het grote verschil is dat functions gericht zijn op een enkele taak en Web Apps doorgaans een gehele applicatie bieden. Beiden hebben een eigen use case maar worden in de praktijk vaak in combinatie met elkaar gebruikt
Azure SQL
Azure SQL is de go-to database oplossing voor relationele databases. De meeste ISVs maken gebruik van relationele databases (doorgaans ook vanuit een stukje historie). Azure SQL is een turn-key oplossing voor relationele databases met een uitgebreide set aan opties op het gebied van beveiliging, schaalbaarheid en beschikbaarheid. Helemaal wanneer we gaan kijken naar de Elastic Pools mogelijkheden. Veel van onze klanten bieden een applicatie aan een groot aantal eindklanten, welke alleen één of meerdere databases gebruiken, door het inzetten van Elastic Pools kunnen we de financiële impact van een cloud database oplossing aanzienlijk verlagen ten opzichte van andere cloud database providers.
Azure SQL beschikt standaard over een extreem hoge beschikbaarheid maar desgewenst kunnen additionele replicatie configuraties worden toegepast waarmee de database over meerdere regio’s (geo-replicatie) gerepliceerd wordt.
Het migreren maar Azure SQL heeft doorgaans een kleine impact en vraagt weinig tot geen wijzigingen op het gebied van development (naast het aanpassen van de connection string). Om de database nog verder te optimaliseren komt Azure SQL met ingebouwde intelligentie wat gebruik maakt van de machine learning mogelijkheden welke Azure biedt. De database en datamodellen worden geanalyseerd en hieruit vloeien verschillende adviezen voort op het gebied van performance en security waarmee de database nog verder geoptimaliseerd kan worden.
Microsoft biedt meerdere strategieën om naar Azure SQL te migreren. Zo kun je gebruik maken van de Database Migration Services, zelf de database importeren of één van de vele andere mogelijkheden benutten om je data te migreren naar een Azure SQL oplossing.
Azure Service Bus
Azure Service Bus is een dienst om het zogenaamde berichtenverkeer en de afhandeling daarvan toe te voegen aan je applicatie. Zeker de meer complexe architecturen maken gebruik van een Service Bus, of willen dit graag.
Azure Service bus is een multi-tenant berichtendienst, gericht op asynchrone verwerkingen. Er worden meerdere protocollen ondersteunt (AMQP, SBMP en HTTP) en geografische beschikbaarheid en failover configuraties zijn met een druk op de knop geïmplementeerd.
Het gebruik van Azure Service Bus kan zo simpel zijn als het versturen van een bericht tussen twee services (message queuing), echter worden de meer complexe topologieën ook ondersteunt en komt de service bus hier echt tot zijn recht met het gebruik van Topics en Subscriptions. Hiermee wordt het publish/subscribe scenario ondersteunt. Topics kunnen meerdere opzichzelfstaande subscriptions bevatten en een zogenaamde “subscriber” kan de berichten welke aan een topic worden gericht ontvangen.
Azure Service bus biedt ook een set aan geavanceerde features, welke normaal alleen beschikbaar zijn na complexe Enterprise Service Bus implementaties. Denk hierbij aan auto-forwarding, dead-lettering, auto-delete en duplicate detection.