SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Hjelp, vi må prodsette!

                                      Jørgen Wahlberg
                                         utviklingsleder,
                               A-pressen Digitale Medier




tirsdag 20. april 2010
A-pressen Digitale Medier

         • 65 nettaviser
                     bl.a. RB.no, BA.no, Nordlys.no, AN.no
                     selve nettavisene, fotball-live, skattelistene, rubrikkannonser, etc.
         • Norges femte største nettaktør
                     ca. 350 000 unike brukere pr dag
                     ca. 1,2 millioner lesere i uken
         • Zett.no, Derdubor.no, Mediehuset Digital,
           Nettsamfunnet Origo
         • A-pressen eier også
                     halve Nettavisen
                     halve TV2




tirsdag 20. april 2010
Om oss

         •    Ca. 15 utviklere
         •    Ca. 60 linux-servere
         •    Drift satt ut til Linpro
         •    Stort sett Java
         •    Noe PHP
         •    Varnish
         •    MySQL
         •    PostgreSQL
         •    Escenic
         •    FAST ESP


tirsdag 20. april 2010
Produksjonssetting

         • Endring medfører risiko for at noe går galt
         • Endring er nødvendig og det vi går på jobb for
         • Endring er like viktig som stabilitet

         • Må balanseres mot hverandre




tirsdag 20. april 2010
Hva har vi gjort for å redusere
          risikoen for feil ved utrullinger?
         •    Automatisering
         •    Kommunikasjon
         •    Utviklingsfilosofi
         •    Samarbeid utvikling/drift




tirsdag 20. april 2010
Munin og Nagios

         • Nagios viser status på
           systemene
                     og varsler når noe er galt


         • Munin grafer utvikling
           for forskjellige
           parametre over tid
                     slik at vi kan se om endringer
                     førte til uventet oppførsel




tirsdag 20. april 2010
Dedikerte driftere

         • Drift av tjenestene håndteres av Redpill Linpro
         • En person jobber fast med vår rigg
         • Slipper å forholde oss til nye ansikter for hver
           henvendelse




tirsdag 20. april 2010
Tett kommunikasjon mellom drift og
          utvikling
         •    Ticketsystem
         •    Mail
         •    Møter
         •    Videokonferanse
         •    IRC




tirsdag 20. april 2010
Ikke bare menneskene
          kommuniserer på IRC
         • På kanalen er det en
           bruker som heter “bot”
         • Bot er et program, ikke
           et menneske
         • Bot forteller hva som
           skjer med serverne:
                     oppdateringer
                     feilmeldinger




                                     http://www.flickr.com/photos/frogdna/3605073173/




tirsdag 20. april 2010
Versjonskontroll

         • Vi bruker Subversion som versjonskontrollsystem
         • For kildekode og konfigurasjon
         • Brukes av både utvikling og drift

         • Alle vet hvor de skal se




tirsdag 20. april 2010
Gjøre utviklings- og
          produksjonsmiljøer like
         • Jetty som                 http://www.flickr.com/photos/8364507@N06/4048424056/



           applikasjonsserver
         • Byttet fra Oracle til
           MySQL
         • Samme oppsett
           (porter, prefiks, osv.)
         • Feil i produksjon kan
           stort sett
           reproduseres lokalt i
           utviklingsmiljøet


tirsdag 20. april 2010
Kontinuerlig bygging

         • Enhetstester
         • Integrasjonstester
         • Cruise Control
         • Reduserer risikoen for
           at endringer fører til at
           noe brekker
         • Muliggjør refaktorering




tirsdag 20. april 2010
ADAM-A




tirsdag 20. april 2010
Keep it simple

         • Enkle tjenester
         • Spesialiserte
         • Heller flere enkle enn
           færre kompliserte
           tjenester
         • Kommunikasjon
           mellom tjenestene
           med HTTP
                     Enkelt å feilsøke
                     Enkelt å cache
                                         http://www.flickr.com/photos/baileyfamily/2039427760/




