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.
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.
Plattformen skal støtte applikasjonsdeployment både i skyen og på maskiner i
vårt eget datasenter.
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.
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.
"Alt i git" gjelder selvsagt også kode, oppsett og dokumentasjon som implementer
selve plattformen Organa.
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.
* 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
Her er noen generelle krav som vi mener at Organa må oppfylle (fra MVP):
* 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)
[Serverless](https://martinfowler.com/articles/serverless.html) er også
moderene og populært. Vi bør vurdere hvordan det kan integreres i plattformen.