Skip to content
Snippets Groups Projects
organa.md 4.18 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
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
domenenavnet som definerer applikasjonen.

En applikasjon består 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. database).  Den enkleste
applikasjon man kan tenke seg er en statisk nettsted (web site).

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 revisjonskontrollsystemet som vi har valgt å bruke.  Vi bruker allerede
git til applikasjonskoden vår og delvis til konfigurasjon.  Vi har bygd opp
arbeidsflyter basert på [UiBs GitLab installasjon](https://git.app.uib.no).
Den tjenesten er også tilgjengelig for brukere utenfor UiB.

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
begynne å motta feedback? Dette bør være en tidlig milepæl i prosjektet å få
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
* Organa må kunne beskrive deployment både i AWS og on-prem
* 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 krav som vi mener at Organa må oppfylle (fra MVP):
Gisle Aas's avatar
Gisle Aas committed
* Det skal være trivielt å produksjonsette en enkel applikasjon
* 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.
[nais.io](https://nais.io)).  Etterhvert bør vi nok bygge inn støtte for dette.
Det er ingenting i MVPen beskrevet over som krever at man pakker applikasjonen
i kontainere og f.eks. bruker Kubernetes som run-time miljø.

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.

## 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.