Utviklingsprosess

Vi har brukt Nettskjema som eksempel i arbeidet med å etablere beste praksis for utviklingsprosess i webseksjonen og ved hele USIT. Her er en oppsummering av prosessen.

USIT har etablert en sjekkliste for gjennomføring av utviklingsaktiviteter, som skal sikre tjenestekvalitet, brukeropplevelse og sikkerhet i våre applikasjoner. Målet er å støtte opp under en utviklingsprosess som ivaretar beste praksis ved USIT.

Sjekklisten skal ligge til grunn for all utvikling av nye applikasjoner og videreutvikling av funksjonalitet i eksisterende applikasjoner.

Nettskjema har vært test-case i arbeidet med å etablere beste praksis og i innføringen av DevOps-samarbeide. Under følger en oppsummering av utviklingsprosess for Nettskjema per mars 2017.

Utviklingsmetodikk

Gruppe for utvikling og forvaltning av webapplikasjoner (WAPP) jobber etter prisippene for smidig utvikling, der grunnprinsippene er hentet fra The Agile Manifesto.

Vi bruker utviklingsmetodikken Scrumban, som er en kombinasjon av Kanban og Scrum.

Alle prioriterte ønsker og behov for utvikling spesifiseres som brukerhistorier (stories) eller saker (issues) i systemet JIRA.

Et av hovedmålene er kort vei (tid) fra behov for ny funksjonalitet (eller behov for endring/retting) til produksjonssetting. For å klare dette og ha kontroll på risiko og sårbarhet utvikler vi applikasjonen og tilhørende støttesystemer i små inkrementelle steg, og har fokus på kontinuerlig kvalitetsforbedring i utviklingsstøttesystemene.

Med mindre endringer fra forrige versjon er det mindre som kan gå feil. Mer isolerte endringer påvirker vanligvis mindre del av applikasjonen. Dette gjør det enklere å oppdage feil og enklere å fikse eller rulle tilbake feil.

Kortere tid mellom utvikling/kodeskriving og prodsetting gjør at det er mindre sjanse for at miljøendringer rundt systemet gir feil. Utvikleren er inne i problemstillingen (i kontekst) og kan raskere/enklere oppdage og rette opp eventuelle feil. Utvikleren er ikke ferdig før utviklet funksjonalitet er i produksjon og virker som planlagt.

Kodekontroll

Vi praktiserer streng kodekontroll. For all ny funksjonalitet skal det opprettes en egen kodegren (feature branch) i versjonskontrollsystemet Bitbucket (GIT).

Tilordning av oppgaver til de enkelte utviklerne og status for arbeidsflyten registreres i JIRA.

All kode som skal flettes inn må gjennom kodereview i form av en «pull request», der andre utviklere må lese gjennom og godkjenne endringene. 

CI-server, testing og automatisering

Vi bruker Jenkins som CI-server med automatisert bygging og integrasjonstesting. Målet vårt er å utføre mest mulig testing automatisk.

Vi bruker pipeline i jenkins til automatisering. 

Kodekontrollen i Jira og Bitbucket er integrert med pipeline i Jenkins.

Utviklingsprosess der endringer i en featurebranch setter i gang automatisk bygging og testing i en jenkins pipeline.

Vi jobber med å integrere så mye automatisert testing som ønskelig så tidlig i prosessen som mulig, dvs ved endringer i en feature-branch.

Overvåking med Zabbix

Alle tjenester i produksjon skal overvåkes med Zabbix

Vi har utviklet et mikrobibliotek for helsesjekk av webapplikasjoner, og automatisk indeksering av logger fra helsesjekken til Zabbix.

For viktige tjenester har vi satt opp varsling av alarmer via e-post og chat, og eskalering av varsel via sms.

Feedback og telling med statsd, Graphite og Grafana

I DevOps-filosofien er feedback the second way, og en av grunnpilarene. Vi teller og måler interessante sider av applikasjonene med statsd, lagrer data i Graphite og har laget ymse dashboards for å vise tall og tidsserier i Grafana

Dette kan hjelpe oss til å se uregelmessigheter i drift (f.eks. tidsbruk i ulike komponenter):

 Det gir oss også muligheter til å undersøke bruk av og prioritere funksjonalitet i applikasjonene. Figuren under viser f.eks. antall visninger og klikk for ulike deler av applikasjonen for-ansatte i perioden jan-april 2017:

Logging og ELK

Elasticsearch, Logstash og Kibana (ELK-stakken) gir oss kraftigere muligheter til å sammenstille, søke i, navigere og visualisere logger for å finne og fikse feil i applikasjonene.

Av Are Gulbrandsen
Publisert 10. mars 2017 14:50 - Sist endret 12. sep. 2017 22:48