Bokbasens CI/CD-pipeline – casestudie

Bokbasen leverer et bredt spekter av tjenester til alle deler av Litteratur-Norge.

Selskapet utvikler og vedlikeholder Den norske Bokdatabasen, som er den mest oppdaterte katalogen over alle bokutgivelser i Norge.  Med dette sentrale registeret kan bransjen enkelt benytte seg av dataene – i nettbutikker, bokhandler, biblioteker og skoler – i stedet for å måtte bruke tid på å innhente dem, slik man må i mange andre land.

Da e-bøker inntok markedet, var Bokbasen tidlig ute med å bygge opp den nødvendige infrastrukturen, blant annet en strømmetjeneste for lydbøker. AWS-partner Orange Business har siden 2012 driftet og administrert denne virksomheten for Bokbasen i en privat skyløsning.

I 2017 begynte Bokbasen å bruke AWS til å lagre og omkode lydfiler.

I 2018 migrerte Bokbasen sitt offentlige nettsted til AWS.

I 2019 startet Bokbasen opp et nytt prosjekt: digitalisering av bøker og læremidler. De begynte med Digitalelev, et produkt for administrasjon og innkjøp av digitale læremidler i skolen, og Allvit, en plattform for distribusjon av lærebøker og ressurser for høyere utdanning.

Utfordringen

En viktig utfordring var å levere disse nye produktene når IT-avdelingen bare består av fem ansatte. Løsningen ble fleksible administrerte tjenester fra AWS kombinert med erfarne fageksperter fra Orange Business.

Bokbasen valgte å bruke en containerbasert arkitektur for mikrotjenester. Hensikten var å gjøre det enklere og smidigere å utvide de nye tjenestene med ny funksjonalitet, samtidig som man ville legge til rette for uavhengig skalering av komponenttjenestene. Orange Business samarbeidet med Bokbasen om å distribuere og administrere DevOps-pipelines, som sømløst automatiserer prosessen knyttet til oppdateringer og ny funksjonalitet.

DevOps

DevOps representerer et kulturskifte som samler utvikling og drift i ett team.  I stedet for at hver programvareversjon inneholder mange potensielt problematiske endringer som slippes samtidig, oppfordres teamene til å slippe små endringer oftere. Dermed blir endringen mindre merkbar samt enklere å teste og implementere.

Orange Business hjelper kundene med DevOps-virksomheten og store teknologiske endringer.

Kunden valgte en distribusjonsstrategi som omfattet å

  • bygge én artefakt (artifact) for alle miljøer
  • slippe nye versjoner tidlig og ofte
  • bruke rullende distribusjon for å erstatte eller oppgradere tjenester gradvis
  • alltid reparere feil ved å rulle fremover til neste versjon

Det var viktig for Bokbasen at deres eget DevOps-team hadde mulighet til konsistent distribusjon i alle miljøer, inkludert produksjon.

Løsning

Infrastruktur som kode

Ved hjelp av Infrastructure as Code-teknologi (IaC) kan Orange Business og Bokbasen automatisere utbyggingen av infrastruktur, applikasjonstjenester og CI/CD-pipelines i alle miljøer.

HashiCorp Terraform brukes til å distribuere Bokbasens infrastruktur. Selvbetjente Terraform-maler brukes til rask og enkel oppretting av nye pipelines.

Mange gode IaC-moduler fra Hashicorp Terraform-registeret og fra Orange Business har forenklet overgangen. Bruk av IaC sikrer en konsistent og repeterbar metode for distribusjon og administrasjon av infrastruktur på tvers av miljøer.

Spring Cloud Config og AWS Systems Manager Parameter Store brukes til å lagre konfigurasjonen og sørge for at hemmeligheter, for eksempel sikkerhetsinformasjon, er kryptert og revidert.

Distribusjonspipelines

Orange Business Professional Services har samarbeidet med Bokbasen om å utvikle pipelines for å bygge applikasjonsartefakter og distribuere mikrotjenester over Bokbasens test-, preproduksjons- og produksjonskontoer, og integrere med følgende sentrale AWS-tjenester:

  • Lambda
  • Fargate
  • Batch
  • API Gateway
  • statiske nettsteder på S3 (ved hjelp av CloudFront CDN)

Når et medlem av DevOps-teamet igangsetter en bestemt gren, utløses pipelinen som bygger artefakter (artifacts), for eksempel Docker-bilder som inngår i tjenesten, og sender disse bildene til containerregisteret.  Pipelinen distribuerer deretter containeren til testmiljøet. En pretest med RunScope startes, og resultatene av testen kontrolleres manuelt av DevOps-teamet før de godkjenner distribusjon til preproduksjonsmiljøet. Der gjennomføres samme pretest samt ytterligere kontroller før distribusjon til produksjonsmiljøet godkjennes. DevOps har bare lesetilgang til preproduksjons- og produksjonsmiljøer. Pipelines har rettigheter til distribusjon på tvers av kontoer avhengig av IAM-roller.

Databaseskjemaer endres også som en del av deployment av pipelines med bruk av Flyway.

Lignende pipelines opprettes for CI/CD av batch jobs, Lambda-funksjoner og S3-driftede nettsteder.

CI/CD: Fargate-hostede containere

CI/CD: Lambda-funksjoner

CI/CD: Batch-jobber

CI/CD: Statiske nettsteder

Produkter som brukes i DevOps-verktøykjeden:

Implementering

  • HashiCorp Terraform
  • AWS CodePipeline
  • AWS CodeBuild
  • AWS CodeDeploy
  • AWS ECR
  • Flyway

Konfigurasjon

  • AWS Systems Manager Parameter Store
  • Spring Cloud Config

Overvåking

  • Datadog
  • io
  • AWS CloudWatch
  • AWS CloudTrail

Testing

  • RunScope

Versjonskontroll

  • AWS Systems Manager Parameter Store
  • Spring Cloud Config

Varsling og samarbeid

  • Slack

Fordeler

Løsningen muliggjør selvbetjening av CI/CD-pipelines der kundens DevOps-team har fullstendig kontroll over IaC-definerte pipelines uten direkte tilgang til preproduksjons- og produksjonsmiljøer.

Designen støtter et skille mellom kontinuerlige forbedringer (continuous improvements) av mikrotjenester og administrasjon av tjenester og hemmeligheter i produksjon. Krypterte hemmeligheter holdes innenfor området og IAM-en for hver konto.

Orange Business-virksomheten og Bokbasen DevOps drøfter hele tiden forbedringer av tjenester og arkitektur gjennom hyppig dialog om slack og planlagte møter.

Løsningen gir Bokbasen mulighet til å integrere ny funksjonalitet raskere gjennom kontinuerlige distribusjoner, med større grad av pålitelighet. Samarbeidet med Orange Business har gitt Bokbasen et solid grunnlag for å iverksette ytterligere migrering mot AWS.

Den grunnleggende delen av prosjektet er nå realisert, men de neste årene vil det komme noen “veldig kule” funksjoner. Plattformen kjører allerede døgnet rundt og kan forsyne alle systemer med informasjon. Det neste konkrete trinnet er å rulle ut den nye passasjerinformasjonsplattformen.