Designöverväganden för hybridappar
Microsoft Azure är det enda konsekventa hybridmolnet. Det gör att du kan återanvända dina utvecklingsinvesteringar och aktivera appar som kan omfatta globala Azure-, nationella Azure-moln och Azure Stack, som är en förlängning av Azure i ditt datacenter. Appar som sträcker sig över moln kallas även hybridappar.
I Azure Application Architecture Guide beskrivs en strukturerad metod för att utforma appar som är skalbara, motståndskraftiga och med hög tillgänglighet. De överväganden som beskrivs i Azure Application Architecture Guide tillämpas lika på appar som är utformade för ett enda moln och för appar som sträcker sig över moln.
Den här artikeln utökar grundpelare för programvarukvalitet beskrivs i Arkitekturguide för Azure Application, fokuserar specifikt på att utforma hybridappar. Dessutom lägger vi till en placering grundpelare eftersom hybridappar inte är exklusiva för ett moln eller ett lokalt datacenter.
Hybridscenarier varierar kraftigt med de resurser som är tillgängliga för utveckling och omfattar överväganden som geografi, säkerhet, Internetåtkomst och andra överväganden. Även om den här guiden inte kan räkna upp dina specifika överväganden kan den ge några viktiga riktlinjer och metodtips som du kan följa. Att utforma, konfigurera, distribuera och underhålla en hybridapparkitektur innebär många designöverväganden som kanske inte är kända för dig.
Det här dokumentet syftar till att aggregera möjliga frågor som kan uppstå vid implementering av hybridappar och ger överväganden (dessa pelare) och bästa praxis för att arbeta med dem. Genom att ta itu med dessa frågor under designfasen undviker du de problem som de kan orsaka i produktionen.
Det här är i princip frågor som du måste tänka på innan du skapar en hybridapp. För att komma igång måste du göra följande:
- Identifiera och utvärdera appkomponenterna.
- Utvärdera appkomponenter mot pelarna.
Utvärdera appkomponenterna
Varje komponent i en app har sin egen specifika roll i den större appen och bör granskas med alla designöverväganden. Varje komponents krav och funktioner bör mappas till dessa överväganden för att avgöra apparkitekturen.
Dela upp appen i dess komponenter genom att studera appens arkitektur och bestämma vad den består av. Komponenter kan också innehålla andra appar som din app interagerar med. När du identifierar komponenterna utvärderar du dina avsedda hybridåtgärder enligt deras egenskaper genom att ställa följande frågor:
- Vad är syftet med komponenten?
- Vilka är beroendena mellan komponenterna?
En app kan till exempel ha en klientdel och en serverdel definierad som två komponenter. I ett hybridscenario finns klientdelen i ett moln och serverdelen finns i den andra. Appen tillhandahåller kommunikationskanaler mellan klientdelen och användaren, och även mellan klientdelen och serverdelen.
En appkomponent definieras av många formulär och scenarier. Den viktigaste uppgiften är att identifiera dem och deras moln eller lokala plats.
De vanliga appkomponenter som ska ingå i inventeringen visas i tabell 1.
Tabell 1. Vanliga appkomponenter
Komponent | Vägledning för hybridappar |
---|---|
Klientanslutningar | Din app (på alla enheter) kan komma åt användare på olika sätt, från en enda startpunkt, inklusive följande sätt: – En klient-server-modell som kräver att användaren har en klient installerad för att fungera med appen. En serverbaserad app som nås från en webbläsare. – Klientanslutningar kan innehålla meddelanden när anslutningen bryts eller aviseringar när roamingavgifter kan tillkomma. |
Autentisering | Autentisering kan krävas för en användare som ansluter till appen eller från en komponent som ansluter till en annan. |
Api | Du kan ge utvecklare programmatisk åtkomst till din app med API-uppsättningar och klassbibliotek och tillhandahålla ett anslutningsgränssnitt baserat på Internetstandarder. Du kan också använda API:er för att dela upp en app i oberoende logiska enheter. |
Tjänster | Du kan använda kortfattade tjänster för att tillhandahålla funktioner för en app. En tjänst kan vara den motor som appen körs på. |
Köer | Du kan använda köer för att organisera status för livscykeln och tillstånden för appens komponenter. De här köerna kan ge meddelanden, meddelanden och buffringsfunktioner till prenumererande parter. |
Datalagring | En app kan vara tillståndslös eller tillståndskänslig. Tillståndskänsliga appar behöver datalagring som kan uppfyllas av flera format och volymer. |
Cachelagring av data | En komponent för datacachelagring i din design kan strategiskt hantera svarstidsproblem och spela en roll när det gäller att utlösa molnsprängningar. |
Datainmatning | Data kan skickas till en app på många sätt, allt från användarinskickade värden i ett webbformulär till kontinuerligt dataflöde med hög volym. |
Databehandling | Dina databearbetningsuppgifter (till exempel rapporter, analys, batchexporter och datatransformering) kan antingen bearbetas vid källan eller avlastas på en separat komponent med hjälp av en kopia av data. |
Utvärdera appkomponenter för pelare
För varje komponent utvärderar du dess egenskaper för varje pelare. När du utvärderar varje komponent med alla pelare kan frågor som du kanske inte har övervägt bli kända för dig som påverkar utformningen av hybridappen. Att agera utifrån dessa överväganden kan ge mervärde när du optimerar din app. Tabell 2 innehåller en beskrivning av varje pelare när det gäller hybridappar.
Tabell 2. Pelare
pelare | Beskrivning |
---|---|
Placering | Strategisk positionering av komponenter i hybridappar. |
Skalbarhet | Möjligheten för ett system att hantera ökad belastning. |
Tillgänglighet | Andelen tid som en hybridapp fungerar och fungerar. |
Resiliency | Möjligheten för en hybridapp att återställas. |
Hanterbarhet | Driftsprocesser som håller ett system igång i produktion. |
Säkerhet | Skydda hybridappar och data från hot. |
Placering
En hybridapp har en placeringsövervägande, till exempel för datacentret.
Placering är den viktiga uppgiften att placera komponenter så att de bäst kan betjäna en hybridapp. Per definition omfattar hybridappar platser, till exempel från lokalt till molnet och mellan olika moln. Du kan placera komponenter i appen i moln på två sätt:
Vertikala hybridappar
Appkomponenter distribueras på olika platser. Varje enskild komponent kan ha flera instanser som bara finns på en enda plats.Horisontella hybridappar
Appkomponenter distribueras på olika platser. Varje enskild komponent kan ha flera instanser som sträcker sig över flera platser.Vissa komponenter kan vara medvetna om sin plats medan andra inte har någon kunskap om deras plats och placering. Denna dygdighet kan uppnås med ett abstraktionslager. Det här lagret, med ett modernt appramverk som mikrotjänster, kan definiera hur appen hanteras av placeringen av appkomponenter som körs på noder över moln.
Checklista för placering
Verifiera nödvändiga platser. Kontrollera att appen eller någon av dess komponenter krävs för att fungera i eller kräva certifiering för ett visst moln. Detta kan omfatta suveränitetskrav från ditt företag eller enligt lag. Kontrollera också om några lokala åtgärder krävs för en viss plats eller nationella inställningar.
Kontrollera anslutningsberoenden. Nödvändiga platser och andra faktorer kan diktera anslutningsberoendena mellan dina komponenter. När du placerar komponenterna avgör du den optimala anslutningen och säkerheten för kommunikation mellan dem. Bland alternativen finns VPN,ExpressRoute, och HybridAnslutningar.
Utvärdera plattformsfunktioner. För varje appkomponent, se om den nödvändiga resursprovidern för appkomponenten är tillgänglig i molnet och om bandbredden kan hantera de förväntade kraven på dataflöde och svarstid.
Planera för portabilitet. Använd moderna appramverk, till exempel containrar eller mikrotjänster, för att planera för att flytta åtgärder och för att förhindra tjänstberoenden.
Fastställ datasuveränitetskrav. Hybridappar är anpassade för att hantera dataisolering, till exempel på ett lokalt datacenter. Granska placeringen av dina resurser för att optimera framgången för att ta emot det här kravet.
Planera för svarstid. Åtgärder mellan moln kan introducera fysiskt avstånd mellan appkomponenterna. Kontrollera kraven för att hantera eventuella svarstider.
Kontrollera trafikflöden. Hantera hög användning och lämplig och säker kommunikation för personligt identifierbara informationsdata vid åtkomst av klientdelen i ett offentligt moln.
Skalbarhet
Skalbarhet är möjligheten för ett system att hantera ökad belastning på en app, vilket kan variera med tiden eftersom andra faktorer och krafter påverkar målgruppens storlek, förutom appens storlek och omfattning.
Huvuddiskussionen om den här pelaren finns i Skalbarhet i de fem grundpelarna i arkitekturens excellens.
En horisontell skalningsmetod för hybridappar gör det möjligt att lägga till fler instanser för att möta efterfrågan och sedan inaktivera dem under tystare perioder.
I hybridscenarier kräver utskalning av enskilda komponenter ytterligare överväganden när komponenter sprids över moln. Skalning av en del av appen kan kräva skalning av en annan. Om till exempel antalet klientanslutningar ökar men appens webbtjänster inte skalas ut på rätt sätt kan belastningen på databasen mätta appen.
Vissa appkomponenter kan skalas ut linjärt, medan andra har skalningsberoenden och kan begränsas till i vilken utsträckning de kan skala. En VPN-tunnel som tillhandahåller hybridanslutning för appkomponenternas platser har till exempel en gräns för den bandbredd och svarstid som den kan skalas till. Hur skalas komponenterna i appen för att säkerställa att dessa krav uppfylls?
Checklista för skalbarhet
Kontrollera skalningströsklar. För att hantera de olika beroendena i din app ska du bestämma i vilken utsträckning appkomponenter i olika moln kan skalas oberoende av varandra, samtidigt som de uppfyller kraven för att köra appen. Hybridappar behöver ofta skala vissa områden i appen för att hantera en funktion när den interagerar och påverkar resten av appen. Om du till exempel överskrider ett antal klientdelsinstanser kan det krävas skalning av serverdelen.
Definiera skalningsscheman. De flesta appar har upptagna perioder, så du måste aggregera deras rusningstider i scheman för att samordna optimal skalning.
Använd ett centraliserat övervakningssystem. Plattformsövervakningsfunktioner kan ge automatisk skalning, men hybridappar behöver ett centraliserat övervakningssystem som aggregerar systemets hälsa och belastning. Ett centraliserat övervakningssystem kan initiera skalning av en resurs på en plats och skalning beroende på resurs på en annan plats. Dessutom kan ett centralt övervakningssystem spåra vilka moln som autoskalningsresurser och vilka moln som inte gör det.
Utnyttja funktioner för automatisk skalning (som tillgängligt). Om autoskalningsfunktioner ingår i arkitekturen implementerar du automatisk skalning genom att ange tröskelvärden som definierar när en appkomponent behöver skalas upp, ut, ned eller in. Ett exempel på autoskalning är en klientanslutning som skalas automatiskt i ett moln för att hantera ökad kapacitet, men som gör att andra beroenden i appen, spridda över olika moln, också skalas. Autoskalningsfunktionerna för dessa beroende komponenter måste fastställas.
Om autoskalning inte är tillgängligt kan du överväga att implementera skript och andra resurser för manuell skalning, som utlöses av tröskelvärden i det centraliserade övervakningssystemet.
Fastställa förväntad inläsning efter plats. Hybridappar som hanterar klientbegäranden kan främst förlita sig på en enda plats. När belastningen på klientbegäranden överskrider ett tröskelvärde kan ytterligare resurser läggas till på en annan plats för att distribuera belastningen på inkommande begäranden. Kontrollera att klientanslutningarna kan hantera den ökade belastningen och även fastställa eventuella automatiserade procedurer för klientanslutningarna för att hantera belastningen.
Tillgänglighet
Tillgänglighet är den tid då ett system fungerar och fungerar. Tillgänglighet mäts som en procentandel av drifttiden. Appfel, infrastrukturproblem och systembelastning kan minska tillgängligheten.
Huvuddiskussionen om den här pelaren finns i Tillgänglighet i de fem grundpelarna för arkitekturens utmärkthet.
Checklista för tillgänglighet
Ange redundans för anslutning. Hybridappar kräver anslutning mellan molnen som appen är spridd över. Du har ett urval av tekniker för hybridanslutning, så utöver ditt primära teknikval använder du en annan teknik för att tillhandahålla redundans med automatiserade redundansfunktioner om den primära tekniken misslyckas.
Klassificera feldomäner. Feltoleranta appar kräver flera feldomäner. Feldomäner hjälper till att isolera felpunkten, till exempel om en enskild hårddisk misslyckas lokalt, om en top-of-rack-växel går ned eller om det fullständiga datacentret inte är tillgängligt. I en hybridapp kan en plats klassificeras som en feldomän. Med fler tillgänglighetskrav, desto mer behöver du utvärdera hur en enskild feldomän ska klassificeras.
Klassificera uppgraderingsdomäner. Uppgraderingsdomäner används för att säkerställa att instanser av appkomponenter är tillgängliga, medan andra instanser av samma komponent betjänas med uppdateringar eller funktionsuppgraderingar. Precis som med feldomäner kan uppgraderingsdomäner klassificeras efter placering på olika platser. Du måste avgöra om en appkomponent kan uppgraderas på en plats innan den uppgraderas på en annan plats eller om andra domänkonfigurationer krävs. En enskild plats kan ha flera uppgraderingsdomäner.
Spåra instanser och tillgänglighet. Appkomponenter med hög tillgänglighet kan vara tillgängliga via belastningsutjämning och synkron datareplikering. Du måste bestämma hur många instanser som kan vara offline innan tjänsten avbryts.
Implementera självåterställning. Om ett problem orsakar ett avbrott i appens tillgänglighet kan en identifiering av ett övervakningssystem initiera självåterställningsaktiviteter till appen, till exempel tömning av den misslyckade instansen och omdistribuera den. Troligtvis kräver detta en central övervakningslösning som är integrerad med en ci/CD-pipeline (kontinuerlig integrering och kontinuerlig leverans). Appen är integrerad med ett övervakningssystem för att identifiera problem som kan kräva omdistribution av en appkomponent. Övervakningssystemet kan också utlösa hybrid-CI/CD för att distribuera om appkomponenten och eventuellt andra beroende komponenter på samma eller andra platser.
Underhåll serviceavtal (SLA). Tillgänglighet är viktigt för alla avtal för att upprätthålla anslutningen till de tjänster och appar som du har med dina kunder. Varje plats som din hybridapp förlitar sig på kan ha ett eget serviceavtal. Dessa olika serviceavtal kan påverka det övergripande serviceavtalet för din hybridapp.
Resiliency
Återhämtning är möjligheten för en hybridapp och ett system att återställa från fel och fortsätta att fungera. Målet med återhämtning är att återställa appen till ett fullt fungerande tillstånd efter ett fel. Återhämtningsstrategier omfattar lösningar som säkerhetskopiering, replikering och haveriberedskap.
För kärndiskussionen om den här pelaren, se Återhämtning i de fem grundpelarna för arkitekturens excellens.
Checklista för återhämtning
Upptäck beroenden för haveriberedskap. Haveriberedskap i ett moln kan kräva ändringar av appkomponenter i ett annat moln. Om en eller flera komponenter från ett moln redigeras till en annan plats, antingen i samma moln eller till ett annat moln, måste de beroende komponenterna göras medvetna om dessa ändringar. Detta omfattar även anslutningsberoenden. Återhämtning kräver en fullständigt testad appåterställningsplan för varje moln.
Upprätta ett återställningsflöde. En effektiv design för återställningsflöde har utvärderat appkomponenter för deras förmåga att hantera buffertar, återförsök, försök till misslyckad dataöverföring och, om det behövs, återgå till en annan tjänst eller ett annat arbetsflöde. Du måste bestämma vilken säkerhetskopieringsmekanism som ska användas, vad dess återställningsprocedur innebär och hur ofta den testas. Du bör också bestämma frekvensen för både inkrementella och fullständiga säkerhetskopior.
Testa partiella återställningar. En partiell återställning för en del av appen kan ge användarna en försäkran om att alla inte är otillgängliga. Den här delen av planen bör se till att en partiell återställning inte har några biverkningar, till exempel en säkerhetskopierings- och återställningstjänst som interagerar med appen för att smidigt stänga av den innan säkerhetskopieringen görs.
Fastställa haveriberedskapsanstiftare och tilldela ansvar. En återställningsplan bör beskriva vem och vilka roller som kan initiera säkerhetskopierings- och återställningsåtgärder utöver vad som kan säkerhetskopieras och återställas.
Jämför tröskelvärden för självåterställning med haveriberedskap. Fastställa en apps självåterställningsfunktioner för automatisk återställningsinitiering och den tid som krävs för att en apps självåterställning ska betraktas som ett misslyckande eller framgång. Fastställa tröskelvärdena för varje moln.
Kontrollera tillgängligheten för återhämtningsfunktioner. Fastställa tillgängligheten för återhämtningsfunktioner och funktioner för varje plats. Om en plats inte tillhandahåller de funktioner som krävs kan du överväga att integrera platsen i en centraliserad tjänst som tillhandahåller återhämtningsfunktionerna.
Fastställa stilleståndstider. Fastställa den förväntade stilleståndstiden på grund av underhåll för appen som helhet och som appkomponenter.
Felsökningsprocedurer för dokument. Definiera felsökningsprocedurer för omdistribuering av resurser och appkomponenter.
Hanterbarhet
Övervägandena för hur du hanterar dina hybridappar är viktiga när du utformar din arkitektur. En välhanterad hybridapp tillhandahåller en infrastruktur som kod som möjliggör integrering av konsekvent appkod i en gemensam utvecklingspipeline. Genom att implementera konsekvent systemomfattande och individuell testning av ändringar i infrastrukturen kan du säkerställa en integrerad distribution om ändringarna klarar testerna, så att de kan sammanfogas i källkoden.
Huvuddiskussionen om den här pelaren finns i DevOps i de fem grundpelarna för arkitekturens utmärkthet.
Checklista för hanterbarhet
Implementera övervakning. Använd ett centraliserat övervakningssystem med appkomponenter spridda över moln för att ge en aggregerad vy över deras hälsa och prestanda. Det här systemet omfattar övervakning av både appkomponenter och relaterade plattformsfunktioner.
Fastställ de delar av appen som kräver övervakning.
Samordna principer. Varje plats som en hybridapp sträcker sig över kan ha en egen princip som omfattar tillåtna resurstyper, namngivningskonventioner, taggar och andra kriterier.
Definiera och använda roller. Som databasadministratör måste du fastställa vilka behörigheter som krävs för olika personer (till exempel en appägare, en databasadministratör och en slutanvändare) som behöver åtkomst till appresurser. Dessa behörigheter måste konfigureras för resurserna och i appen. Med ett rbac-system (rollbaserad åtkomstkontroll) kan du ange dessa behörigheter för appresurserna. Dessa åtkomsträttigheter är utmanande när alla resurser distribueras i ett enda moln, men kräver ännu mer uppmärksamhet när resurserna är spridda över moln. Behörigheter för resurser som anges i ett moln gäller inte för resurser som anges i ett annat moln.
Använd CI/CD-pipelines. En CI/CD-pipeline (Continuous Integration and Continuous Development) kan ge en konsekvent process för redigering och distribution av appar som sträcker sig över moln och för att ge kvalitetssäkring för deras infrastruktur och app. Med den här pipelinen kan infrastrukturen och appen testas i ett moln och distribueras i ett annat moln. Med pipelinen kan du till och med distribuera vissa komponenter i din hybridapp till ett moln och andra komponenter till ett annat moln, vilket i princip utgör grunden för hybridappdistribution. Ett CI/CD-system är viktigt för att hantera de beroenden som appkomponenter har för varandra under installationen, till exempel webbappen som behöver en anslutningssträng till databasen.
Hantera livscykeln. Eftersom resurser i en hybridapp kan sträcka sig över platser måste varje enskild plats livscykelhanteringsfunktion aggregeras till en enda livscykelhanteringsenhet. Överväg hur de skapas, uppdateras och tas bort.
Granska felsökningsstrategier. Felsökning av en hybridapp omfattar fler appkomponenter än samma app som körs i ett enda moln. Förutom anslutningen mellan molnen körs appen på två plattformar i stället för en. En viktig uppgift vid felsökning av hybridappar är att undersöka aggregerad hälso- och prestandaövervakning av appkomponenterna.
Säkerhet
Säkerhet är ett av de viktigaste övervägandena för alla molnappar och det blir ännu mer kritiskt för hybridmolnappar.
För den grundläggande diskussionen om den här pelaren, se Security i de fem grundpelarna för arkitekturens excellens.
Säkerhetschecklista
Anta intrång. Om en del av appen komprometteras kontrollerar du att det finns lösningar för att minimera spridningen av intrånget, inte bara på samma plats utan även mellan platser.
Övervaka tillåten nätverksåtkomst. Fastställ nätverksåtkomstprinciperna för appen, till exempel att endast komma åt appen från ett specifikt undernät och endast tillåta att de minsta portarna och protokollen mellan de komponenter som krävs för appen fungerar korrekt.
Använd robust autentisering. Ett robust autentiseringsschema är viktigt för appens säkerhet. Överväg att använda en federerad identitetsprovider som tillhandahåller funktioner för enkel inloggning och använder ett eller flera av följande scheman: inloggning med användarnamn och lösenord, offentliga och privata nycklar, tvåfaktors- eller multifaktorautentisering och betrodda säkerhetsgrupper. Fastställa lämpliga resurser för att lagra känsliga data och andra hemligheter för appautentisering utöver certifikattyper och deras krav.
Använd kryptering. Identifiera vilka områden i appen som använder kryptering, till exempel för datalagring eller klientkommunikation och åtkomst.
Använd säkra kanaler. En säker kanal i molnen är viktig för att tillhandahålla säkerhets- och autentiseringskontroller, realtidsskydd, karantän och andra tjänster i moln.
Definiera och använda roller. Implementera roller för resurskonfigurationer och enkel identitetsåtkomst mellan moln. Fastställ kraven för rollbaserad åtkomstkontroll (RBAC) för appen och dess plattformsresurser.
Granska systemet. Systemövervakning kan logga och aggregera data från både appkomponenterna och relaterade molnplattformsåtgärder.
Sammanfattning
Den här artikeln innehåller en checklista med objekt som är viktiga att tänka på när du redigerar och utformar dina hybridappar. Om du granskar de här grundpelarna innan du distribuerar din app kan du inte stöta på dessa frågor vid produktionsstopp och eventuellt kräva att du går tillbaka till din design.
Det kan verka som en tidskrävande uppgift i förväg, men du får enkelt avkastning på investeringen om du utformar din app baserat på dessa pelare.
Nästa steg
Mer information finns i följande resurser: