hjelp, vi må prodsette
DESCRIPTION
Når man utvikler nettaviser er det en utfordring å balansere hensynet til stabilitet og ønsket om hyppige endringer i en løsning. Jørgen Wahlberg viser eksempler på hva A-pressen sammen med Linpro har gjort for å gjøre både driftere, utviklere og avisene mindre nervøse når endringene skal settes i produksjon.TRANSCRIPT
![Page 1: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/1.jpg)
Hjelp, vi må prodsette!
Jørgen Wahlbergutviklingsleder,
A-pressen Digitale Medier
tirsdag 20. april 2010
![Page 2: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/2.jpg)
A-pressen Digitale Medier
• 65 nettaviserbl.a. RB.no, BA.no, Nordlys.no, AN.noselve nettavisene, fotball-live, skattelistene, rubrikkannonser, etc.
• Norges femte største nettaktørca. 350 000 unike brukere pr dagca. 1,2 millioner lesere i uken
• Zett.no, Derdubor.no, Mediehuset Digital, Nettsamfunnet Origo
• A-pressen eier ogsåhalve Nettavisenhalve TV2
tirsdag 20. april 2010
![Page 3: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/3.jpg)
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
![Page 4: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/4.jpg)
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
![Page 5: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/5.jpg)
Hva har vi gjort for å redusere risikoen for feil ved utrullinger?• Automatisering• Kommunikasjon• Utviklingsfilosofi• Samarbeid utvikling/drift
tirsdag 20. april 2010
![Page 6: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/6.jpg)
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
![Page 7: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/7.jpg)
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
![Page 8: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/8.jpg)
Tett kommunikasjon mellom drift og utvikling
• Ticketsystem• Mail• Møter• Videokonferanse• IRC
tirsdag 20. april 2010
![Page 9: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/9.jpg)
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:oppdateringerfeilmeldinger
http://www.flickr.com/photos/frogdna/3605073173/
tirsdag 20. april 2010
![Page 10: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/10.jpg)
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
![Page 11: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/11.jpg)
Gjøre utviklings- og produksjonsmiljøer like• Jetty som
applikasjonsserver• Byttet fra Oracle til
MySQL• Samme oppsett
(porter, prefiks, osv.)• Feil i produksjon kan
stort sett reproduseres lokalt i utviklingsmiljøet
http://www.flickr.com/photos/8364507@N06/4048424056/
tirsdag 20. april 2010
![Page 12: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/12.jpg)
Kontinuerlig bygging
• Enhetstester• Integrasjonstester• Cruise Control• Reduserer risikoen for
at endringer fører til at noe brekker
• Muliggjør refaktorering
tirsdag 20. april 2010
![Page 13: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/13.jpg)
ADAM-A
tirsdag 20. april 2010
![Page 14: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/14.jpg)
Keep it simple
• Enkle tjenester• Spesialiserte• Heller flere enkle enn
færre kompliserte tjenester
• Kommunikasjon mellom tjenestene med HTTP
Enkelt å feilsøkeEnkelt å cache
http://www.flickr.com/photos/baileyfamily/2039427760/
tirsdag 20. april 2010
![Page 15: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/15.jpg)
Keep it simple (forts.)
• Koden vår er bygget på ryggen av hundrevis av biblioteker
eksempler: spring, hibernate, lucene, xstream, jawr, saxon, jqueryalle 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
![Page 16: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/16.jpg)
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
![Page 17: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/17.jpg)
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
![Page 18: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/18.jpg)
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
![Page 19: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/19.jpg)
Driftsvennlig kode
• Status-sider som forteller om tjenestene har det bra
for f.eks. lastbalanserereog 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
![Page 20: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/20.jpg)
Eksempler: status og konsoll
tirsdag 20. april 2010
![Page 21: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/21.jpg)
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
![Page 22: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/22.jpg)
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
![Page 23: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/23.jpg)
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
![Page 24: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/24.jpg)
Ikke rulle ut på fredager
tirsdag 20. april 2010
![Page 25: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/25.jpg)
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
![Page 26: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/26.jpg)
Hva har åpen kildekode gitt oss?
• Fleksibilitetkan velge hvor og hvordan programmer skal kjørekan bytte ut biter som ikke virkermulighet til å sette opp så mange testmiljøer vi vil
• Trygghetkan bytte ut biter som ikke virkerkan fikse det som ikke fungerer bra nokkan selv velge hvor vi skal sette inn ressurser hvis noe ikke virker
• Skaleringikke bundet av lisenser som begrenser antall cpu-er eller maskinerfrihet til å sette sammen løsninger slik at de skalerer slik vi vil.
tirsdag 20. april 2010
![Page 27: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/27.jpg)
Mer informasjon
• http://www.linux.org/• http://java.sun.com/• http://php.net/• http://varnish-cache.org/• http://dev.mysql.com/• http://www.postgresql.org/• http://munin-monitoring.org/• http://www.nagios.org/• http://www.redpill-linpro.no/
• http://en.wikipedia.org/wiki/Internet_Relay_Chat
• http://www.mirc.com/ircintro.html• http://www.tandberg.com/• http://subversion.apache.org/• http://jetty.codehaus.org/jetty/• http://cruisecontrol.sourceforge.net/• http://blogg.api.no/-/bulletin/show/
557849_attention-all-personnel• http://www.puppetlabs.com/• http://www.erdetfredag.no/
tirsdag 20. april 2010
![Page 28: Hjelp, vi må prodsette](https://reader034.vdocuments.pub/reader034/viewer/2022042518/54806e525806b5ae5e8b49a7/html5/thumbnails/28.jpg)
[email protected]@jorgenwahlberg
http://www.apdm.no/http://blogg.api.no/@apressen_apdm
tirsdag 20. april 2010