Designöverväganden för hybridappar

Microsoft Azure är det enda konsekventa hybridmolnet. Det gör att du kan återanvända dina utvecklingsinvesteringar och göra det möjligt för appar som kan omfatta globala Azure, nationella Azure-moln och Azure Stack, vilket är en utökning av Azure i ditt datacenter. Appar som sträcker sig över moln kallas även hybridappar.

Guiden Azure Application arkitektur beskriver en strukturerad metod för att utforma appar som är skalbara, motståndskraftiga och mycket tillgängliga. Övervägandena som beskrivs i Azure Application arkitekturguide gäller även för 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 grundpelarna för programkvalitet som beskrivs i Azure ApplicationArchitecture Guide och fokuserar specifikt på att utforma hybridappar. Dessutom lägger vi till en grundpelare för placering 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 designa, konfigurera, distribuera och underhålla en hybridapparkitektur omfattar många designöverväganden som du kanske inte känner till.

Syftet med det här dokumentet är att sammanställa möjliga frågor som kan uppstå när du implementerar hybridappar och tillhandahåller överväganden (dessa grundpelare) och metodtips för att arbeta med dem. Genom att hantera dessa frågor under designfasen undviker du de problem som de kan orsaka i produktion.

Det här är i princip frågor som du behöver 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 grundpelarna.

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 mappa till dessa överväganden för att avgöra apparkitekturen.

Delar upp appen i dess komponenter genom att studera appens arkitektur och fastställa vad den består av. Komponenterna kan även innehålla andra appar som din app interagerar med. När du identifierar komponenterna kan du utvärdera dina avsedda hybridåtgärder utifrån deras egenskaper genom att ställa följande frågor:

  • Vad är syftet med komponenten?
  • Vilka är beroenden mellan komponenterna?

En app kan till exempel ha en frontend och en backend definierad som två komponenter. I ett hybridscenario finns fronten i ett moln och backend är i det andra. Appen tillhandahåller kommunikationskanaler mellan frontend och användaren, samt mellan frontend och backend.

En appkomponent definieras av många former och scenarier. Den viktigaste uppgiften är att identifiera dem och deras molnplats eller lokala plats.

De vanliga appkomponenter som ska ingå i inventeringen visas i tabell 1.

Tabell 1. Vanliga appkomponenter

