# Cloud

## Hvad det er

At leje computere, man aldrig får at se, er den korteste ærlige beskrivelse af
cloud, i fuld længde cloud computing og i daglig tale ofte bare »skyen«: en
udbyder ejer bygningerne, strømmen og hardwaren, og kunden tænder og slukker for
servere, lager og netværk via en webkonsol eller et API og betaler for det, der
blev brugt. Maskinerne står stadig i et datacenter; en anden har bare købt dem
og lejer skiver ud til mange kunder på én gang.

En præcis definition kommer fra det amerikanske standardiseringsinstitut NIST,
National Institute of Standards and Technology. Special Publication 800-145,
skrevet af Peter Mell og Timothy Grance og udgivet i september 2011, beskriver
cloud computing som en model for netværksadgang efter behov til en fælles pulje
af konfigurerbare it-ressourcer, der kan stilles til rådighed og frigives igen
med minimal administrativ indsats. Definitionen nævner fem kendetegn.
Selvbetjening efter behov betyder en ny server uden at tale med nogen. Bred
netværksadgang betyder, at tjenesten nås over nettet fra almindelige enheder.
Ressourcepuljer betyder, at kunderne deler udbyderens hardware og typisk vælger
et land eller et datacenter, aldrig et bestemt rack. Hurtig elasticitet betyder,
at kapaciteten vokser og skrumper med behovet. Målt forbrug betyder, at brugen
bliver målt, og det er det, der overhovedet gør en regning pr. time eller pr.
gigabyte mulig.

En dedikeret server, der lejes et år ad gangen, ændres via en supportsag og
faktureres til fast pris, består kun få af de prøver. Det er hosting, ofte et
godt valg, men en anden kontrakt med en anden økonomi.

Samme dokument deler cloud-tjenester i tre modeller. Med infrastructure as a
service (IaaS) lejer kunden virtuelle maskiner, diske og netværk og opdaterer
selv styresystemet. Med platform as a service (PaaS) lægger kunden sin kode på
udbyderens afviklingsmiljø. Med software as a service (SaaS) bruger kunden et
færdigt program, for eksempel webmail. Dertil kommer fire udrulningsmodeller:
offentlig cloud, som alle kan leje; privat cloud til én organisation, eventuelt
i dens egne lokaler; fællesskabscloud, som deles af organisationer med fælles
behov; og hybrid cloud, hvor to eller flere af dem er bundet sammen, så data og
programmer kan flytte imellem dem. De mest kendte offentlige clouds er store
platforme som AWS, Azure og Google Cloud, og ved siden af dem sælger mindre
udbydere almindelige virtuelle maskiner til enklere priser.

## Hvorfor det betyder noget

Cloud gør et indkøb til en løbende udgift, og det er det meste af beslutningen
sagt i én linje. At købe servere betyder at betale på forhånd for kapacitet
dimensioneret efter et gæt om næste års travleste dag. At leje betyder at betale
hver måned for det, der er tændt, med ret til at ændre svaret i næste uge. For
et nyt produkt eller en sæsonpræget forretning er den fleksibilitet en merpris
værd. For et system, der har kørt i samme størrelse i tre år, bliver merprisen
ved med at blive opkrævet, længe efter at nogen har haft brug for
fleksibiliteten.

Den anden beslutning er, hvor højt op i stakken man lejer. En virtuel maskine
ligner en server, teamet allerede kender, og den kan flyttes mellem udbydere med
lidt mere end en kopi af disken. En administreret database, en
serverless-funktion eller et proprietært datavarehus tager arbejde fra teamet,
og hver af dem er samtidig et stykke af applikationen skrevet mod ét firmas
grænseflade. Den sunde vane er at vide, hvad det ville koste at forlade hver
administreret tjeneste, og at acceptere den pris bevidst i stedet for at opdage
den ved en prisstigning.

Den tredje er ansvar. Når man lejer hardware, overdrager man bygningen, strømmen
og hypervisoren; hvem der kan logge ind, hvilke porte der står åbne, og om data
har en kopi et andet sted, bliver hos kunden. De store udbydere udgiver hver
især en model for delt ansvar, der trækker den grænse, og konti, konfiguration
og data ligger på kundens side i dem alle.

## Sådan ser det ud i praksis

For en international kunde handlede det om regningen.
[Deres AWS-setup var overdimensioneret og havde samlet tjenester, de ikke længere brugte](/da/portfolio/optimized-budget-costs-10-times-with-zero-loss-56/),
så den månedlige udgift var drevet langt ud af proportion med forretningen.
Arbejdet begyndte med en gennemgang af, hvad der faktisk kørte, skar de
duplikerede og unødvendige tjenester væk og tilpassede resten til den reelle
efterspørgsel i stedet for gæt på det værste tilfælde. Derefter blev systemerne
flyttet væk fra AWS til mere omkostningseffektiv hosting, i etaper, så
forretningen kørte videre under flytningen. Udgifterne faldt omkring ti gange
uden tab af produktivitet.

