Skip to content
Snippets Groups Projects
organa.md 4.59 KiB
Newer Older
# Organa — UiBs DevOps-plattform for applikasjoner

_Organa_ er tenkt som en plattform for å kunne produksjonsette, drifte, teste og
utvikle applikasjoner på en god og moderne måte.

Gisle Aas's avatar
Gisle Aas committed
Plattformen skal bestå av tjenester, rutiner, konvensjoner, dokumentasjon og
praksiser som støtter arbeidet til team som forvalter en
applikasjonsportefølje.

Plattformen er etablert ut fra behovene vi opplevde i Seksjon for
Gisle Aas's avatar
Gisle Aas committed
Applikasjoner ved UiBs IT-avdeling, og er delvis preget av praksiser og
verktøy som er blitt innarbeidet hos oss. Plattformen vil ikke være begrenset
til seksjonens portefølje når den blir operativ.

Gisle Aas's avatar
Gisle Aas committed
Plattformen skal støtte applikasjonsdeployment både i skyen og på maskiner i
vårt eget datasenter.

## Applikasjon

Gisle Aas's avatar
Gisle Aas committed
Hva mener vi med _applikasjon_ i Organa?
Gisle Aas's avatar
Gisle Aas committed
Dette er et begrep som dekker mange ting; eksempler kan være web-applikasjoner,
mikrotjenester og integrasjonskomponenter.  For web-tjenester så er det ofte
Gisle Aas's avatar
Gisle Aas committed
domenenavnet som definerer applikasjonen. I andre tilfeller er det tjenesten
som er enheten som omfattes.
Gisle Aas's avatar
Gisle Aas committed

Gisle Aas's avatar
Gisle Aas committed
En applikasjon er gitt et navn og realiseres av kode som implementerer et
avgrenset system. Koden til en applikasjon ligger i sitt eget git-repo. En
applikasjon tilbyr en tjeneste og kan bygge på andre underliggende tjenester
(f.eks.  databaser eller spesialiserte mikrotjenester av ulike slag).  Den
enkleste applikasjon man kan tenke seg er et statisk nettsted.
Gisle Aas's avatar
Gisle Aas committed

Applikasjoner kan instansieres.  Vi bruker det blandt annet til å kjøre
separate test- og staging-instanser av applikasjonen.
Gisle Aas's avatar
Gisle Aas committed
Git er versjonskontrollsystemet som vi har valgt å bruke.  Vi bruker allerede
Gisle Aas's avatar
Gisle Aas committed
git til applikasjonskoden vår og delvis til konfigurasjon.  Vi har bygd opp
Gisle Aas's avatar
Gisle Aas committed
noen arbeidsflyter basert på [UiBs GitLab
installasjon](https://git.app.uib.no).  Den tjenesten er også tilgjengelig for
brukere utenfor UiB. Vi regner med at dette blir en sentral komponent i Organa.
Gisle Aas's avatar
Gisle Aas committed

Organa bør prøve å komme så nær opp til filosofien til
[git-ops](https://www.gitops.tech) som mulig.  Kilden til alt vi gjør skal være
å finne i git, og endringer og deployment skjer ved push til git.
Gisle Aas's avatar
Gisle Aas committed
"Alt i git" gjelder selvsagt også kode, oppsett og dokumentasjon som implementer
selve plattformen Organa.
Gisle Aas's avatar
Gisle Aas committed
Det er ofte klargjørende å jobbe mot et første minste brukbare produkt
([MVP](https://no.wikipedia.org/wiki/Minste_brukbare_produkt)). Hva er det
miste funksjonaliteten som må på plass før vi kan slippe brukerene løs og
Gisle Aas's avatar
Gisle Aas committed
begynne å motta feedback?
Brukere her er utviklere og applikasjonsforvaltere.

Dette bør være en tidlig milepæl i prosjektet å få
Gisle Aas's avatar
Gisle Aas committed
produksjonsatt MVPen av plattformen.  Etter det jobber vi videre med å utvide
funksjonaliteten og brukbarheten i produktet/plattformen.
Gisle Aas's avatar
Gisle Aas committed
Her er et forslag til funksjonalitet i Organa-MVP:
Gisle Aas's avatar
Gisle Aas committed
* Organa må kunne deploye en enkel PHP-applikasjon som bruker Postgres direkte
  fra GitLab
Gisle Aas's avatar
Gisle Aas committed
* Organa må kunne beskrive deployment både i AWS og i eget datasenter
Gisle Aas's avatar
Gisle Aas committed
* Organa må kunne skille på staging og produksjon
* Organa må kunne kjøre unit-tester definert i applikasjonen
* Organa må sette opp DNS-navn og SSL-sertifikat
* Organa må inneholde dokumentasjon for hva som forventes av en utvikler for at
  koden skal være "deployable".
* Organa må inneholde dokumentasjon på hvordan man enkelt deployer i AWS.
* Organa må kunne vises status på instansene som kjører.
* Organa må samle opp loggene og gi tall på bruk av applikasjonen og hvordan
  den oppfører seg.

Dette ble jo allerde en hel del funksjonalitet. Det er kanskje noe i kan strykes
fra listen?

## Krav til plattformen
Gisle Aas's avatar
Gisle Aas committed
Her er noen generelle (men enda nokså vage) kvalitetskrav som vi mener at
Organa må oppfylle allerede fra MVP:
Gisle Aas's avatar
Gisle Aas committed
* Det skal være enkelt å produksjonsette en enkel applikasjon
Gisle Aas's avatar
Gisle Aas committed
* Nye utviklere skal lett komme i gang
* Et team må kunne få god oversikt over sine egne kjørende applikasjoner

## Kubernetes og kontainere

Kontainere og Kubernetes er mye brukt i denne type plattformer (se f.eks.
Gisle Aas's avatar
Gisle Aas committed
[nais.io](https://nais.io)).  Det finnes mange ferdigbygde applikasjoner som er
tilgjengelige som kontainer-images. Det vil være praktisk om Organa etterhvert
før støtte til å kjøre disse.

Gisle Aas's avatar
Gisle Aas committed
Det er ingenting i MVPen beskrevet over som krever at man pakker applikasjonen
Gisle Aas's avatar
Gisle Aas committed
i kontainere og f.eks. bruker Kubernetes som run-time miljø.  Siden et mål er
å  kunne kjøre applikasjoner både on-prem og i skyen så kan Kubernetes være en
høvelig abstraksjon å jobbe ut fra. Dette må prosjektet ta stilling til.
Gisle Aas's avatar
Gisle Aas committed


## FaaS (f.eks. AWS Lambda)
Gisle Aas's avatar
Gisle Aas committed
[Serverless](https://martinfowler.com/articles/serverless.html) er også
moderene og populært.  Vi bør vurdere hvordan det kan integreres i plattformen.
Gisle Aas's avatar
Gisle Aas committed