Dette er vår nye sky-infrastruktur
Etter mange år med bruk av skytjenester fra forskjellige leverandører som Amazon AWS, Microsoft Azure, Google Cloud og IBM Cloud er vi nå tilbake til utgangspunktet og bruker i all hovedsak AWS.
Det siste året har vi jobbet hardt sammen med vår samarbeidspartner Webstep med å profesjonalisere bruken av AWS innenfor flere av forretningsområdene våre.
Amazon Web Services (AWS)
Datek har brukt verdens største skytjeneste, Amazon Web Services (AWS), helt siden 2007. I løpet av den tiden har AWS stadig utvidet sitt tjenestetilbud og Datek har tatt i bruk flere og flere tjenester. Over tid har vi sett behovet for en opprydding og en ny måte å sette opp dette på, noe vi engasjerte AWS-partner Webstep til å hjelpe oss med. Denne artikkelen forteller litt om hvordan vårt nye skyoppsett ser ut og motivasjonen bak de valgene vi har gjort.
Lær mer om reisen mot vår nye sky-infrastruktur
En erfaring vi har gjort over tid er at ressurser og innstillinger i skyen fort kan bli uoversiktlige. Det ikke trivielt å ha oversikt over alt oppsett i skyen som er relevant for en gitt tjeneste. Tilsvarende, gitt en ressurs eller en innstilling i AWS, er det ikke alltid lett å se hvem som bruker denne eller om den trygt kan fjernes. I Amazon Web Services går det veldig fort å gjøre endringer rett i et web-administrasjonsgrensesnitt, og det blir raskt mange innstillinger man ikke har full oversikt over.
Dette har implikasjoner for:
- Kostnadsbesparelser (ikke trivielt å “rydde” / fjerne tjenester)
- Sikkerhet
- Kostnadsfordeling
- Sporbarhet
- Driftsstabilitet
- Gjenoppretting
- Oppsett for nye kunder
En skytjeneste deles ofte inn i hvem som skal betale for den (system/kunde) og miljø (om det er for test, QA eller produksjon). Å ha vanntette skott mellom disse aksene er en avveining mot gjenbruk av tjenester og stordriftsfordeler. Heldigvis har det dukket opp gode verktøy de siste årene som kan hjelpe oss med disse problemene.
Infrastruktur som kode
I stedet for å klikke i et web-administrasjonsgrensesnitt, lages nå alt skyoppsettet i kildekode som så lastes opp i skyen og automatisk setter opp alle tjenester.
Infrastruktur som kode gjør det lettere å:
Ha versjonskontroll (full historikk, mulighet for samlet gjennomgang av endringer med kollega, kontrollert utrulling av endringer)
Sette opp flere kopier av et oppsett raskt
Ha full oversikt over alle ressurser og innstillinger for et system, f.eks. for sikkerhetsgjennomgang og kostnadskontroll
Som verktøy for infrastruktur som kode har vi valgt AWS CloudFormation som er godt integrert med AWS. Verktøyet gjør det lett å lage gjenbrukbare maler for tjenester og gir en veldig god oversikt over ressurser for en tjeneste.
Utover CloudFormation, automatiserer vi alt oppsett som lar seg automatisere med ulike verktøy. Det skal ikke gjøres noen endringer direkte i web-grensesnitt, alt skal dersom det er mulig gjøres automatisert med versjonskontrollerte filer.
En AWS-konto per kunde/miljø
Vi har i det nye oppsettet valgt å ha mest mulig vanntette skott mellom ulike kunder / prosjekter og miljø (test/qa/produksjon) ved å opprette egne AWS-kontoer for alle vertikaler (dvs. kombinasjoner er av kunde/prosjekt og miljø). Dette gjør tilgangskontroll (rollestyrt tilgang) og kostnadsfordeling enklere samt minimerer risiko ved endringer.
“Serverless” tjenester
Vi bruker mest mulig serverless tjenester, det vil si tjenester hvor man ikke trenger å drifte en virtuell maskin (operativsystem) i skyen selv. Da slipper vi å kjøre sikkerhetsoppgraderinger på operativsystem og det er generelt mer ferdige oppsett.
Serverless tjenester vi benytter i AWS er blant annet ECS, Fargate og Lambda.
Kontinuerlig integrasjon
Å bygge kildekode gjøres best i kontrollerte omgivelser, slik at man ikke får med seg noe som kun ligger på en utviklermaskin og ikke lar seg gjenskape senere, så vi bygger all kode i skyen med verktøyene AWS CodeBuild og CodePipeline. Biblioteker bygges hos GitHub med GitHub Actions og Package Repository.
Sikkerhet i dybden
Alle tjenester skal ha flere lag av sikkerhet, det vil si krypterte forbindelser (også for interne tjenester i en vertikal), tilgangskontroll (tokens eller brukernavn/passord – også for interne tjenester), lukkede nettverk (VPC, VPC peering eller IP-adresse kontroll) og to-faktor autentisering for alle administrasjonsgrensesnitt for å nevne noe.
Infrastruktur som kode gjør det enklere å sørge for god sikkerhet i tjenestene, da man kan gjenbruke maler på oppsett fra andre tjenester med god sikkerhet og gjøre kodegjennomgang med en kollega før et oppsett settes opp i skyen.
Godt fornøyd med gjennomføring av prosjektet
«Webstep har vært en meget kompetent partner i denne prosessen og det har vært et godt samarbeid mellom Webstep og våre DevOps utviklere. Arne Solheim er en dyktig rådgiver og sørget for at vi har fått mye ut av denne prosessen», sier Christian Schwarz som var teknisk ansvarlig for gjennomføringen av prosjektet.
Datek har også gått over til en “resell” modell der WebStep er mellomledd mellom Amazon Web Services og Datek, slik at alle AWS sky-kostnader kommer på en tradisjonell faktura til Datek. Dette gjør at vi unngår bruk av kredittkort som betalingsmetode ovenfor AWS.