Amazon Web Services (AWS) är den ledande i världen inom moln baserade plattformar för server lösningar. Under åren har AWS Solutions Architects som YumFog LLC hjälpt många företag att skapa sina molnmiljöer. Amazon har samlat erfarenheterna från dessa arkitekter för att definiera AWS ”Well-Built Framework”. Syftet med denna guide är att definiera de bästa metoderna för ett lyckat AWS genomförande.
Ett lyckat AWS framework är baserat på fem pelare:
Säkerhet
Tillförlitlighet
Prestanda Effektivitet
Kostnadsoptimering
Operativ överlägsenhet
Ett lyckat AWS framework är baserat på fem pelare:
Säkerhet
Tillförlitlighet
Prestanda Effektivitet
Kostnadsoptimering
Operativ överlägsenhet
Allmänna design principer
Följande allmänna design principer används för att fastställa ovanstående fem pelare:
Använd molnens förmåga att automatiskt skala resurser upp eller ner för att eliminera gissning hur mycket kapacitet som behövs. Resursallokering baserad på gissning leder till förlust.
Använd stora testnivåer på produktionsnivå. Du kan enkelt skapa och demontera miljöer i molnet. Testmiljöer på produktionsnivå är lönsamma alternativ.
Använd automation för att replikera system och för att prova olika arkitekturer för att förbättra prestanda.
Låt arkitekturer utvecklas i molnet eftersom du inte är bunden av restriktionerna för fysiska servrar. Detta kan leda till bättre lösningar.
Lita på datadriven arkitektur för att samla in information som kan förbättra ditt system.
Använd testdagar eller simulerade händelser med hög trafik för att testa systemets robusthet regelbundet.
Låt oss nu överväga de bästa metoderna för att genomföra och hantera de viktiga frågorna inom de fem pelarna.
Säkerhetspelare
Säkerhetspelaren skyddar information, system och tillgångar genom att genomföra strategier för att motverka risker.
Design principer
Här är principerna som hjälper till att designa ett säkert system i molnet:
Istället för att bara täcka anslutningspunkterna i ditt system genom brandväggar, tillämpa säkerhet på alla komponenter i systemet.
Använd loggar och revisionsspår för att göra ditt system spårbart.
Ange lägsta behörighet till en användare i början och öka privilegiet vid behov.
Studera AWS ”Shared Responsibility Model” och förstå ditt ansvar för att säkra systemet.
Använd automation för att hålla dina system effektiva och kostnadseffektiva.
Nyckelkomponenterna i säkerhetspelaren
Säkerhetspelaren är beroende av dessa fem bästa metoderna:
Identitets- och åtkomsthantering
Detektiva kontroller
Infrastrukturskydd
Dataskydd
Incidenthantering
Låt oss titta på de bästa metoderna i varje kategori.
AWS bästa praxis: Identitets- och åtkomsthantering
Du måste vara uppmärksam på identitet och åtkomsthantering för att hålla systemet säkert från obehöriga användare. Amazonas Identity and Access Management (IAM) tillhandahåller den tjänst som krävs för att du ska kunna styra användare, grupper, tjänster och roller och du kan ställa in säkerhetsgruppspolicyer, multifaktorautentisering (MFA), lösenordsstyrka och lösenordsutgångspolicy.
AWS bästa praxis: Detektiva kontroller
Korrekta detektiva kontroller ger dig möjlighet att känna igen potentiella säkerhetshändelser, de hjälper dig också att kontrollera kvalitet, uppfylla laglig efterlevnad och identifiera potentiella hot. Detektiva kontroller implementeras genom korrekt loggning och övervakning av händelser i ditt system. AWS CloudTrail och AWS CloudWatch ger loggar och revisionsprocesser för att hålla reda på andra AWS-tjänster.
AWS bästa praxis: Infrastrukturskydd
Infrastrukturskydd bör inriktas på att säkerställa att komponenterna i systemet är skyddade mot yttre hot genom lämpliga nätverkssäkerhetsnivåer. Förstå insatserna från Amazon Virtual Private Cloud (VPC) kan hjälpa dig att skapa en mer robust infrastruktur som skyddas av korrekta gateways, route tables, och subnets.
AWS bästa praxis: dataskydd
Ditt dataskydd bör börja med korrekt klassificering av data. Det låter dig enkelt implementera olika säkerhetsnivåer på olika dataset. Amazon Simple Storage Service (S3) har många olika vid lagring av data. Att aktivera versionskontroll på S3 kan också hjälpa dig att hålla din data säker från oavsiktliga ändringar och raderingar och man kan använda kryptering för att ytterligare säkerställa säkerheten för känslig information. Förutom S3 tillhandahåller Amazon Elastic Block Storage (EBS) och Amazon Relational Database Service (RDS) också krypteringsfunktioner.
AWS bästa praxis: Incidenthantering
Att ha en plan att hantera eventuella säkerhetshändelser är en viktig del av säkerhetsplaneringen. Loggning och kör bokautomatisering via skript kan hjälpa ditt system att vara redo för en händelse. Amazon CloudFormation är ett utmärkt verktyg för att utforma incident mekanismer.
Viktiga frågor att ställa sig själv om säkerhet
Identitets- och åtkomsthantering
Säkerhetsfråga 1. Hur skyddar jag tillgången och användningen av AWS root-kontouppgifter?
Säkerhetsfråga 2. Hur definierar jag systemansvariges roller och ansvar för att kontrollera mänsklig tillgång till AWS Management Console och API?
Säkerhetsfråga 3. Hur begränsar jag automatisk tillgång till AWS-resurser?
Detectiva kontroller
Säkerhetsfråga 4. Hur tar jag in och analyserar loggar?
Infrastrukturskydd
Säkerhetsfråga 5. Hur hanterar jag gränssnittsskydd för nätverk och värdnivå?
Säkerhetsfråga 6. Hur använder jag säkerhetsfunktionerna för AWS-servicenivå?
Säkerhetsfråga 7. Hur skyddar jag operativsystemens integritet på mina Amazon EC2-instanser?
Dataskydd
Säkerhetsfråga 8. Hur klassificerar jag dina uppgifter?
Säkerhetsfråga 9. Hur krypterar och skyddar jag mina data i vila?
Säkerhetsfråga 10. Hur hanterar jag nycklar?
Säkerhetsfråga 11. Hur krypterar och skyddar jag mina data i transit?
Incidentrespons
Säkerhetsfråga 12. Hur säkerställer jag ett lämpligt incidentsvar?
Tillförlitlighetspelaren
Tillförlitlighetspelaren ger ditt system möjligheten att återhämta sig från någon form av katastrof. Du kan designa ditt system för att automatiskt skaffa resurser för att möta spikar i efterfrågan eller mildra serviceavbrott. Det ska kunna hantera nätverksproblem och konfigurationsolyckor.
Design principer
Här är designprinciperna som hjälper dig att göra ditt system mer tillförlitligt:
Kontrollera regelbundet återställningsförfaranden så att du är redo i nödsituationer.
Automatisera återställningsprocessen med utlösare som kan köras baserat på nyckel prestanda indikatorer (KPI).
Använd horisontell skalning, vilket betyder att du byter ut en stor resurs med flera mindre resurser för att minska effekten av eventuella fel.
Använd övervakningsverktyg och molnets automatiska skalningsfunktioner för att automatiskt göra kapacitetsplanering.
Använd automation för att ändra infrastruktur så att det finns mindre chans för mänskliga fel.
Huvudkomponenterna i tillförlitlighetspelaren
Här är de metoder som bestämmer systemets tillförlitlighet:
Grundinställningar
Förändringar
Felhantering
Låt oss utforska metoderna.
AWS Best Practices: Grunden
Grundläggande bästa praxis säkerställer att du känner till din ansökan eller systemets krav innan du börjar implementera. Molnet kan ge obegränsade resurser när det gäller beräkning och nätverksfunktioner. Du behöver dock veta och förstå begränsningar för begränsningar för att undvika hårda gränser som AWS sätter upp för dig. AWS IAM låter dig styra åtkomst till dina resurser och VPC kan du tillhandahålla en isolerad del av molnet för din ansökan.
AWS bästa praxis: Förändrings styrning
I traditionella IT-miljöer är förändringshantering ofta en manuell process. Men AWS ger dig möjligheten att skapa automatiserade förändringshanteringsprocedurer som kan hjälpa dig att hantera ditt system bättre. KPI kan utlösa förändringshanteringskontroller som kan hantera hot eller öka resurserna mer proaktivt. AWS CloudTrail och AWS Config är också tjänster som kan hjälpa dig att automatisera din förändringshantering.
AWS bästa praxis: Felhanterings styrning
System- eller komponentfel är oundvikliga i någon mjukvaruprocess. Dataövervakning och användning av AWS-tjänster för att automatiskt adressera kända fel bör ingå i konstruktionsprocessen. Du kan också använda automatisk testning för att verifiera fullständig återställning av ditt system efter ett misslyckande.
Viktiga frågor att ställa sig om tillförlitlighet
Grundinställningar
Tillförlitlighet Fråga 1. Hur hanterar jag AWS-servicegränser för mina konton?
Tillförlitlighet Fråga 2. Hur planerar jag min nätverkstopologi på AWS?
Förändringar
Tillförlitlighet Fråga 3. Hur anpassar mitt system till förändringar i efterfrågan?
Tillförlitlighet Fråga 4. Hur övervakar jag AWS-resurser?
Tillförlitlighet Fråga 5. Hur genomför jag förändring?
Felhantering
Tillförlitlighet Fråga 6. Hur säkerhetskopierar jag mina data?
Tillförlitlighet Fråga 7. Hur står systemet emot komponentfel?
Tillförlitlighet Fråga 8. Hur testar jag för elasticitet?
Tillförlitlighet Fråga 9. Hur planerar jag för katastrofåterställning?
Prestationseffektivitetspelare
Syftet med prestationseffektivitetspelaren är att se till att arkitekturen effektivt kan hantera resursallokering för att ändra krav och tekniska förändringar.
Design principer
Konstruktionsprinciperna nedan kan vägleda dig för att förbättra prestanda effektivitet:
Använd molntjänster för svåra teknologier som NoSQL och maskininlärning för att förenkla ditt IT-ansvar.
Utveckla runt om i världen med hjälp av clouds billiga globala funktioner för att ge dina kunder snabbare och mer pålitlig service.
Använd server fri arkitektur för att minska komplexiteten av resurser som du måste behålla.
Använd jämförande test och experiment ofta för att optimera prestandan för dina instanser, lagring och arkitektur.
Nyckelkomponenterna i prestationseffektivitetspelaren
Med tanke på följande komponenter kan du förbättra prestanda:
Urval (beräkning, lagring, databas, nätverk)
Granska
Övervakning
Kompromisser
Låt oss ta en titt på de bästa metoderna.
AWS bästa praxis: Urval
Att välja rätt beräkning, lagring, databas och nätverkskomponenter är ett komplicerat arkitektoniskt problem. Ditt val beror på din särskilda arbetsbelastning. I AWS har du flera alternativ att välj för vilken komponent som helst. Att lägga alla dessa alternativ tillsammans kräver noggrann övervägning. En datastyrt inställning i valet kan hjälpa dig att mäta effektiviteten hos alla arbetsdelar och optimera den efter behov. Kunskap om automatisk skalning, Amazon EBS-lagringsalternativ, Amazon RDS-databasfunktioner och Amazon Route 53-nätverksfunktioner hjälper dig att designa en bättre fungerande arkitektur.
AWS bästa praxis: Granska
AWS är ett ständigt föränderligt universum med flera lösningar för samma problem. Det är viktigt att regelbundet granska den nuvarande arkitekturen för att avgöra om alla tjänster du använder är optimala. Amazon distribuerar nya regioner, kantplatser, tjänster och funktioner regelbundet. En granskningsprocess kan hjälpa dig att utnyttja dessa innovationer i god tid. AWS-bloggen och avsnittet What's New är stora resurser för att hålla dig uppdaterad.
AWS bästa praxis: Övervakning
Övervakning av olika mätvärden ger dig möjlighet att se till att ditt system fungerar optimalt. Amazon CloudWatch-tjänsten kan skicka meddelanden om det finns prestandafrågor. Amazon Kinesis, Amazon Simple Queue Service (SQS) och AWS Lambda är användbara verktyg för att implementera automatiserade lösningar för alla utlösare.
AWS bästa praxis: Kompromisser
Avvikelser mellan konsistens, hållbarhet, utrymme, tid, latens och mer är en del av utformningen av ett system. Det bästa sättet att hitta en lösning är att testa scenarier. Cloud ger dig möjlighet att enkelt ändra parametrar och testa olika lösningar. Amazon hjälper dig också att göra det bästa av dina nuvarande resurser med tjänster som Amazon ElasticCache, Amazon CloudFront och AWS Snowball.
Viktiga frågor att ställa sig om prestanda och effektivitet
Urval
Prestationseffektivitets fråga 1. Hur väljer jag den mest effektiva arkitekturen?
Prestationseffektivitets fråga 2. Hur väljer jag min beräkningslösning?
Prestationseffektivitets fråga 3. Hur väljer jag min lagringslösning?
Prestationseffektivitets fråga 4. Hur väljer jag min databaslösning?
Prestationseffektivitets fråga 5. Hur väljer jag min nätverkslösning?
Recension
Prestationseffektivitets fråga 6. Hur ser jag till att jag fortsätter att ha den lämpligaste resurstypen eftersom nya resurstyper och funktioner introduceras?
Övervakning
Prestationseffektivitets fråga 7. Hur övervakar jag mina efterlanseringar för att se till att de fungerar som förväntat?
Kompromisser
Prestationseffektivitets fråga 8. Hur använder jag avvägningar för att förbättra prestanda?
Kostnadsoptimeringspelaren
Kostnadsoptimeringspelaren hjälper dig att driva kostnadseffektiva system genom kontinuerlig förbättring av din produkt från början till produktion. Det maximerar din avkastning på investeringar och hjälper dig att uppfylla dina affärsmål.
Design principer
Molnet ger dig många alternativ för att optimera kostnaderna. Följande principer hjälper dig med din strävan:
Betala endast för konsumtion genom att implementera ett system för att bara använda resurser vid behov.
Använd skalbarhets fördelarna för molnet för att minimera kostnaderna.
Undvik datacenterkostnader för att behålla servrar genom att använda molntjänster och resurser
Använd molnets förmåga att exakt identifiera och analysera kostnader. Fördela IT kostnader till rätt projekt och optimera avkastningen på investeringen.
Använd hanterade tjänster för att minska ägandekostnaden.
Nyckelkomponenter i pelaren för kostnadsoptimering
Följande bästa praxis kan hjälpa dig att optimera kostnaden:
Kostnadseffektiva resurser
Matcha utbud och efterfrågan
Medvetenhet om utgifterna
Optimera över tiden
Låt oss dyka djupare in i dessa metoder.
AWS bästa praxis: kostnadseffektiva resurser
Noggrant med tanke på kostnaden för varje instans och resursval kan din övergripande arkitektur bli mer kostnadseffektiv. Du behöver dock förstå de kortsiktiga och långsiktiga effekterna av dina beslut. Du kan välja en mindre beräkna instans för att spara pengar, men du kan sluta betala mer på grund av långa körtider. I ett sådant fall är det bättre att spendera pengar i större utsträckning för att spara på lång sikt. AWS Trusted Advisor kan inspektera din AWS-miljö och rekommendera lösningar för att göra ditt system mer kostnadseffektivt.
AWS bästa praxis: Matchande utbud och efterfrågan
I traditionella IT-system måste du förutsäga efterfrågan och förplanera dina resurser. Molnet ger mer flexibilitet genom automatisk leverans av instanser, lager och databaser. Med automatisk skalning och elasticitet kan du expandera och minska din användning respektive. Med rätt arkitektur kan du bibehålla en optimal balans mellan utbud och efterfrågan.
AWS bästa praxis: Utgiftsmedvetenhet
De flesta IT-kostnadsoptimering i det förflutna har varit inriktad på att hitta produkter och förhandla bättre priser med leverantörer. Cloud computing tar de ansvaren utanför IT-avdelningen. De frigjorda resurserna kan användas för att övervaka användning, utgifter och avkastning på investeringar. Det kan hjälpa företag att finjustera sina avdelningar och minska avfallet. Amazon CloudWatch-larm och Amazon Simple Notification Service (SNS) -varningar kan hjälpa till att hålla avdelningarna klara sina budgetar.
AWS bästa praxis: Optimering över tiden
Att regelbundet omvärdera dina arkitektoniska beslut kan bidra till att ditt system blir mer konkurrenskraftigt. Om du kör en relationsdatabas i en EC2-förekomst kan det vara värt att överväga Amazon RDS Aurora eller andra hanterade databastjänster för att spara pengar och tid på underhåll. Regelbunden uppdatering av komponenter kommer att optimera kostnaderna för att köra ditt system.
Viktiga frågor att ställa sig om kostnadsoptimering
Kostnadseffektiva resurser
Kostnadsoptimering fråga 1. Överväger jag kostnad när jag väljer AWS-tjänster för min lösning?
Kostnadsoptimering fråga 2. Har jag storleken på mina resurser för att möta mina kostnadsmål?
Kostnadsoptimering fråga 3. Har jag valt lämplig prissättningsmodell för att möta mina kostnadsmål?
Matchande utbud och efterfrågan
Kostnadsoptimering fråga 4. Hur ser jag till att min kapacitet matchar men inte överstiger vad jag behöver?
Utgiftsmedvetenhet
Kostnadsoptimering fråga 5. Ansåg jag överföringsavgifter vid utformningen av min arkitektur?
Kostnadsoptimering fråga 6. Hur övervakar jag användning och utgifter?
Kostnadsoptimering fråga 7. Avvecklar jag resurser som jag inte längre behöver eller stoppar resurser som tillfälligt inte behövs?
Kostnadsoptimering fråga 8. Vilka åtkomstkontroller och förfaranden har jag för att styra AWS-användningen?
Optimering över tiden
Kostnadsoptimering Fråga 9. Hur hanterar jag, planerar och överväger antagandet av nya tjänster?
Operationell excellens
Syftet med pelaren för operationell excellens är att säkerställa korrekt dokumentation, testning och granskning av operativa metoder och förfaranden.
Design principer
Genomförandet av följande principer kan hjälpa dig att driva operativ excellens i molnet:
Använd automation för repeterande uppgifter för att förbättra operativ effektivitet.
Samla mätvärden för att anpassa operativa processer till affärsmål.
Förbättra rutiner genom regelbundna, små och inkrementella ändringar för att undvika nertider.
Planera in testdagar eller simulerade händelser för att testa svar på oväntade händelser.
Granska driftsfel för att förbättra processerna.
Regelbundet uppdatera rutiner och håll alla i organisationen informerade genom en wiki eller intern kunskapsbas.
Huvudkomponenterna för operativ excellenspelaren
För att uppnå operativ excellens, hålla koll på följande områden:
Framställning
Verksamhet
Svar
Låt oss ta reda på mer.
AWS bästa praxis: Förberedelser
Korrekt förberedelse kan hjälpa alla system att fungera på en högre nivå av excellens. Procedurer för dagliga arbetsbelastningar (körbok) och oväntade händelser (playbook) bör ge nödvändig vägledning för alla som arbetar med systemet. Runbook och playbook bör kontrolleras regelbundet för att hitta några problemområden. Operativ beredskap minskar mänskligt fel och gör det enkelt att underhålla systemet. AWS CloudFormation, AWS Config och AWS Service Catalog är bra resurser för att förbereda sig för de dagliga och oväntade utmaningarna.
AWS bästa praxis: Operations
Standardisering av förfaranden kan hjälpa till att göra en stor skillnad i operativ effektivitet. Förändringar i systemet ska enkelt kunna spåras och reproduceras. Även förändringsprocessen ska vara lätt. Kontinuerlig integration / kontinuerlig distribuering (CI / CD) och frigöringshantering (automatisk källkontroll, uppbyggnad, installation och testning) kan säkerställa kontinuerlig drift utan flaskhalsar. Kvalitetssäkring (QA) bör mildra risken genom att använda testtekniker (Blå / Grön, Kanarie- och A / B-testning) som kan minimera effekterna av förändringar. AWS CodeCommit, AWS CodeDeploy och AWS CodePipeline kan hjälpa till med CI / CD-processer. Använd AWS CloudTrail för att granska och spåra ändringar.
AWS bästa praxis: Respons
Svar på händelser och hot bör automatiseras. En bra arkitektur bör innehålla automatisering för varningar, begränsning, återställning och återställning. Spelboken ska ha väldefinierade vägar att följa. Eskaleringsprocessen för varje oväntad händelse bör vara tydlig. Du kan utnyttja Amazon CloudWatch-tjänsten för att utlösa automatiska svar.
Viktiga Frågor att ställa sig om operationell excellens
Förberedelse
Operationell excellens fråga 1. Vilka bästa metoder använder jag för molnoperationer?
Operationell excellens fråga 2. Hur gör jag konfigurationshantering för min arbetsbelastning?
Actions
Operationell excellens fråga 3. Hur utvecklar jag min arbetsbelastning samtidigt som förändringens inverkan minimeras?
Operationell excellens fråga 4. Hur övervakar jag min arbetsbelastning för att säkerställa att den fungerar som förväntat?
Svar
Operationell excellens fråga 5. Hur svarar jag på oförutsedda operativa händelser?
Operationell excellens fråga 6. Hur hanteras eskalering när man svarar på oförutsedda operativa händelser?
Slut ats
Amazon Well-Architectured Framework föreskriver sätt att förbättra din arkitektur. Använd frågorna i denna artikel för att skapa en bättre arkitektur för din applikation.
Om du vill lära dig mer kan du läsa hela Amazon Well-Architectured Framework Whitepaper här.
Sammanställd av
Arun Subramanian, YumFog LLC
Pierre Gustavsson, Arbore AB