Skal du starte et nyt projekt, eller måske er du ved at udvikle nogle nye funktioner? Før du går i gang, er det en god idé at finde ud af så meget som muligt om de forskellige eksterne værktøjer, der kan være nyttige for dig.
To grundlæggende og nok de mest populære AWS-tjenester er EC2 og S3. I en nøddeskal: Med EC2 kan du opsætte din projekt og vise det til verden, mens S3 bruges til at gemme data af enhver art. Men i denne artikel vil jeg gerne se på andre mere eller mindre populære AWS-værktøjer, som vi normalt bruger her hos Codest.
Cloudfront
Det er et værktøj, der er specielt skabt til meget hurtig levering af ressourcer til mange brugere. Og mange betyder ikke hundreder eller tusinder, men millioner af anmodninger om en enkelt ressource. For eksempel vil du gerne give mulighed for at placere din grafik, css, html eller javascript fil på en hvilken som helst side. Du vil også gerne have fuld indflydelse på det indhold, ressourcen giver - du har brug for at ændre noget, og du vil gerne have, at denne ændring sker på alle sider med din fil. Og her kommer AWS Cloudfront ind i billedet med alle sine muligheder for at få den endelige bruger til at modtage din ressource så hurtigt som muligt.
Cloudfront tilbyder også en række statistikker. For eksempel - sider, der er blevet anmodet mest om, enheder, der er blevet anmodet om ressourcer med, http-statusser osv.
Dette værktøj er selvfølgelig ret dyrt, men jo flere forespørgsler til cloudfront, der kommer, jo mindre betaler du for tjenesten. Derfor bør du overveje denne løsning, hvis du vil placere ressourcen på websteder med virkelig stor eller endda enorm trafik.
Batch
For at sige det enkelt er det en tjeneste, der gør det muligt at udføre et stort antal jobs direkte på AWS. Det eneste, du skal forberede, er et udførelsesscript og et docker-image, mens AWS Batch klarer resten. Batch opretter dynamisk instanser på EC2, tildeler en passende plads til jobs og starter dem på samme tid. Du behøver ikke at bekymre dig om, at din EC2-instans løber tør for plads eller hukommelse, eller at du hele tiden skal tænke på, hvornår og hvordan jobbet kan startes. Til kommunikation mellem scriptet i docker-imaget og din tjeneste kan du bare oprette API'et, og så er du i gang. Hvis du vil bruge Batch, skal du også forberede dit docker-repository i Amazon Elastic Container Registry (ECR)-tjenesten.
En anden tjeneste, som drager fordel af docker-containere, er også værd at nævne. Den hedder Elastic Container Service (ECS). Den største forskel i forhold til Batch er, at du selv skal opsætte og skalere EC2-instanser, mens Batch gør alt arbejdet for dig. Batch-omkostningerne afhænger af, hvilke EC2-instanser man har lov til at bruge, da man i dette tilfælde kun betaler for kørende instanser.
Lambda
AWS Batch gør arbejdet ved at starte docker-images, mens den næste tjeneste - AWS Lambda - giver dig mulighed for at køre scriptet direkte. Du behøver ikke at sætte nogen server op, den Kode køres virtuelt, og hvad der er endnu bedre, du kan også returnere en værdi på den måde, du ønsker.
Hvornår kan det bruges? Lad os sige, at du vil foretage nogle beregninger på vores hjemmeside baseret på parametre fra browseren, og måske kræver disse beregninger desuden nogle ekstra forespørgsler til andre steder på nettet. I dette tilfælde skal du blot oprette et endpoint i Lambda, tilføje dit script og bruge dette endpoint på websitet. Det er virkelig nemt.
Lambda-omkostningerne tælles kun med, når scriptet kører, og når slutpunktet ikke bruges, betaler du intet.
SNS
Simple Notification Service er, som navnet antyder, et værktøj, der er specielt udviklet til at sende notifikationer. Det kan nemt bruges til kommunikation mellem forskellige AWS-tjenester. Du har f.eks. en gruppe mikrotjenester, og du ønsker, at en af dem skal lede de andre - starte nogle af dem eller køre nogle handlinger. I dette særlige tilfælde kan du sende notifikationer fra hovedtjenesten og håndtere modtagelse af beskeder i en anden mikrotjeneste, som du foretrækker. I øvrigt er det også værd at nævne Amazon Simple Queue Service (SQS), som kan skabe en meget interessant forbindelse sammen med SNS.
I tilfælde af SNS (såvel som SQS) ydes der kun betaling for udførte anmodninger: afsendelse af meddelelser til SNS, afsendelse af meddelelser fra SNS til andre tjenester og andre yderligere anmodninger fra SNS API-puljen.
RDS
Amazon Relational Database Service er blot en ekstern database. Med denne tjeneste giver AWS mulighed for nem opsætning, brug og skalering af en relationsdatabase. Hvis du f.eks. forventer, at din database bliver ret stor og vokser mere og mere hver dag, og du planlægger regelmæssigt at udføre mere eller mindre komplekse operationer ved hjælp af den, f.eks. behandling og kopiering af data til en anden database, er denne løsning værd at overveje. Tilgængelige databasemotorer omfatter PostgreSQL, MySQL og MariaDB.
Det er let at gætte, at RDS-omkostningerne er relateret til databasestørrelsen og brugen af den, så det er svært at sige, om det bliver meget dyrt eller ej.
Sammenfatning
AWS er i konstant forandring, hvad enten det drejer sig om at forbedre eksisterende tjenester eller skabe noget nyt. Det er ikke kun at foretrække at holde sig opdateret med deres teknologiske innovationer, men også at lære de allerede eksisterende ting at kende.
Nyttige links