Introduktion
Om du någonsin har försökt att designa molnarkitektur i AWS från grunden vet du förmodligen redan: det är lika delar frihet och kaos. Det finns tusen sätt att bygga något på, och lika många sätt att sabba det.
En kort titt på AWS-dokumentationen kan få dig att tänka: "Coolt, vi ska helt enkelt följa de bästa metoderna." Men i verkliga internationella miljöer lever förstklassiga metoder inte ofta vid första kontakten med verkliga kommersiella företagsbehov, prisintervallgränser eller mänskliga fel. Det är därför som man genom att tidigt samarbeta med proffs som Perfsys kan förhindra att man senare spelar whack-a-mole med skyddshål och skalningskomplikationer.
Målet är inte bara att få något som fungerar. Det är att bygga ett system som inte faller omkull när trafiken ökar eller en region blinkar ut - och som inte lämnar ytterdörren vidöppen för internet.
Låt oss börja med det uppenbara: AWS är ett odjur
Du kan bygga praktiskt taget vad som helst med AWS. Från tvåpersoners startups till spretiga företagsplattformar, byggstenarna finns alla där - EC2, Lambda, RDS, S3, IAM, VPCs, listan fortsätter. Haken? Ju fler alternativ du har, desto lättare är det att skapa en trasslig röra.
Det är inte så att AWS är dåligt utformat. Det är bara det att du måste utforma det ordentligt. Annars slutar det med vad vissa team kallar "molnspagetti": tjänster som är beroende av varandra, hårdkodade hemligheter, ingen taggning, ingen loggning och absolut ingen aning om vad som kostar hur mycket.
Tillförlitlighet och säkerhet är inte en självklarhet
Det är frestande att behandla säkerhet och tillförlitlighet som framtida problem. "Vi säkrar det efter att vi har gått live." "Vi lägger till övervakning i nästa sprint." Men fråga vem som helst som har varit med om ett dataintrång eller ett avbrott på flera timmar - att hoppa över de stegen är det som gör att du till slut måste jobba hela natten.
Vad tillförlitlighet verkligen betyder
Det här handlar inte om drifttidsgarantier på ett bildspel. Det handlar om teknik för misslyckande. Tjänster går ner. Diskar går sönder. API:er får timeout. Det som är viktigt är om ditt system fortsätter att fungera när saker går sönder.
Har du redundans över tillgänglighetszoner? Kan ditt system tolerera en felaktig databasnod utan att förlora data eller göra fel? Kör du kritiska arbetsbelastningar i en enda region för att "det var det som var enklast att distribuera"? Det här är de frågor som skiljer fungerande system från motståndskraftiga.
Och säkerhet? Det är inte bara IAM
Ja, identitets- och åtkomsthantering (IAM) är den första väggen. Men säkerheten sträcker sig långt bortom det. Offentligt tillgängliga S3-hinkar. Roller med överdrivna behörigheter. Hemligheter hårdkodade i Lambda-funktioner. Loggning stängs av "för att spara kostnader". Alla dessa är tidsinställda bomber.
Genom att använda aws well architected-ramverket kan du identifiera dessa problem innan de exploderar. Ramverket delar upp arkitekturen i fem nyckelområden - säkerhet, tillförlitlighet, operativ excellens, prestandaeffektivitet och kostnadsoptimering - och tvingar teamen att utvärdera varje område på ett ärligt sätt. Det är inte en silverkula, men det tvingar dig att ställa svåra frågor.
De byggstenar som faktiskt betyder något
Okej, låt oss gå in på kärnan. Här är vad som är viktigt när du bygger säker, pålitlig arkitektur på AWS - och var team oftast gör fel.
Använd IAM-roller på rätt sätt (ja, verkligen)
IAM-roller är kraftfulla. För kraftfulla, ibland. Det är alldeles för lätt att sätta på "AdministratorAccess" för att något inte fungerar, lova att fixa det senare ... och sedan aldrig fixa det.
Allt-i-ett-plattformen för effektiv SEO
Bakom varje framgångsrikt företag finns en stark SEO-kampanj. Men med otaliga optimeringsverktyg och tekniker att välja mellan kan det vara svårt att veta var man ska börja. Nåväl, frukta inte längre, för jag har precis det som kan hjälpa dig. Jag presenterar Ranktracker, en allt-i-ett-plattform för effektiv SEO.
Vi har äntligen öppnat registreringen av Ranktracker helt gratis!
Skapa ett kostnadsfritt kontoEller logga in med dina autentiseringsuppgifter
Du måste låsa fast det här tidigt. Principen om minsta möjliga privilegium är inte bara en bästa praxis - det är det enda vettiga sättet att arbeta på. Det betyder..:
-
Skopade roller per tjänst
-
Undvik jokertecken i behörigheter
-
Kortlivade autentiseringsuppgifter
-
Obligatorisk MFA för mänskliga användare
Låter det som en smärta? Det är det också. Men det är det också att förklara för din chef varför någon exfiltrerade kunddata från en felkonfigurerad Lambda.
Separera ditt nätverk som om du menar det
Detta är ett annat område där genvägar slår tillbaka. Du behöver inte en superkomplex nätverksinställning, men vissa grunder går långt:
-
Offentliga subnät endast för saker som måste möta internet (t.ex. ALB:er)
-
Privata subnät för allt annat
-
NAT-gateways för kontrollerad utgående åtkomst
-
VPC-slutpunkter för AWS-tjänstetrafik utan att träffa det offentliga internet
En platt VPC med allt på samma subnät kanske känns enkelt. Tills något går sönder och tar med sig allt.
Loggning och övervakning: Du kan inte åtgärda det du inte kan se
Det här borde inte ens vara uppe för debatt längre. Loggning är inte valfritt. Om du inte fångar CloudTrail, CloudWatch-mätvärden och VPC-flödesloggar, flyger du i blindo.
Men här är haken - enbart loggning är inte tillräckligt. Du måste faktiskt titta på loggarna. Skapa varningar för de saker som är viktiga. Filtrera bort bruset. Och se till att loggarna är centraliserade över konton och regioner. Fragmenterad synlighet är ingen synlighet.
Kryptera allt (inga undantag)
Använd KMS för data i vila. Använd TLS för data i transit. Rotera nycklar. Övervaka åtkomst. Det här är ett av de områden där det blir mycket dyrt senare att vara lat nu.
Och glöm inte bort saker som RDS-kryptering, EBS-volyminställningar och API Gateway TLS-verkställighet. De här små detaljerna gör skillnad.
Infrastruktur som kod eller inte
Gör du fortfarande driftsättningar genom att klicka runt i AWS-konsolen? Det är bra för dev, men farligt för prod.
Använd Terraform, CloudFormation eller CDK. Oavsett vad ditt team föredrar - välj bara ett och håll dig till det. Versionskontrollera dina mallar. Använd CI/CD för att distribuera. Automatisera rollbacks. Manuella driftsättningar är en öppen inbjudan till misstag.
Dessutom: tagga allt. Resurser utan taggar är som kablar utan etiketter - ingen vet vad de är till för och alla är rädda för att röra vid dem.
Skalning utan att sjunka
Låt oss vara tydliga: AWS älskar när du överprovisionerar. Du får "prestanda", de får dina pengar. Effektiv skalning handlar om att känna till dina mönster - och planera för dem.
Använd grupper för automatisk skalning, spotinstanser (försiktigt) och cachelager. Men ännu viktigare: testa under belastning. Det sista du vill är att upptäcka att din RDS-instans smälter under verklig trafik två dagar efter lanseringen.
Allt-i-ett-plattformen för effektiv SEO
Bakom varje framgångsrikt företag finns en stark SEO-kampanj. Men med otaliga optimeringsverktyg och tekniker att välja mellan kan det vara svårt att veta var man ska börja. Nåväl, frukta inte längre, för jag har precis det som kan hjälpa dig. Jag presenterar Ranktracker, en allt-i-ett-plattform för effektiv SEO.
Vi har äntligen öppnat registreringen av Ranktracker helt gratis!
Skapa ett kostnadsfritt kontoEller logga in med dina autentiseringsuppgifter
Reservera också kapacitet när det är vettigt. Det sparar pengar och förhindrar överraskande provisioneringsfel.
Planer för katastrofåterställning är inte valfria
Vad händer om en region går ner? Vad händer om din primära databas blir korrupt? Om svaret är "eh... vi skulle få problem", är det dags att omarbeta din DR-strategi.
Allt-i-ett-plattformen för effektiv SEO
Bakom varje framgångsrikt företag finns en stark SEO-kampanj. Men med otaliga optimeringsverktyg och tekniker att välja mellan kan det vara svårt att veta var man ska börja. Nåväl, frukta inte längre, för jag har precis det som kan hjälpa dig. Jag presenterar Ranktracker, en allt-i-ett-plattform för effektiv SEO.
Vi har äntligen öppnat registreringen av Ranktracker helt gratis!
Skapa ett kostnadsfritt kontoEller logga in med dina autentiseringsuppgifter
Det betyder inte att du ska bygga en identisk kopia av din infrastruktur i en annan region. Det betyder att man ska veta:
-
Vad du skulle återställa
-
Hur lång tid det skulle ta
-
Vilken data som skulle gå förlorad (om någon)
-
Vem ansvarar för vad under en failover
Och ja - du bör testa din återställningsplan. Annars är den bara fiktion.
Vanliga anti-mönster att undvika
Låt oss snabbt dra några "no-no's" som dyker upp alldeles för ofta:
-
Ett stort konto för allt: använd AWS Organizations. Separera prod, dev, staging, etc.
-
Lämna standard-VPC:er och säkerhetsgrupper orörda: lås ner dem.
-
Överförlitar sig på t2.micro-instanser "för testning" - de kommer att hamna i prod så småningom.
-
Att inte budgetera för CloudWatch-kostnader: ja, loggning kostar pengar. Att inte logga kostar mer.
-
Att ge tillgång till "bara fixa det snabbt": fixa din process istället.
Slutord? Håll dig flexibel, håll dig sund
Molnarkitektur handlar inte om att hitta den perfekta installationen. Det handlar om att bygga något som är flexibelt, robust och begripligt för fler än bara den person som skrev det.
Du är aldrig riktigt "klar" - och det är okej. Det som betyder något är att vara avsiktlig. Att ställa svåra frågor tidigt. Att göra revisioner ofta. Automatisera där det räknas. Och att veta när man ska kalla på hjälp.
För låt oss vara ärliga - AWS är kraftfullt, men det är också lätt att gå vilse i det. Att arbeta med erfarna ingenjörer som lever och andas molnarkitektur kan göra skillnaden mellan "det fungerar, för det mesta" och "vi sover gott om natten".
Och det är värt att bygga för.