Välj ett Azure-beräkningsalternativ för mikrotjänster
Termen beräkning är värdmodellen för de beräkningsresurser som ditt program körs på. Den här artikeln innehåller riktlinjer som hjälper dig att välja en beräkningsplattform för mikrotjänster. Valet av beräkningsplattform för mikrotjänster kan bero på mer nyanserade krav.
För en mikrotjänstarkitektur är följande metoder populära:
- Distribuera mikrotjänster på dedikerade beräkningsplattformar, vanligtvis med hjälp av en mikrotjänstorkestrerare.
- Distribuera mikrotjänster på en serverlös plattform.
Även om de här alternativen inte är de enda, är de båda beprövade metoder för att skapa mikrotjänster. Ett program kan innehålla båda metoderna.
Ladda ned en Visio-fil med den här arkitekturen.
Använda en serverlös plattform
Du kan använda serverlösa plattformar för att distribuera mikrotjänster i Azure Container Apps eller Azure Functions. Både Container Apps och Functions tillhandahåller serverlösa beräkningsalternativ som fakturerar baserat på mängden begäranden i stället för beräkningsförbrukning. Båda plattformarna ger dig också möjlighet att vara värd för arbetsbelastningarna på dedikerad kapacitet.
Distribuera kodbaserade mikrotjänster
Om du vill distribuera dina mikrotjänster som kod i stället för att containerisera dem kanske du vill använda Azure Functions. Mer information finns i listan över programmerings- och skriptspråk som stöds av Functions. För mikrotjänster som du utvecklar på andra språk kanske du vill implementera en anpassad hanterare i Functions eller överväga att containerisera programmet.
Använda en GPU-modell
Om din mikrotjänst kräver GPU-kapacitet, till exempel för att köra maskininlärningsuppgifter, bör du överväga att välja Container Apps eller Azure Kubernetes Service (AKS) för din plattform. AKS kan använda alla GPU-modeller i Azure, och Container Apps erbjuder en delmängd av GPU-modeller att välja mellan.
Använda tjänstorkestrerare
En orkestrerare hanterar uppgifter som rör distribution och hantering av en uppsättning tjänster. Dessa uppgifter omfattar att placera tjänster på noder, övervaka tjänsternas hälsotillstånd, starta om tjänster som inte är felfria, belastningsutjämning av nätverkstrafik mellan tjänstinstanser, tjänstidentifiering, skala antalet instanser av en tjänst och tillämpa konfigurationsuppdateringar. Populära orkestrerare är Kubernetes, Azure Service Fabric, DC/OS och Docker Swarm.
Överväg följande alternativ på Azure-plattformen:
Azure Kubernetes Service (AKS) är en hanterad Kubernetes-tjänst. AKS etablerar Kubernetes och exponerar Kubernetes API-slutpunkter, är värdar för och hanterar Kubernetes-kontrollplanet och utför automatiserade uppgraderingar, automatisk korrigering, automatisk skalning och andra hanteringsuppgifter. AKS ger direkt åtkomst till Kubernetes-API:er.
Container Apps är en hanterad tjänst som bygger på Kubernetes som abstraherar komplexiteten i containerorkestrering och andra hanteringsuppgifter. Container Apps förenklar distributionen och hanteringen av containerbaserade program och mikrotjänster i en serverlös miljö samtidigt som funktionerna i Kubernetes finns. Container Apps är perfekt för scenarier där direkt åtkomst till Kubernetes-API:er inte krävs.
Service Fabric är en distribuerad systemplattform för paketering, distribution och hantering av mikrotjänster. Du kan distribuera mikrotjänster till Service Fabric som containrar, som binär körbara filer eller som Reliable Services. Med hjälp av programmeringsmodellen Reliable Services kan tjänster direkt använda Service Fabric-programmerings-API:er för att fråga systemet, rapportera hälsotillstånd, ta emot meddelanden om konfigurations- och kodändringar och identifiera andra tjänster.
Använd Azure Red Hat OpenShift för att distribuera fullständigt hanterade OpenShift-kluster. Azure Red Hat OpenShift utökar Kubernetes. Azure Red Hat OpenShift är gemensamt konstruerat, drivs och stöds av Red Hat och Microsoft.
Andra alternativ, till exempel Docker Enterprise Edition, kan köras i en molnbaserad databehandlingsmiljö i Azure. Du hittar distributionsmallar på Azure Marketplace.
Använda Kubernetes-API:er
Åtkomst till Kubernetes-API:er är ofta en avgörande faktor när du väljer ett beräkningsalternativ. AKS ger direkt åtkomst till Kubernetes-API:er, men inte Container Apps. Container Apps döljer komplexiteten i Kubernetes och förenklar containerdistributionen. Om du utformar din mikrotjänstdistribution så att den interagerar direkt med Kubernetes-API:er kan AKS vara rätt val.
Andra beslutsfaktorer
Det kan finnas andra faktorer som påverkar valet av beräkningsplattform för mikrotjänster. Dessa faktorer omfattar service mesh-alternativ, plattformsskalbarhet och kunskapsuppsättningar som du kan använda i organisationen.
Att tänka på
Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.
Tillförlitlighet
Tillförlitlighet säkerställer att ditt program kan uppfylla de åtaganden du gör gentemot dina kunder. Mer information finns i Checklista för designgranskning för tillförlitlighet.
En av grundpelarna för tillförlitlighet är återhämtning. Målet med återhämtning är att återställa arbetsbelastningen till ett fullt fungerande tillstånd efter ett fel.
Om du väljer Azure Functions som din plattform för mikrotjänstberäkning bör du överväga att distribuera Functions Premium-planen eller Azure App Service-planen i en zonredundant konfiguration. Mer information finns i Tillförlitlighet i Functions.
Om du väljer AKS som plattform för mikrotjänstberäkning kan du förbättra mikrotjänsttillförlitligheten genom att distribuera ett AKS-kluster som använder tillgänglighetszoner, med hjälp av Standard- eller Premium-nivån för Azure Kubernetes-kluster och genom att öka det minsta antalet poddar och noder. Mer information finns i Metodtips för distribution och klustertillförlitlighet för AKS.
Om du väljer Container Apps som din plattform för mikrotjänstberäkning kan du förbättra tillförlitligheten med hjälp av tillgänglighetszoner. Mer information finns i Tillförlitlighet i Container Apps.
Säkerhet
Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Checklista för designgranskning för säkerhet.
Om du väljer Azure Functions som beräkningsplattform för att distribuera mikrotjänster gäller även principerna för att skydda Azure Functions för mikrotjänster.
Om du väljer AKS som beräkningsplattform för att distribuera mikrotjänster ger AKS-säkerhetsbaslinjearkitekturen vägledning för att skydda beräkningsplattformen. Metodtips för mikrotjänstsäkerhet på AKS finns i Avancerad AKS-mikrotjänstarkitektur.
Om du väljer Container Apps som beräkningsplattform för att distribuera mikrotjänster kan du läsa säkerhetsbaslinjen för Container Apps för bästa praxis för säkerhet.
Kostnadsoptimering
Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Checklista för designgranskning för kostnadsoptimering.
När du använder en orkestrerare betalar du för de virtuella datorer som körs i klustret. När du använder ett serverlöst program betalar du bara för de faktiska beräkningsresurser som du använder. I båda fallen måste du ta hänsyn till kostnaden för eventuella extra tjänster, till exempel lagring, databaser och meddelandetjänster.
Azure Functions, Container Apps och AKS tillhandahåller alternativ för automatisk skalning. Container Apps and Functions tillhandahåller serverlösa plattformar där kostnaden baseras på förbrukning och kan vara noll. AKS tillhandahåller endast dedikerade beräkningsalternativ.
Om du väljer AKS som beräkningsplattform för att distribuera mikrotjänster måste du förstå metodtips för kostnadsoptimering. Mer information finns i Optimera kostnader i Azure Kubernetes Service.
Om du väljer Container Apps som din beräkningsplattform för mikrotjänster måste du förstå de olika faktureringsmodellerna och bestämma distributionsmodellen för dina mikrotjänster baserat på dina arbetsbelastningskrav. Mer information finns i Fakturering i Container Apps.
Om du väljer Azure Functions som din beräkningsplattform för mikrotjänster måste du förstå de olika faktureringsmodellerna och bestämma dig för Functions-planen baserat på dina arbetsbelastningskrav. Mer information finns i Uppskatta förbrukningsbaserade kostnader och Azure Functions-planinformation.
Driftseffektivitet
Operational Excellence omfattar de driftsprocesser som distribuerar ett program och håller det igång i produktion. Mer information finns i Checklista för designgranskning för Operational Excellence.
Du kan distribuera alla beräkningsalternativ för mikrotjänster som beskrivs i den här artikeln automatiserat med hjälp av Terraform, Bicep och andra skriptspråk. Du kan använda Application Insights, Azure Monitor och andra övervakningslösningar för att övervaka dessa beräkningsplattformar och mikrotjänster.
Tänk på följande faktorer när du väljer mellan en orchestrator-metod och en serverlös metod:
Flexibilitet och kontroll: En orkestrerare ger dig kontroll över att konfigurera och hantera dina tjänster och klustret. Kompromissen är mer komplex. Med en serverlös arkitektur ger du upp en viss grad av kontroll eftersom dessa detaljer är abstrakta.
Portabilitet: Alla orkestratorer som anges i den här artikeln, inklusive Kubernetes, DC/OS, Docker Swarm och Service Fabric, kan köras lokalt eller i flera offentliga moln.
Programintegrering: Det kan vara svårt att skapa ett komplext program som använder en serverlös arkitektur eftersom du behöver samordna, distribuera och hantera många små, oberoende funktioner. Ett alternativ i Azure är att använda Azure Logic Apps för att samordna en uppsättning Azure-funktioner. Ett exempel på den här metoden finns i Skapa en funktion som integreras med Logic Apps.