Hva er egentlig «skyen» og skytjenester?
Enkelte vil kanskje si at «skyen» bare er noen andres datamaskin, og det er ikke så langt fra sannheten. Det er jo bare et annet navn på tjenester vi får leverert via internett. Tjenestene kjører på servere som er plassert i datasentre rundt omkring i verden.
Amazon med sin AWS (Amazon Web Services) er en av de største leverandørene av skytjenester. De har en rekke tjenester som kan brukes til å kjøre applikasjoner, lagre data, kjøre databaser, osv.
Microsoft sin plattform kalles Azure og de har et omtrent like omfattende tilbud av tjenester som Amazon. Google har også en skyplattform som heter Google Cloud Platform (GCP).
De forskjellige tjenestene deles gjerne inn i litt ulike kategorier. Vi starter med den som kanskje flest av dere har hørt om før: SaaS (Software as a Service). Dette er tjenester som vi bruker via nettleseren eller en app på telefonen. Eksempler på dette er Gmail, Google Docs, Dropbox, Spotify, Netflix, osv.
IaaS (Infrastructure as a Service) er på mange måter det nederste laget av tjenester som vi kan bruke til å kjøre applikasjoner på. Her kan vi leie virtuelle maskiner, lagre data, kjøre databaser, osv.
FaaS (Function as a Service) er tjenester som kjører kode for oss. Vi trenger ikke å tenke på servere eller infrastruktur, vi bare laster opp koden vår og tjenesten kjører den for oss.
PaaS (Platform as a Service) er tjenester som gir oss et rammeverk for å kjøre applikasjoner. Vi trenger ikke å tenke på infrastruktur, vi bare laster opp koden vår og tjenesten kjører den for oss.
CaaS (Container as a Service) er tjenester som kjører Docker-containere for oss. Vi trenger ikke å tenke på infrastruktur, vi bare laster opp Docker-containere og tjenesten kjører dem for oss.
Vårt eget LMS kan vi godt kalle en SaaS. Og for å kjøre dette systemet bruker vi mange ulike tjenester, primært hos AWS. Her er en liste med mye av de skytjenestene vi bruker:
IAM (Identity and Access Management) - for å definere brukere og rettigheter i AWS.
CDK (Cloud Development Kit) - for å definere infrastruktur som kode.
CodePipeline - for å automatisere bygging og levering av kode.
CodeBuild - for å bygge kode og kjøre tester.
Systems Manager - for å lagre konfigurasjon.
ECR (Elastic Container Registry) - for å lagre Docker-images som blir produsert av prosessene over her.
VPC (Virtual Private Cloud) - for å definere nettverket.
ECS (Elastic Container Service) - for å kjøre Docker-containere.
ALB (Application Load Balancer) - for å fordele trafikk mellom containere.
Route 53 - DNS (Domain Name System) for å knytte domener til tjenester.
Certificate Manager - for å håndtere SSL-sertifikater.
RDS (Relational Database Service) - for å kjøre databaser.
Cognito - for å håndtere brukere og autentisering i LMS'et.
SES (Simple Email Service) - for å sende e-post.
SQS (Simple Queue Service)- for å håndtere køer.
Lambda - for å kjøre kode uten å ha definerte/egne servere - kalles "serverless" men er ikke egentlig uten servere.
S3 (Simple Storage Service) - for å lagre filer, f.eks kursinnhold, bilder, osv.
CloudFront - CDN (Content Delivery Network) for å levere innhold til brukere over hele verden.
Amplify - for å kjøre frontend-applikasjoner.
CloudWatch - for logging og overvåking av status for tjenestene.
I tillegg bruker vi også noen andre tjenester tilknyttet LMS'et som Mux for hosting og levering av video, SendGrid for å sende e-post (for Udir), Link Mobility for SMS (RKV), for innholdsredigering bruker vi Sanity som er et "headless" CMS. For hosting av en del av portalene (frontend for LMS'et) bruker vi også Vercel. For feilrapportering bruker vi Sentry.
Skytjenester altså ikke mer mystisk enn servere som kjører ulike tjenester vi kan bruke uten å måtte drifte og passe på maskinene selv. Det kan gi noen fordeler ift driftssikkerhet og kostnad å la andre som er mer spesialiserte på akkurat de tingene gjøre den delen av jobben for oss. Det er også enklere å skalere opp og ned tjenester som kjører i skyen og dermed tilpasse seg behovet.
