Microsoft Azure-molnet erbjuder många tjänster för nästan alla scenarier som du kan tänkas behöva. Du kan kategorisera dessa tjänster i molntyper som IaaS, PaaS och SaaS för att avgöra hur mycket kontroll och ansvar du har jämfört med den tid du kan spendera på att bygga saker som är viktiga.
Låt mig förklara dessa typer lite närmare:
- IaaS (Infrastructure-as-a-Service)
- PaaS (Platform-as-a-Service)
- SaaS (Software-as-a-Service)
- De bästa Azure PaaS-tjänsterna
- Web Apps
- Mobilapplikationer
- Logiska appar
- Azure Functions
- Azure WebJobs
- Vad ska du använda när
- Apptjänster har delade funktioner
- Deployerar tjänster
- Azure Event Grid
- Azure Service Bus
- Azure Storage
- Blob Storage
- Table Storage
- Queueue Storage
- Fillagring
- Skivlagring
- Azure Cosmos DB
- Azure Cognitive Services
- Azure CDN
- Azure Redis Cache
- Azure API Management
- Slutsats
IaaS (Infrastructure-as-a-Service)
Typiska IaaS-tjänster är Container Service och Virtual Machines. Dessa låter dig ha stor kontroll över hur du kör dem, men kräver också att du ansvarar för saker som operativsystem, antivirus och lastbalansering. På grund av detta kan du och ditt team ägna mindre tid åt att arbeta med att skapa affärsvärde.
PaaS (Platform-as-a-Service)
Exempel på PaaS-tjänster är App Services, Azure Search och Azure CDN. Du behöver inte oroa dig för operativsystemet eller ens servern, du kan bara köra din applikation. Du ansvarar för viss serverkonfiguration, till exempel skalning, även om det för vissa tjänster, till exempel Azure Functions, sker automatiskt.
SaaS (Software-as-a-Service)
Exempel på SaaS-tjänster är saker som Azure IoT Suite och Office 365. SaaS är den högsta abstraktionsnivån och gör att du bara kan använda applikationen, du behöver inte ens bygga den. Du konfigurerar den bara. Du behöver inte oroa dig för operativsystemet eller ens skalning av appen. Detta gör att du kan arbeta med affärsnytta, men ger dig lite kontroll över din applikation.
För programvaruutvecklare är PaaS en utmärkt typ av molntjänster att använda. Du har tillräckligt med kontroll för att bara arbeta med din applikation och finjustera den så att den blir helt rätt, och du behöver inte oroa dig för allt som rör driften. Saker och ting körs bara utan att man behöver oroa sig för OS-patchar eller lastbalansering.
Azure har ett mycket starkt PaaS-erbjudande, vilket är mycket attraktivt för utvecklare. I den här artikeln diskuteras de bästa Azure PaaS-tjänsterna för utvecklare som kan göra din applikation bättre.
De bästa Azure PaaS-tjänsterna
En av de viktigaste Azure PaaS-tjänsterna är Azure App Services. Azure App Services erbjuder flera olika tjänstetyper, var och en inriktad på att hysa din applikation eller affärslogik för ett specifikt användningsfall. Dessutom har App Service-typerna gemensamma funktioner som automatisk skalning, autentisering och auktorisering samt anpassade domäner och SSL.
Vi går igenom App Service-typerna:
Web Apps
Azure App Service Web Apps är viktiga om du vill vara värd för en vanlig ASP.NET-webapplikation. Web Apps är en abstraktion av en webbserver som IIS eller Tomcat och kan köra program som är skrivna i .NET, PHP, Python, Node.js, Java med mera. De är mycket enkla att konfigurera och ger dig många fördelar direkt från början, t.ex. att de som standard är tillgängliga 99,95 % av tiden. Du behöver inte oroa dig för driftstopp. App Services finns nu tillgängliga för både Windows och Linux.
Mobilapplikationer
Azure kan också hjälpa dig när du skapar mobilapplikationer. Du kan vara värd för en backend för din mobilapp i Azure App Services Mobile Apps. Du kan enkelt ansluta till denna backend med hjälp av SDK:erna för Azure Mobile Apps som finns tillgängliga för IOS, Android, Windows, Xamarin.IOS, Xamarin.Android och Xamarin.Forms.
Den mobila backenden ger dig några unika fördelar. En av dem är möjligheten att göra offline-synkronisering. Detta gör det möjligt för en användare att fortsätta arbeta med appen om han är offline och synkronisera data tillbaka till backend när han kommer online igen. En annan möjlighet är push-notiser. Detta gör att du kan skicka meddelanden om din app till användarens enhet. Dessutom har mobila appar alla samma funktioner som webbappar, till exempel automatisk skalning och hög tillgänglighet.
Logiska appar
Azure App Service Logiska appar skiljer sig från webbappar och mobila appar genom att du inte är värd för en applikation i den, utan orkestrerar affärslogik med den. Tänk på Logic Apps som ett sätt att automatisera en affärsprocess genom att bara konfigurera den.
En Logic App startas av en Trigger. Detta kan vara en tid (var 15:e minut) eller en extern källa, t.ex. ett nytt meddelande i en kö. Utlösaren skickar värden till arbetsflödet (t.ex. innehållet i kömeddelandet) som kan användas i hela Logic App. Resten av flödet i Logic App består av anrop av Connectors, som är API:er till tredjepartstjänster, som Office365 eller Twitter eller dina egna API:er.
Logic Apps skalas automatiskt och du betalar bara för dem när de körs. Detta kallas ibland för ”serverlös” eftersom det innebär att du kan fokusera helt på din applikation eller logik och inte på den underliggande infrastrukturen.
Azure Functions
Azure App Services Function Apps kan vara värd för en eller flera Azure Functions. Du använder Azure Functions för att vara värd för små program, som bakgrundsjobb eller en mikrotjänst som bara körs under en kort tidsperiod.
Azure Functions kan utlösas av konfigurerbara timers, t.ex. enligt ett schema (var 15:e minut) eller av en extern tjänst, t.ex. när en ny Blob läggs till i Azure Blob Storage. När den utlöses kan koden i Azure-funktionen använda värdet från utlösaren, t.ex. den Blob som lades till. Du kan också lägga till utgångsbindningar till en Azure-funktion för att skicka ut ett värde till en extern tjänst, utan att skriva någon rörledning. Det kan till exempel vara en Blob Storage-utgång där du bara returnerar en Blob utan att behöva skriva kod för att ansluta till Azure Storage.
Precis som Logic Apps är Azure Functions ”serverlösa”, eftersom de skalas automatiskt och du betalar bara för dem när de körs.
Azure WebJobs
Ett annat sätt att köra bakgrundsuppgifter är att köra dem i Azure WebJobs. WebJobs är en del av App Services och körs inuti en App Service som en webbapp eller en mobilapp. Du kan skriva och lägga upp kod i WebJobs som startas av en utlösare, t.ex. en timer (var 15:e minut) eller en extern tjänst, t.ex. ett nytt meddelande i en kö.
WebJobs fungerar på samma sätt som Azure Functions, eftersom de kör små kodbitar som kan utlösas av externa källor och som inte kräver någon rörkod för att konfigureras.
De skiljer sig från Azure Functions i det att du måste skala dem manuellt. Du betalar för app-tjänsten som är värd för ditt webbjobb, vilket är en månadsavgift, oavsett om webbjobbet körs eller inte.
Läs mer: Jämför Azure Functions vs Azure WebJobs
Vad ska du använda när
Så vilken app-tjänst ska du använda när? Den här tabellen kan vara till hjälp:
Webbapplikationer | Mobilapplikationer | Logikapplikationer | Funktioner | WebJobs | |||
Hostar webbapplikationer och API:er | X | ||||||
Hostar backend för mobilappar | X | ||||||
Hostar arbetsflöden för affärslogik | X | ||||||
Hostar bakgrundsuppgifter | X | X | |||||
Skalerar sig automatiskt och betalar bara när den körs | X | X | X | ||||
Kontrollera skalning och betala en månadsavgift | X | X | X | X |
Apptjänster har delade funktioner
Azure App Services delar på några fantastiska funktioner, som gör dem mycket attraktiva att använda. Här är några av dem:
- Enklare autentisering och auktorisering
- Kontinuerlig leverans
- Anpassade domäner
- Hybridanslutningar
- Gör det möjligt för dig att ansluta till resurser på plats, som webbtjänster eller databaser
- (Automatisk) skalning och lastbalansering
- Distributionsplatser
- Dessa gör det möjligt för dig att testa den nya versionen av din applikation och distribuera den till produktion utan driftstopp. Du kan till och med dirigera en del av din produktionstrafik till den nya versionen av appen för att se om den fungerar som förväntat.
- Lär dig mer om deployment slots här
Deployerar tjänster
Det är enkelt att skapa en ny webbapplikation eller Logic App via Azure-portalen, men du bör verkligen automatisera dina deployments så att du kan upprepa dem i olika miljöer och köra exakt samma konfiguration. Det kan du göra genom att skapa ARM-mallar (Azure Resource Manager) som du distribuerar från Visual Studio eller i en pipeline för kontinuerlig leverans med hjälp av en tjänst som Visual Studio Team Services.
ARM-mallar beskriver dina resurser som webbappar, Azure SQL-databaser och resursgrupper i JSON-dokument. Du kan skapa dem med hjälp av Azure Resource Group-projektmallen i Visual Studio och få inspiration genom att klicka på Automation Script-knappen på en resurs i Azure Portal.
Azure Event Grid
En relativt ny tjänst, Azure Event Grid, fungerar som lim mellan tjänster. Azure Event Grid kan dirigera händelser från vilken källa som helst till vilken destination som helst.
Nästan alla Azure-tjänster kan publicera händelser som Azure Event Grid kan ta emot och använda för att trigga ditt program med. Du kan också låta dina egna program och tjänster publicera händelser som Azure Event Grid kan använda för att dirigera till andra tjänster.
Azure Event Grid skalar automatiskt och du betalar bara för det antal operationer som du använder.
Azure Event Grid eliminerar behovet av polling. Dina program kan lyssna på och reagera på händelser från vilken tjänst som helst som publicerat händelser till Azure Event Grid.
Du kan till exempel låta Azure Event Grid lyssna på ändringar i din e-postlista och trigga en Azure Logic App när något förändras.
Azure Service Bus
En av de äldsta och mest använda och pålitliga tjänsterna i Azure är Azure Service Bus. Den består av flera tjänster, framför allt Azure Service Bus Queues och Azure Service Bus Topics.
En applikation kan lägga meddelanden på en Azure Service Bus Queue. Varje meddelande läses från kön och behandlas av ett program. Azure Service Bus Queues har vissa avancerade funktioner som du får direkt från start, t.ex. upptäckt av dubbletter och en underkö för döda bokstäver där meddelanden som inte kan behandlas flyttas till.
Azure Service Bus Topics är lite annorlunda. Program kan lägga meddelanden på ett Azure Service Bus Topic och flera program kan läsa och bearbeta meddelandet. De tar emot de meddelanden som har attribut som de är intresserade av. De prenumererar på ”ämnen” i kön. Azure Service Bus Topics har samma avancerade funktioner som köer har.
Båda dessa tjänster gör det möjligt att frikoppla programmet som lägger meddelanden på kön från programmet som behandlar meddelandena. Det här mönstret gör det möjligt för behandlingsprogrammet att bearbeta uppgifter i sin egen takt utan att användaren behöver vänta på det. Detta är användbart när bearbetningen kan ta ett tag och du vill inte att användaren ska behöva vänta på det, till exempel när du bearbetar en orderförfrågan som kan ta 5 minuter.
Azure Storage
En grundläggande byggsten i alla applikationer är datalagring. Azure Storage erbjuder flera alternativ för lagring av data, som filer eller datarader. Det erbjuder flera olika tjänster som alla är relativt billiga, skalar nästan oändligt och över geografiska områden och erbjuder funktioner som kryptering och autentisering. Du får allt detta out-of-the-box, bara genom att skapa ett Azure Storage-konto. Låt oss diskutera de olika typerna av Azure Storage:
Blob Storage
Du lagrar stora filer, eller ”blobs”, i Azure Blob Storage. Det kan vara saker som VHD-filer, ljud- eller videofiler eller säkerhetskopior av databaser.
Du kan välja en nivå av Blob Storage som bestämmer din prestanda och dina kostnader. Det finns nivån Hot, för Blobs som du har tillgång till ofta. Det finns också Cool tier, som du använder för Blobs som du inte kommer åt så ofta, kanske en gång i månaden. Och så finns det Archive tier, för Blobs som du nästan aldrig använder. När du begär en Blob från Archive tier kan det ta flera timmar innan du får tillgång till den.
Table Storage
Du kan lagra semirelationella data i rader och kolumner med hjälp av Azure Table Storage. Detta är perfekt för saker som loggningsdata. Du lagrar data i tabeller som liknar tabellerna i SQL Server, men som är mindre strikta i och med att de inte har några relationer mellan dem. Azure Table Storage är snabb och relativt billig, precis som de andra typerna av Azure Storage.
Queueue Storage
Du kan lagra små meddelanden som kan hämtas och bearbetas senare i Azure Storage Queues, precis som Azure Service Bus Queues. Det här är ett lite märkligt erbjudande eftersom det överlappar Azure Service Bus Queues. De skiljer sig från varandra genom att Service Bus Queues har duplikatdetektering och Storage Queues inte har det. Dessutom förblir Service Bus Queue-meddelanden tillgängliga efter 7 dagar, medan Storage Queue-meddelanden endast kan lagras i 7 dagar.
Fillagring
Du kan använda Azure File Storage som en extra hårddisk som du monterar på din dator eller en virtuell maskin. Detta är en utmärkt tjänst för att komma igång med molnet genom att migrera dina filer till den. Du kan låta program använda den genom att bara peka dem till Azure File Storage i stället för deras egen hårddisk. På så sätt kan du börja flytta till molnet.
Skivlagring
Azure Disk Storage är en premiumfunktion och har hög prestanda och är användbar när du behöver utföra I/O-intensivt arbete, till exempel på en primär hårddisk i en virtuell maskin. Den fungerar som en skalbar, högpresterande disk som du kan montera på en VM.
Azure Cosmos DB
Den nya versionen och namnet på Azure DocumentDB är Azure Cosmos DB. Azure Cosmos DB är ett databaserbjudande som passar perfekt i molnet. Som en PaaS-tjänst är det bara att sätta igång en Cosmos DB och du är redo att börja arbeta. Om du använde Azure DocumentDB använder du nu automatiskt Azure Cosmos DB. Din kod behöver inte ändras.
Det finns ett par saker som gör Cosmos DB extraordinärt:
- Du kan programmera mot den med hjälp av olika ”API:er”, som SQL, JavaScript, MongoDB, Gremlin och Table Storage. Du behöver inte längre välja en typ av databas, du väljer bara hur du vill prata med den, Cosmos DB tar hand om resten
- Du behöver inte längre skapa index, Cosmos DB gör det automatiskt åt dig
- Cosmos DB har hög prestanda. Det garanterar till och med låg latenstid i sitt SLA
- Du får geografisk skalbarhet direkt från start. Du anger bara var i världen du vill ha dina data och de replikeras i realtid. På så sätt kan du se till att dina data finns nära dina användare
Lär dig att komma igång med Azure Cosmos DB i de här 5-minuters handledningarna.
Cosmos DB lämpar sig bäst för icke-relationella data eller semirelationella data.
Azure Cognitive Services
Att lägga till intelligens till dina applikationer har aldrig varit så enkelt som med Azure Cognitive Services. Dessa är en uppsättning API:er som ger nästan magiska förmågor, som drivs av AI och maskininlärning. Det finns cirka 30 Cognitive Services och fler är på gång. Här är några exempel:
- Emotion API, som analyserar ansikten i foton och videor för att upptäcka känslor som lycka, sorg, avsky och så vidare
- Language Understanding Intelligent Service (eller LUIS), som faktiskt kan förstå språkkontext på mer än 12 språk. Du kan använda detta för att skapa en smart bot som faktiskt förstår vad du säger till den
- Speaker Recognition API, som identifierar talare baserat på tal. Du kan använda detta för att autentisera med hjälp av röst eller för att identifiera personer baserat på deras röst
- Computer Vision API, som kan upptäcka information om visuellt innehåll som finns i bilder, till exempel att bakgrunden är vatten och himmel eller att jackan som personen har på sig är svart
De kognitiva tjänsterna är mycket enkla att använda eftersom du bara använder dem från molnet och du behöver inte hantera någon infrastruktur eller konfiguration.
Du kan använda dina egna data för att träna tjänsterna för att förbättra dina resultat. Om du gör detta kan Face API:et till exempel ge dig namn och ålder på dina arbetskamrater. Dessutom lär sig de kognitiva tjänsterna i farten, genom de data du matar dem med. Detta gör dem smartare och mer exakta.
För att använda en kognitiv tjänst ringer du helt enkelt API-slutpunkten, till exempel https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect, med en prenumerationsnyckel som du får när du registrerar dig och matar den med de parametrar som den behöver, till exempel en byte-array av en bild, i ansikts-API:ets fall. Detta returnerar ett JSON-svar som detta (vissa rader har utelämnats för att spara utrymme):
Resultat för ansiktsdetektering:
}, "smile": 0.826, "headPose": { "pitch": 0.0, "roll": -16.9, "yaw": 21.3 }, "gender": "female", "age": 23.8, "facialHair": { "moustache": 0.0, "beard": 0.0, "sideburns": 0.0 }, "glasses": "ReadingGlasses", "makeup": { "eyeMakeup": true, "lipMakeup": true }, "emotion": { "anger": 0.103, "contempt": 0.003, "disgust": 0.038, "fear": 0.003, "happiness": 0.826, "neutral": 0.006, "sadness": 0.001, "surprise": 0.02 }, … }]
Du kan se i utmatningen att just den här tjänsten returnerar en hel del data. Den upptäcker till och med var ansiktsdragen finns i bilden och om personen är sminkad. Jag tycker att det är riktigt fantastiskt.
Azure CDN
Du kan snabba upp dina applikationer genom att avlasta trafik till Azure CDN. Azure CDN (Content Delivery Network) fungerar som en slutpunkt för ditt statiska innehåll som video, bilder, JavaScript och CSS-filer. Genom att Azure CDN serverar dessa filer behöver din applikation inte göra det och har mer resurser för att hantera fler förfrågningar. Dessutom replikerar Azure CDN det statiska innehållet till PoP:er (Points-of-Presence) över hela världen, vilket gör att det statiska innehållet placeras nära användarna och begränsar latenstiden, vilket är bra för prestandan.
Du kan använda Azure CDN genom att skapa en Azure CDN-slutpunkt, koppla den till en källa, till exempel Azure Storage, och ladda upp filer till Azure Storage. Azure CDN replikerar automatiskt filerna till PoP:er över hela världen och du kan länka till filerna via en URL som https://custom.azureedge.net/cd/myimag.png. Du kan också använda ett eget domännamn för URL:en.
Azure Redis Cache
Ett annat sätt att snabba upp dina applikationer är att cachelagra data med Azure Redis Cache. När du hämtar data från en cache i stället för från ett annat datalager, till exempel en databas, påskyndar du programmet.
Det beror på att en cache som Azure Redis Cache lagrar data i minnet och lagrar data i ett enkelt nyckel/värde-format. På grund av detta kan data serveras snabbare eftersom de inte behöver hämtas från disk och inte heller behöver hämtas genom att utföra en komplex fråga.
Azure Redis Cache är en cache-as-a-service och erbjuder avancerade funktioner, som klusterbildning och geografisk replikering. Den är baserad på den populära öppen källkod Redis Cache och stöds nu av Microsofts SLA:er och företagsstöd. Azure Redis Cache är cachingalternativet för applikationer i Azure.
Azure API Management
Du kan använda Azure API Management för att förbättra dina API:er eller API:er från tredje part som du använder. Azure API Management fungerar som en gateway mellan ditt API och omvärlden. På så sätt kan du förbättra ditt API.
Med API Management kan du skapa en portal dit användare av ditt API kan gå för att hantera sina prenumerationer och testa applikationen. Ett exempel på en sådan utvecklarportal är webbplatsen för en av de kognitiva tjänsterna, som också använder API-hantering:
Du kan styra användningen av API:et genom att sätta gränser per användare eller abonnemangstyp. Detta är ett bra sätt att tjäna pengar på ditt API genom att till exempel erbjuda en gratis användningsnivå på upp till 10 förfrågningar per dag, och om du behöver mer börjar du betala. Om användarna försöker använda mer, utan rätt abonnemang, stryps deras förfrågningar.
Det går dessutom att förbättra API:er genom att göra dem mer effektiva. Du kan cacha API-svar så att de inte behöver hämta svaren genom att göra beräkningar eller sätta ihop data från en datakälla.
Och du kan skydda dina API:er med nycklar, lösenord, certifikat och IP-filtrering. Dessutom kan du omvandla input och output till och från dina API:er. Du kan till exempel omvandla inkommande XML till JSON eller göra samma sak med svaren.
Azure API Management är verkligen kraftfullt och ökar den kontroll du har över dina API:er (och API:er från tredje part som du exponerar via API Management). Och du kan göra det utan att ändra API:et.
Slutsats
Tjänsterna i den här artikeln är alla exempel på Azure PaaS-tjänster. Alla är mycket enkla att starta upp och kräver minimalt underhåll. De håller sig igång, är självläkande och fungerar i princip ”bara”.
Värdet som dessa tjänster kan ge är enormt och lätt att införliva i dina applikationer. Detta tar verkligen hand om en hel del av de rörmokerier och repetitiva uppgifter som vi brukade bygga och göra själva.
Azure PaaS låter oss fokusera på att bygga saker som är viktiga. Kom ihåg att alltid fokusera på att förbättra dina applikationer också genom att använda ett APM-verktyg för hela livscykeln som Stackify Retrace. Läs mer.