tirsdag 20. april 2010
Keep it simple (forts.)

         • Koden vår er bygget på ryggen av hundrevis av
           biblioteker
                     eksempler: spring, hibernate, lucene, xstream, jawr, saxon, jquery
                     alle unntatt ett er åpen kildekode
         • Så få avhengigheter som mulig
         • Hold egne og eksterne biblioteker oppdatert
         • Bruke biblioteker som gjør få ting, men gjør dem
           bra




tirsdag 20. april 2010
Puppet

         • Verktøy for automatisk
           oppdatering av servere
         • “Puppet-master”, en
           maskin, holder
           konfigurasjonen
         • Sikrer at servere
           (“puppets”) blir oppdatert
           iht. reglene
         • Endringer spores av
           Subversion                   http://www.flickr.com/photos/eugene/18142113/




tirsdag 20. april 2010
Test-, stage og snapshot-servere

         • Kombinasjonen av kontinuerlig bygging...
         • ... og automatisert oppdatering av servere ...
         • ... gir oss en (nesten) kontinuerlig oppdatert server
           som viser hva som er utviklet til nå.
         • Oppdateres flere ganger om dagen.

         • Test- og stage-servere oppdateres også enkelt.




tirsdag 20. april 2010
Tilgang til serverne

         • Alle utviklerne har
           login men ikke fulle
           admin-rettigheter
         • Både utviklere og
           driftere kan sette ny
           kode i produksjon
         • Endringer kan spores,
           så drifterne har fortsatt
           kontroll over maskinen


                                       http://www.flickr.com/photos/penguincakes/2826996407/




tirsdag 20. april 2010
Driftsvennlig kode

         • Status-sider som
           forteller om tjenestene
           har det bra
                     for f.eks. lastbalanserere
                     og for mennesker
         • Knapper, spaker og
           kontroller slik at man
           kan endre oppførselen
           til systemene i fart

                                                  http://www.flickr.com/photos/stephangeyer/




tirsdag 20. april 2010
Eksempler: status og konsoll




tirsdag 20. april 2010
Utviklerne er ansvarlige for koden
          også etter at den er i prod
         • Man får problemene i fanget hvis det ikke fungerer
           som det skal
         • Gjelder både ved ytelsesproblemer og ved
           funksjonelle feil




tirsdag 20. april 2010
Alt som rulles ut er ikke nødvendigvis
          synlig med en gang
         • Skille lansering av ny funksjonalitet fra utrulling av
           ny kode
         • Konfigurerbar oppførsel i koden
                     av/på
                     gammel/ny
         • Skru på ny funksjonalitet etter hvert, f.eks. på en
           avis først.




tirsdag 20. april 2010
Dyktige medarbeidere

         • Utviklere og driftsfolk som respekterer og stoler på
           hverandre
         • ... og skjønner hverandres arbeidsoppgaver...
         • ... og som prater sammen om hva som fungerer og
           ikke fungerer.




tirsdag 20. april 2010
Ikke rulle ut på fredager




tirsdag 20. april 2010
Suksessfaktorer

         •    IRC og bot
         •    Likt oppsett i utvikling og produksjon
         •    Hold kode og oppsett så enkelt som mulig
         •    Kontinuerlig bygging
         •    Enkel oppdatering av servere
         •    Hyppig utrulling




tirsdag 20. april 2010
Hva har åpen kildekode gitt oss?

         • Fleksibilitet
                     kan velge hvor og hvordan programmer skal kjøre
                     kan bytte ut biter som ikke virker
                     mulighet til å sette opp så mange testmiljøer vi vil
         • Trygghet
                     kan bytte ut biter som ikke virker
                     kan fikse det som ikke fungerer bra nok
                     kan selv velge hvor vi skal sette inn ressurser hvis noe ikke virker
         • Skalering
                     ikke bundet av lisenser som begrenser antall cpu-er eller maskiner
                     frihet til å sette sammen løsninger slik at de skalerer slik vi vil.