Komponent Vägledning för hybridapp
Klientanslutningar Din app (på valfri enhet) 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:er 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 delar 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. Dessa köer kan ge meddelandefunktioner, meddelanden och buffringsfunktioner till prenumererande parter.
Datalagring En app kan vara tillståndslös eller tillståndslös. Tillståndsful apps need data storage that can be met by numerous formats and volumes.
Cachelagring av data En komponent för datacachelagring i din design kan strategiskt hantera problem med svarstider och spela en roll i att utlösa burst-data i molnet.
Datainhämtning Data kan skickas till en app på många sätt, från användarskickade värden i ett webbformulär till kontinuerligt dataflöde med hög volym.
Databearbetning Dina databearbetningsuppgifter (till exempel rapporter, analyser, 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 grundpelare

För varje komponent utvärderar du dess egenskaper för varje pelare. När du utvärderar varje komponent med alla grundpelare kan frågor som du kanske inte har övervägt bli kända för dig som påverkar utformningen av hybridappen. Genom att ta hänsyn till dessa överväganden kan du öka värdet när du optimerar din app. Tabell 2 innehåller en beskrivning av varje grundpelare som relaterar till hybridappar.

Tabell 2. Pelare

Pelaren Beskrivning
Placering Strategisk placering av komponenter i hybridappar.
Skalbarhet Systemets förmåga att hantera ökad belastning.
Tillgänglighet Andelen tid som en hybridapp fungerar och fungerar.
Återhämtning Möjligheten för en hybridapp att återställa.
Hanterbarhet Driftsprocesser som håller ett system igång och i produktion.
Säkerhet Skydda hybridappar och data mot hot.

Placering

En hybridapp har till sin natur ett placerings övervägande, till exempel för datacentret.

Placering är den viktiga uppgiften att positionera komponenter så att de på bästa sätt kan användas för en hybridapp. Hybridappar sträcker sig per definition över platser, till exempel från lokala platser till molnet och mellan olika moln. Du kan placera komponenter i appen i molnet på två sätt:

  • Lodräta hybridappar
    Appkomponenter distribueras på olika platser. Varje enskild komponent kan ha flera instanser som endast finns på en enda plats.

  • Vågräta 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 positivhet kan uppnås med ett abstraktionslager. Det här lagret, med ett modernt appramverk som mikrotjänster, kan definiera hur appen ska serdas genom placering av appkomponenter som fungerar på noder i 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 specifikt moln. Detta kan omfatta krav på självbestämmande från ditt företag eller enligt lag. Kontrollera också om det krävs några lokala åtgärder för en viss plats eller språk.

Ta reda på anslutningsberoenden. Nödvändiga platser och andra faktorer kan styra anslutningsberoenden mellan dina komponenter. När du placerar komponenterna bör du fastställa den optimala anslutningen och säkerheten för kommunikationen mellan dem. Alternativen är VPN,ExpressRoute ochhybridanslutningar.

Utvärdera plattformsfunktioner. För varje appkomponent ser du om den nödvändiga resursprovidern för appkomponenten är tillgänglig i molnet och om bandbredden kan hantera det förväntade dataflödet och svarstidskraven.

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älla krav på datasuveränitet. Hybridappar är inriktade på att ta emot dataisolering, till exempel i ett lokalt datacenter. Granska placeringen av dina resurser för att optimera framgången för att tillgodose det här kravet.

Planera för svarstid. Åtgärder mellan moln kan introducera fysiskt avstånd mellan appkomponenterna. Ta reda på kraven för att hantera svarstider.

Kontrollera trafikflöden. Hantera högsta användning och lämplig och skyddad kommunikation för personligt identifierbar information när den används av frontend i ett offentligt moln.

Skalbarhet

Skalbarhet är möjligheten för ett system att hantera ökad belastning på en app, som kan variera över tid när andra faktorer och tvingar fram påverkan på målgruppens storlek, utöver appens storlek och omfattning.

En grundläggande diskussion om den här grundpelaren finns i Skalbarhet i de fem grundpelarna för utmärkt arkitektur.

Med en horisontell skalningsmetod för hybridappar kan du 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 komponenterna 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 fylla appen.

Vissa appkomponenter kan skalas ut linjärt, medan andra har skalningsberoenden och kan begränsas till i vilken utsträckning de kan skalas. Till exempel har en VPN-tunnel som tillhandahåller hybridanslutning för appkomponenterna 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

Fastställa tröskelvärden för skalning. För att hantera de olika beroendena i din app avgör du i vilken utsträckning appkomponenter i olika moln kan skalas oberoende av varandra, samtidigt som kraven för att köra appen fortfarande är uppfylla. 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 frontend-instanser kan du behöva skala om backend-instansen.

Definiera skalningsscheman. De flesta appar har perioder med hög belastning, så du måste aggregera deras tider med hög belastning i scheman för att samordna optimal skalning.

Använd ett centraliserat övervakningssystem. Plattformsövervakningsfunktioner kan tillhandahålla 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 skala beroende på resursen på en annan plats. Dessutom kan ett centralt övervakningssystem spåra vilka moln som autoskalar resurser och vilka moln som inte gör det.

Dra nytta av funktionerna för automatisk skalning (om tillgängligt). Om autoskalningsfunktioner ingår i arkitekturen implementerar du autoskalning genom att ange tröskelvärden som definierar när en appkomponent ska 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 av appen, som sprids över olika moln, också skalas. Funktionerna för automatisk skalning i 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 belastning 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 fördela belastningen på inkommande begäranden. Se till att klientanslutningarna kan hantera ökade belastningar och även fastställa eventuella automatiserade procedurer för klientanslutningar för att hantera belastningen.

Tillgänglighet

Tillgänglighet är den tid som ett system fungerar och fungerar. Tillgängligheten mäts som en procentandel av drifttiden. Appfel, infrastrukturproblem och systembelastning kan minska tillgängligheten.

En grundläggande diskussion om den här grundpelaren finns i Tillgänglighet i de fem grundpelarna för utmärkt arkitektur.

Checklista för tillgänglighet

Ange redundans för anslutning. Hybridappar kräver anslutning mellan molnen som appen är utspridd i. Du kan välja teknik för hybridanslutningar, så utöver ditt primära teknikval kan du använda en annan teknik för att tillhandahålla redundans med funktioner för automatisk redundans om den primära tekniken skulle 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 slutar fungera lokalt, om en top-of-rack-växel slutar fungera eller om hela 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 serdas med uppdateringar eller funktionsuppgraderingar. Precis som med feldomäner kan uppgraderingsdomäner klassificeras efter deras placering mellan 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 enda plats kan ha flera uppgraderingsdomäner.

Spåra instanser och tillgänglighet. Appkomponenter med hög tillgänglig 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älvreläkning. Om ett problem orsakar ett avbrott i appens tillgänglighet kan en identifiering av ett övervakningssystem initiera självreläsningsaktiviteter till appen, till exempel att tömma den misslyckade instansen och omdistribuera den. Detta kräver troligen en central övervakningslösning som är integrerad med en CI/CD-pipeline (kontinuerlig integrering och kontinuerlig leverans) i hybriderna. 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ängligheten är viktig för avtal för att upprätthålla anslutningen till de tjänster och appar som du har med dina kunder. Varje plats som hybridappen använder kan ha ett eget serviceavtal. Dessa olika serviceavtal kan påverka det övergripande serviceavtalet för din hybridapp.

Återhämtning

Å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 returnera appen till ett fullt fungerande tillstånd efter ett fel. Återhämtningsstrategier omfattar lösningar som säkerhetskopiering, replikering och haveriberedskap.

Den grundläggande diskussionen om den här grundpelaren finns i Återhämtning i de fem grundpelarna för utmärkt arkitektur.

Checklista för elasticitet

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 har fel på 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 återställningsflöde. En effektiv återställningsflödesdesign har utvärderat appkomponenter för deras förmåga att hantera buffertar, återförsök, försök att överföra misslyckade data igen och, om det behövs, återställa till en annan tjänst eller ett annat arbetsflöde. Du måste bestämma vilken mekanism för återställning som ska användas, vad återställningsprocessen innebär och hur ofta den testas. Du bör också fastställa frekvensen för både inkrementella och fullständiga säkerhetskopieringar.

Testa partiella återställningar. En partiell återställning för en del av appen kan ge användare 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 sidoeffekter, till exempel en säkerhetskopierings- och återställningstjänst som interagerar med appen för att stänga av den på ett smidigt sätt innan säkerhetskopieringen görs.

Fastställa initierare för haveriberedskap 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äll en apps självåterställningsfunktioner för automatisk återställningsinitiering och den tid som krävs för att en app självåterställning ska betraktas som ett fel eller en lyckad återställning. Fastställ 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 den platsen i en centraliserad tjänst som tillhandahåller återhämtningsfunktionerna.

Fastställa driftstopp. Fastställ den förväntade stilleståndstiden på grund av underhåll för appen som helhet och som appkomponenter.

Dokumentera felsökningsprocedurer. Definiera felsökningsprocedurer för omdistribution av resurser och appkomponenter.

Hanterbarhet

Överväganden för hur du hanterar hybridappar är viktiga när du utformar din arkitektur. En väl hanterad 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.

Den grundläggande diskussionen om den här grundpelaren finns i DevOps i de fem grundpelarna för utmärkt arkitektur.

Checklista för hantering

Implementera övervakning. Använd ett centraliserat övervakningssystem för appkomponenter som är spridda över moln för att få en aggregerad vy över deras hälsa och prestanda. Det här systemet omfattar övervakning av både appkomponenter och relaterade plattformsfunktioner.

Bestäm vilka delar av appen som kräver övervakning.

Samordna principer. Varje plats som en hybridapp omfattar 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 de behörigheter som krävs för olika personer (t.ex. 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 inuti appen. Med ett RBAC-system (rollbaserad åtkomstkontroll) kan du ange dessa behörigheter för appresurserna. Dessa åtkomstbehörigheter är utmanande när alla resurser distribueras i ett enda moln, men kräver ännu mer uppmärksamhet när resurserna sprids över molnen. Behörigheter för resurser som anges i ett moln gäller inte för resurser som angetts i ett annat moln.

Använd CI/CD-pipelines. En ci/CD-pipeline (kontinuerlig integrering och kontinuerlig utveckling) kan ge en konsekvent process för redigering och distribution av appar som sträcker sig över moln och för att tillhandahålla kvalitetssäkring för sin 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 även distribuera vissa komponenter i hybridappen 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 hantering av de beroenden som appkomponenter har för varandra under installationen, till exempel att webbappen behöver en anslutningssträng till databasen.

Hantera livscykeln. Eftersom resurser i en hybridapp kan sträcka sig över flera platser måste livscykelhanteringsfunktionerna för varje enskild plats aggregeras i en enda livscykelhanteringsenhet. Fundera över hur de skapas, uppdateras och tas bort.

Undersök 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 sammanställd 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 viktigare för hybridmolnappar.

Den grundläggande diskussionen om den här grundpelaren finns i Säkerhet i de fem grundpelarna för utmärkt arkitektur.

Säkerhetskontrollista

Anta intrång. Om en del av appen komprometteras bör du se till att det finns lösningar för att minimera intrångsspridningen, inte bara på samma plats utan även på olika platser.

Övervaka tillåten nätverksåtkomst. Fastställ principerna för nätverksåtkomst 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 att appen ska fungera 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 som 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äll 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 delar av appen som använder kryptering, till exempel för datalagring eller klientkommunikation och åtkomst.

Använd säkra kanaler. En säker kanal i molnet är viktig för att tillhandahålla säkerhets- och autentiseringskontroller, realtidsskydd, karantän och andra tjänster i olika moln.

Definiera och använda roller. Implementera roller för resurskonfigurationer och åtkomst med en identitet 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 över objekt som är viktiga att tänka på vid redigering och utformning av dina hybridappar. Genom att granska de här grundpelarna innan du distribuerar din app förhindrar du att du stöter på dessa frågor vid produktionsavbrott och eventuellt kräver 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 utifrån dessa pelare.

Nästa steg

Mer information finns i följande resurser: