DevOps i NRK

https://www.brkn.io/devops-i-nrk/

Sogeti, 25. Januar 2018

Benedicte

  • DevOps-ingeniør
  • DevOps-ingeniør Linux- og webdrifter
  • DevOps-entusiast!
  • NRK.no-artikler - skriveverktøy, lagring og uttegning
  • Typiske oppgaver
    • Drift og overvåking av webapper
    • Drift av Linux-maskiner
    • Drift og oppsett av database-clustere

Verktøy

  • Java, Tomcat, Varnish
  • Docker
  • Puppet, Saltstack
  • Jenkins, Ansible, (Fabric)
  • F5 BIGIP
  • Grafana (Graphite, collectd, statsd)
  • Elasticsearch, PostgreSQL, MySQL
  • ELK, Nagios

DevOps

Hvordan tenke på DevOps

  • Konsepter for å bidra til bedre samarbeid mellom fagfelt
  • Fordeler
    • Business agility (quicker time to market)
    • Mer stabile tjenester
    • Får gjort mer med mindre ressurser
  • Ikke et konkret sett av verktøy
  • Implementasjonen må passe organisasjonen

DesDevTesSecOps

design, utvikling, testing, sikkerhet, drift

CAMS

  • Culture - vil ikke ha bestillinger i ticketsystem og overleveringsdokumentasjon til den som sitter ved siden av deg
  • Automation - mest synlig, ting går raskere, mindre rom for feil
  • Measurement - hvordan vite at noe er forbedret?
  • Sharing - fjerne dobbeltarbeid

DevOps som rolle

Utvikler: «Nå pusher jeg til prod også går jeg for dagen»

Høyere krav til utviklere for å følge opp endringer

DevOps i NRK

Utfordringer

  • Stor organisasjon - mange utviklingsmiljø
  • Drift organisatorisk plassert annet sted enn utviklerne
  • Teknisk gjeld
  • Ting funker jo, hvorfor endre dem?

Tiltak

Tiltak 1

Opprettet egen faggruppe for DevOps som har jevnlige møter

Tiltak 2

Ansatt dedikerte personer til å jobbe med DevOps i forskjellige team

Tiltak 3

Satt opp PaaS-løsninger hvor utviklere selv kan deploye applikasjoner (Mesos og Kubernetes)

Tiltak 4

Automatisk patching

  • Unattended upgrades og yum-cron
  • Salt-runner for HA-systemer

Tiltak 5

Automatisk deployment

  • Jenkins (Jenkins pipeline)
  • Ansible (Salt-runner)
  • Integrasjon med chat

Tiltak 6

Vi fokuserer på å måle alt som kan måles

Tiltak 7

Vi tester, og helst automatisk!

  • Unit-testing
  • Smoketester
  • Ende-til-ende-tester
  • Funksjonelle tester
  • Test-endepunkt

Resultater

Gammel deployment-rutine

Ny deployment-rutine

Ansible

Dashboard

Artikkeluttegning

PostgreSQL-cluster

Kubernetes

Deployment

Chat-deployment

Godkjenn deployment-kode

          
            steps {
              slackSend channel: 'nrkno-expono',
                message: "${GIT_SHORT_COMMIT} kan deployes til prod! ${env.BUILD_URL}input/"
              script {
                timeout(time: 60, unit: 'MINUTES') {
                approvalMap = input message: 'Confirm production deploy',
                  parameters: [
                    choice(name: 'DEPLOY_TO_PRODUCTION',
                    choices: 'no\nyes',
                    description: 'Deploy this build to production?')
                  ],
                  submitterParameter: 'APPROVER'
              }
            }
          
        

Kontakt

We are hiring!