tirsdag 20. april 2010
Mer informasjon

         •    http://www.linux.org/           • http://en.wikipedia.org/wiki/
         •    http://java.sun.com/              Internet_Relay_Chat
         •    http://php.net/                 • http://www.mirc.com/ircintro.html
         •    http://varnish-cache.org/       • http://www.tandberg.com/
         •    http://dev.mysql.com/           • http://subversion.apache.org/
         •    http://www.postgresql.org/      • http://jetty.codehaus.org/jetty/
         •    http://munin-monitoring.org/    • http://cruisecontrol.sourceforge.net/
         •    http://www.nagios.org/          • http://blogg.api.no/-/bulletin/show/
                                                557849_attention-all-personnel
         •    http://www.redpill-linpro.no/
                                              • http://www.puppetlabs.com/
                                              • http://www.erdetfredag.no/




tirsdag 20. april 2010
jw@apdm.no
                          @jorgenwahlberg

                         http://www.apdm.no/
                          http://blogg.api.no/
                          @apressen_apdm

tirsdag 20. april 2010

Contenu connexe

Similaire à Hjelp, vi må prodsette

Dokumenter og delingskultur
Dokumenter og delingskulturDokumenter og delingskultur
Dokumenter og delingskulturEven Westvang
 
Introduksjon i teknologier for mobil (web/native/hybrid for iphone, android)
Introduksjon i teknologier for mobil (web/native/hybrid for iphone, android)Introduksjon i teknologier for mobil (web/native/hybrid for iphone, android)
Introduksjon i teknologier for mobil (web/native/hybrid for iphone, android)Kamikaze Media AS
 
HTML5 - en int teori
HTML5 - en int teoriHTML5 - en int teori
HTML5 - en int teoriDag Tjemsland
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asCominvent AS
 
Introduksjon til TDD
Introduksjon til TDDIntroduksjon til TDD
Introduksjon til TDDJoachim Løvf
 
Kan vi skape mye mere verdi i softwareporosjekter
Kan vi skape mye mere verdi i softwareporosjekterKan vi skape mye mere verdi i softwareporosjekter
Kan vi skape mye mere verdi i softwareporosjekterThor Henning Hetland
 
Kundeseminar April 2014, universell utforming og cookie loven
Kundeseminar April 2014, universell utforming og cookie lovenKundeseminar April 2014, universell utforming og cookie loven
Kundeseminar April 2014, universell utforming og cookie lovenCoreTrek
 
Flexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnPFlexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnPOle Kristian Mørch-Storstein
 

Similaire à Hjelp, vi må prodsette (8)

Dokumenter og delingskultur
Dokumenter og delingskulturDokumenter og delingskultur
Dokumenter og delingskultur
 
Introduksjon i teknologier for mobil (web/native/hybrid for iphone, android)
Introduksjon i teknologier for mobil (web/native/hybrid for iphone, android)Introduksjon i teknologier for mobil (web/native/hybrid for iphone, android)
Introduksjon i teknologier for mobil (web/native/hybrid for iphone, android)
 
HTML5 - en int teori
HTML5 - en int teoriHTML5 - en int teori
HTML5 - en int teori
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent as
 
Introduksjon til TDD
Introduksjon til TDDIntroduksjon til TDD
Introduksjon til TDD
 
Kan vi skape mye mere verdi i softwareporosjekter
Kan vi skape mye mere verdi i softwareporosjekterKan vi skape mye mere verdi i softwareporosjekter
Kan vi skape mye mere verdi i softwareporosjekter
 
Kundeseminar April 2014, universell utforming og cookie loven
Kundeseminar April 2014, universell utforming og cookie lovenKundeseminar April 2014, universell utforming og cookie loven
Kundeseminar April 2014, universell utforming og cookie loven
 
Flexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnPFlexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnP
 

