Vad är AWS Fargate?
AWS Fargate är en teknik som fungerar med Amazon ECS och Amazon EKS. Den möjliggör att köra applikationer i behållare utan att behöva hantera servrar eller kluster av Amazon EC2-instanser.
Fargate tar bort behovet av att konfigurera, skala eller tillhandahålla virtuella maskin-kluster för att köra behållare. Användare behöver inte välja servertyper, planera klusterskalning eller optimera klusterpackning manuellt.
För att köra Amazon ECS-uppgifter och tjänster kan vi antingen använda Fargate-starttypen eller en Fargate-kapacitetsleverantör. För att använda Fargate paketerar du applikationen i behållare, anger operativsystem, CPU- och minneskrav, konfigurerar nätverks- och IAM-policyer och startar den sedan.
Det är inte nödvändigt att upprätthålla en fast CPU- och RAM-kapacitet för att hosta behållare. Vi kan ange hur mycket resurser en uppgift behöver och överlåta resten till AWS. Varje Fargate-uppgift har sin egen isoleringsbarriär, vilket innebär att den inte delar underliggande kärna, CPU, minne eller nätverksgränssnitt med andra uppgifter.
Hur fungerar Fargate?
Fargate fungerar genom att låta användare distribuera behållare utan att behöva konfigurera eller hantera infrastrukturen där de körs. Användare specificerar vilka behållarbilder de vill köra och hur mycket CPU- och minnesresurser som ska tilldelas. Fargate tillhandahåller sedan automatiskt värdservrarna. Betalning sker enbart för de resurser som faktiskt används.
Fargate betraktas som en serverlös datormotor eftersom den eliminerar behovet för användare att hantera servrarna som hostar behållarna. Det är viktigt att notera att servrarna fortfarande existerar; AWS tar dock fullt ansvar för deras hantering. Fargate bör inte förväxlas med AWS Lambda, en annan serverlös datortjänst som inte primärt skapades för behållare (även om Lambda nu stöder distribution av behållarbilder).
Hur är Fargate till hjälp?
AWS Fargate anpassar automatiskt mängden datorkraft, minne och andra resurser som krävs för att utföra uppgifter. Användare behöver därför inte oroa sig för att välja instanstyper eller skala klusterkapaciteten manuellt.
Fargate tillåter att man betalar endast för de resurser som används för att driva behållarna, vilket eliminerar risken för överprovisionering och kostnader för oanvända servrar.
Fargate-uppgifter (pods) körs i sina egna kärnor, vilket resulterar i en säker och isolerad datormiljö med separata arbetsbelastningar och förbättrad säkerhet.
Det underlättar för team att utforma och köra applikationer med ECS- eller EKS-behållare utan att behöva hantera tidskrävande infrastrukturuppgifter som att skala och säkra servrar eller uppdatera operativsystem.
Med inbyggd integration med andra AWS-tjänster, som Amazon CloudWatch Container Insights, ger AWS Fargate en hög nivå av översikt. Det är även möjligt att använda tekniker från tredje part för att samla in loggar och mätvärden.
Det stora utbudet av AWS-tjänster kan effektivt användas i kombination med behållare som körs på Fargate.
Fargate hanterar automatiskt lansering och skalning av datorresurser i enlighet med behållarnas behov, vilket förhindrar överprovisionering och säkerställer att användare inte betalar för oanvända resurser. Man kan också skapa en besparingsstrategi. Fargate Spot-alternativet ger upp till 70% rabatt på vanliga kostnader men är bäst lämpat för applikationer som tolererar avbrott.
Fargate komponenter
Kluster
Ett Amazon ECS-kluster är en logisk gruppering av uppgifter eller tjänster. Kluster kan användas för att isolera applikationer. När Fargate används för att köra uppgifter, hanteras klusterresurserna automatiskt.
Uppgiftsdefinitioner
En uppgiftsdefinition är en textfil, vanligtvis i JSON-format, som beskriver en eller flera behållare som utgör en applikation. Den kan definiera upp till tio behållare samtidigt. Uppgiftsdefinitionen fungerar som en ritning för applikationen och specificerar många av dess parametrar.
Det kan t.ex. specificera operativsystemsparametrar, vilka behållare som ska användas, portar som ska öppnas för applikationen och datavolymer som behållarna i uppgiften ska använda. Tillgängliga parametrar beror på applikationens krav.
Uppgifter
En uppgift är en instans av en uppgiftsdefinition på klusternivå. När en uppgiftsdefinition har skapats i Amazon ECS kan man ange antalet uppgifter som ska köras i klustret. En uppgift kan köras som en del av en tjänst eller som en separat process.
Tjänster
I ett Amazon ECS-kluster kan en Amazon ECS-tjänst användas för att köra och underhålla ett önskat antal uppgifter samtidigt. Om någon av uppgifterna misslyckas eller slutar av någon anledning kommer Amazon ECS-tjänstschemaläggaren att starta en ny instans baserad på uppgiftsdefinitionen. Syftet är att ersätta den och behålla det önskade antalet uppgifter i tjänsten.
Operativsystem och CPU-arkitektur
De operativsystem som stöds av Fargate är Amazon Linux 2, Windows Server 2019 Full och Windows Server 2019 Core.
ARM och X86_64 är de två arkitekturerna som är tillgängliga för Amazon ECS-uppgiftsdefinitioner. Om Windows-behållare används krävs en X86_64 CPU-arkitektur. Används däremot Linux-behållare kan ARM64-arkitekturen användas för ARM-baserade applikationer, och X86_64-arkitekturen kan användas för andra typer av Linux-applikationer.
ECS med EC2-instanser vs. ECS med AWS Fargate
I EC2-instansmodellen distribueras behållare till EC2-instanserna (VM) i klustret. ECS hanterar dem i samband med de uppgifter som definieras i uppgiftsdefinitionen.
Fördelar 👍
- Användare har full kontroll över vilken typ av EC2-instans som används.
- Möjlighet att använda spot-instanser, vilket minskar kostnaderna med upp till 90%.
Nackdelar 👎
- Ansvaret för säkerhetsuppdateringar, nätverkssäkerhet och skalbarhet av instanserna ligger hos användaren.
I Fargate-modellen är det inte nödvändigt att hantera EC2-instanser eller servrar. Genom att ange CPU- och minneskonfigurationen distribuerar Fargate behållarna.
Fördelar 👍
- Inget behov av serverhantering.
- AWS ansvarar för tillgänglighet och skalbarhet, men det är fortfarande viktigt att specificera korrekt minne och CPU. Annars finns risken att applikationen blir otillgänglig.
- Genom att använda Fargate Spot kan man få upp till 70% rabatt på Fargate-priset.
Nackdelar 👎
- ECS med AWS Fargate stöder enbart nätverksläget -awsvpc-. Detta begränsar kontrollen över nätverkslagret.
EKS utan Fargate vs. EKS med Fargate
I EKS-modellen utan Fargate måste klustrets storlek bestämmas i förväg. Det är möjligt att ändra noder manuellt i efterhand, men det kan vara omständligt jämfört med att ange den ideala storleken från början.
Fördelar 👍
- Denna modell ger mer kontroll över olika parametrar, t.ex. konfigurationsvariabler som HostNetwork och HostPort.
- Fargate stöds inte i alla regioner. Om man vill att behållaren ska vara tillgänglig i fler regioner kan EKS utan Fargate vara att föredra.
Nackdelar 👎
- EKS utan Fargate kan vara lite svår att använda.
I EKS-modellen med Fargate är det inte nödvändigt att ange klustrets storlek i förväg.
Fördelar 👍
- EKS med Fargate är säkrare eftersom det körs i dedikerade virtuella maskiner. Det faktum att det inte stöder privilegierat läge är en säkerhetsförbättring.
- I längden kan det vara billigare.
Nackdelar 👎
- Ger mindre kontroll över olika parametrar.
Slutsats
Fargate är ett mycket kraftfullt och moget verktyg. Det sparar kostnader, tid och mycket arbete genom att hantera all infrastruktur åt användaren. Fargate är särskilt fördelaktigt för de som är nya inom behållarteknik och vill fokusera på att utveckla applikationen istället för att underhålla den.