Virksomhedens egen produktionsvært ligger i den modsatte ende af skalaen.
[Det er en cloud-instans med én kerne, 512 MB hukommelse og 10 GB disk](/da/portfolio/ran-the-whole-company-on-one-512mb-host-109/),
hvoraf omkring 464 MB er brugbare, og den leverer TLS for syv domæner, en
git-forge, en Tor-onion-tjeneste, Gemini- og Gopher-servere, krypterede backups
og blokering af indtrængen. Da det blev spørgsmålet, om instansen kunne bære
onion-tjenesten, var svaret en dags målinger og ikke en større instans: der var
hele dagen mindst omkring 310 MB af de 464 til rådighed, swap brugte 2,6
procent, og processoren var 99,7 procent ledig.
Maskinen koster mindre om måneden end en frokost, og mail holdes bevidst væk fra
den, fordi en mailserver kræver luft, som denne maskine allerede har brugt.

At leje betyder også at stole på udbyderens kopi, indtil noget efterprøvet
afløser tilliden. Alt, hvad virksomheden har, lå på én cloud-instans, og
[dens udbyder-snapshot var hele gendannelsespositionen](/da/portfolio/built-encrypted-backups-with-a-monthly-restore-drill-114/):
i samme konto som maskinen, krypteret af ingen her og aldrig brugt til en
gendannelse. Nu sender en systemd-timer et krypteret, dedupliceret
restic-snapshot til lager hos en anden udbyder over SFTP, beskærer det og
tjekker dets integritet, og en dead man's switch pinges kun ved succes. Én gang
om måneden henter en øvelse en kendt fil tilbage og sammenligner den, så det,
der testes, er en gendannelse.

## Hvor det går galt

Clouds svigter sjældnere end vanerne omkring dem, og de almindelige problemer er
langsomme, stille og dyre.

**Regningen vokser, mens produktet har samme størrelse.** Ressourcer hober sig
op: en testserver, der kører videre efter testen, en disk, der faktureres efter
at dens maskine er slettet, snapshots, der gemmes for evigt. At flytte data ud
af en udbyder eller mellem dens regioner måles også, så logs og backups, der
sendes over de grænser, koster ved hver kopi. Mærk hver ressource med en ejer og
et formål, opsæt en budgetalarm, og læs regningen linje for linje én gang om
måneden.

**Kapaciteten dimensioneres til en dag, der aldrig kommer.** Maskinstørrelser
vælges én gang, ved opstarten, ud fra et gæt om det værste tilfælde, og gættet
overlever dem, der lavede det. Mål, hvad et system bruger i en normal uge og i
en travl uge, dimensionér efter det med en margin, og lad autoskaleringen
skrumpe lige så villigt, som den vokser.

**Udbyderens snapshot behandles som backuppen.** Det ligger i samme konto, bag
de samme loginoplysninger og hos det samme firma som maskinen, det beskytter, så
et stjålet login eller en suspenderet konto tager serveren og dens eneste kopi
på én gang. En rigtig backup ligger under andre loginoplysninger, helst hos en
anden udbyder, krypteret med en nøgle, som den udbyder aldrig har haft, og den
gendannes efter en fast plan.

**Sikkerheden bliver, hvor standardindstillingerne efterlod den.** De typiske
åbninger er en firewallregel, der lukker SSH ind fra hele internettet, en
langtlevende adgangsnøgle i en udviklers dotfiles, en administratorkonto brugt
til hverdagsarbejde og en lagerbucket gjort offentlig til en enkelt demo. Giv
den mindste adgang, der løser opgaven, foretræk kortlivede loginoplysninger,
kræv en ekstra faktor ved hvert menneskeligt login, og hold konfigurationen i
kode, så en ændring af den bliver gennemgået.

**At flytte væk viser sig at kræve en omskrivning.** Hver proprietær kø,
funktionsplatform og databasedialekt binder koden lidt fastere til én udbyder.
Hold kernen på åbne grænseflader, hvor det er billigt, for eksempel PostgreSQL,
containere og almindelige virtuelle maskiner, og skriv udgangsprisen for hver
proprietær tjeneste ned, når den tages i brug.

## Læs mere

- [The NIST Definition of Cloud Computing](https://csrc.nist.gov/pubs/sp/800/145/final)
  — den korte definition med de fem kendetegn, tre servicemodeller og fire
  udrulningsmodeller.
- [Guidelines on Security and Privacy in Public Cloud Computing](https://csrc.nist.gov/pubs/sp/800/144/final)
  — hvad en organisation bør overveje, før data, programmer og infrastruktur
  flyttes til en offentlig udbyder.
- [NIST Cloud Computing Reference Architecture](https://www.nist.gov/publications/nist-cloud-computing-reference-architecture)
  — den arkitektur og taksonomi, NIST byggede oven på definitionen, med de
  parter, der indgår i et cloud-arrangement.
- [FinOps Framework](https://www.finops.org/framework/) — FinOps Foundations
  model for at gøre cloud-udgifter til en fælles praksis for udvikling og
  økonomi.

<https://engineer.company/da/glossary/cloud/>