Hjelp, vi må prodsette

  • 1. Hjelp, vi må prodsette! Jørgen Wahlberg utviklingsleder, A-pressen Digitale Medier tirsdag 20. april 2010
  • 2. A-pressen Digitale Medier • 65 nettaviser bl.a. RB.no, BA.no, Nordlys.no, AN.no selve nettavisene, fotball-live, skattelistene, rubrikkannonser, etc. • Norges femte største nettaktør ca. 350 000 unike brukere pr dag ca. 1,2 millioner lesere i uken • Zett.no, Derdubor.no, Mediehuset Digital, Nettsamfunnet Origo • A-pressen eier også halve Nettavisen halve TV2 tirsdag 20. april 2010
  • 3. Om oss • Ca. 15 utviklere • Ca. 60 linux-servere • Drift satt ut til Linpro • Stort sett Java • Noe PHP • Varnish • MySQL • PostgreSQL • Escenic • FAST ESP tirsdag 20. april 2010
  • 4. Produksjonssetting • Endring medfører risiko for at noe går galt • Endring er nødvendig og det vi går på jobb for • Endring er like viktig som stabilitet • Må balanseres mot hverandre tirsdag 20. april 2010
  • 5. Hva har vi gjort for å redusere risikoen for feil ved utrullinger? • Automatisering • Kommunikasjon • Utviklingsfilosofi • Samarbeid utvikling/drift tirsdag 20. april 2010
  • 6. Munin og Nagios • Nagios viser status på systemene og varsler når noe er galt • Munin grafer utvikling for forskjellige parametre over tid slik at vi kan se om endringer førte til uventet oppførsel tirsdag 20. april 2010
  • 7. Dedikerte driftere • Drift av tjenestene håndteres av Redpill Linpro • En person jobber fast med vår rigg • Slipper å forholde oss til nye ansikter for hver henvendelse tirsdag 20. april 2010
  • 8. Tett kommunikasjon mellom drift og utvikling • Ticketsystem • Mail • Møter • Videokonferanse • IRC tirsdag 20. april 2010
  • 9. Ikke bare menneskene kommuniserer på IRC • På kanalen er det en bruker som heter “bot” • Bot er et program, ikke et menneske • Bot forteller hva som skjer med serverne: oppdateringer feilmeldinger http://www.flickr.com/photos/frogdna/3605073173/ tirsdag 20. april 2010
  • 10. Versjonskontroll • Vi bruker Subversion som versjonskontrollsystem • For kildekode og konfigurasjon • Brukes av både utvikling og drift • Alle vet hvor de skal se tirsdag 20. april 2010
  • 11. Gjøre utviklings- og produksjonsmiljøer like • Jetty som http://www.flickr.com/photos/8364507@N06/4048424056/ applikasjonsserver • Byttet fra Oracle til MySQL • Samme oppsett (porter, prefiks, osv.) • Feil i produksjon kan stort sett reproduseres lokalt i utviklingsmiljøet tirsdag 20. april 2010
  • 12. Kontinuerlig bygging • Enhetstester • Integrasjonstester • Cruise Control • Reduserer risikoen for at endringer fører til at noe brekker • Muliggjør refaktorering tirsdag 20. april 2010
  • 14. Keep it simple • Enkle tjenester • Spesialiserte • Heller flere enkle enn færre kompliserte tjenester • Kommunikasjon mellom tjenestene med HTTP Enkelt å feilsøke Enkelt å cache http://www.flickr.com/photos/baileyfamily/2039427760/ tirsdag 20. april 2010
  • 15. Keep it simple (forts.) • Koden vår er bygget på ryggen av hundrevis av biblioteker eksempler: spring, hibernate, lucene, xstream, jawr, saxon, jquery alle unntatt ett er åpen kildekode • Så få avhengigheter som mulig • Hold egne og eksterne biblioteker oppdatert • Bruke biblioteker som gjør få ting, men gjør dem bra tirsdag 20. april 2010
  • 16. Puppet • Verktøy for automatisk oppdatering av servere • “Puppet-master”, en maskin, holder konfigurasjonen • Sikrer at servere (“puppets”) blir oppdatert iht. reglene • Endringer spores av Subversion http://www.flickr.com/photos/eugene/18142113/ tirsdag 20. april 2010
  • 17. Test-, stage og snapshot-servere • Kombinasjonen av kontinuerlig bygging... • ... og automatisert oppdatering av servere ... • ... gir oss en (nesten) kontinuerlig oppdatert server som viser hva som er utviklet til nå. • Oppdateres flere ganger om dagen. • Test- og stage-servere oppdateres også enkelt. tirsdag 20. april 2010
  • 18. Tilgang til serverne • Alle utviklerne har login men ikke fulle admin-rettigheter • Både utviklere og driftere kan sette ny kode i produksjon • Endringer kan spores, så drifterne har fortsatt kontroll over maskinen http://www.flickr.com/photos/penguincakes/2826996407/ tirsdag 20. april 2010
  • 19. Driftsvennlig kode • Status-sider som forteller om tjenestene har det bra for f.eks. lastbalanserere og for mennesker • Knapper, spaker og kontroller slik at man kan endre oppførselen til systemene i fart http://www.flickr.com/photos/stephangeyer/ tirsdag 20. april 2010
  • 20. Eksempler: status og konsoll tirsdag 20. april 2010
  • 21. Utviklerne er ansvarlige for koden også etter at den er i prod • Man får problemene i fanget hvis det ikke fungerer som det skal • Gjelder både ved ytelsesproblemer og ved funksjonelle feil tirsdag 20. april 2010
  • 22. Alt som rulles ut er ikke nødvendigvis synlig med en gang • Skille lansering av ny funksjonalitet fra utrulling av ny kode • Konfigurerbar oppførsel i koden av/på gammel/ny • Skru på ny funksjonalitet etter hvert, f.eks. på en avis først. tirsdag 20. april 2010
  • 23. Dyktige medarbeidere • Utviklere og driftsfolk som respekterer og stoler på hverandre • ... og skjønner hverandres arbeidsoppgaver... • ... og som prater sammen om hva som fungerer og ikke fungerer. tirsdag 20. april 2010
  • 24. Ikke rulle ut på fredager tirsdag 20. april 2010
  • 25. Suksessfaktorer • IRC og bot • Likt oppsett i utvikling og produksjon • Hold kode og oppsett så enkelt som mulig • Kontinuerlig bygging • Enkel oppdatering av servere • Hyppig utrulling tirsdag 20. april 2010
  • 26. Hva har åpen kildekode gitt oss? • Fleksibilitet kan velge hvor og hvordan programmer skal kjøre kan bytte ut biter som ikke virker mulighet til å sette opp så mange testmiljøer vi vil • Trygghet kan bytte ut biter som ikke virker kan fikse det som ikke fungerer bra nok kan selv velge hvor vi skal sette inn ressurser hvis noe ikke virker • Skalering ikke bundet av lisenser som begrenser antall cpu-er eller maskiner frihet til å sette sammen løsninger slik at de skalerer slik vi vil. tirsdag 20. april 2010
  • 27. Mer informasjon • http://www.linux.org/ • http://en.wikipedia.org/wiki/ • http://java.sun.com/ Internet_Relay_Chat • http://php.net/ • http://www.mirc.com/ircintro.html • http://varnish-cache.org/ • http://www.tandberg.com/ • http://dev.mysql.com/ • http://subversion.apache.org/ • http://www.postgresql.org/ • http://jetty.codehaus.org/jetty/ • http://munin-monitoring.org/ • http://cruisecontrol.sourceforge.net/ • http://www.nagios.org/ • http://blogg.api.no/-/bulletin/show/ 557849_attention-all-personnel • http://www.redpill-linpro.no/ • http://www.puppetlabs.com/ • http://www.erdetfredag.no/ tirsdag 20. april 2010
  • 28. jw@apdm.no @jorgenwahlberg http://www.apdm.no/ http://blogg.api.no/ @apressen_apdm tirsdag 20. april 2010