Your SlideShare is downloading. ×
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Hjelp, vi må prodsette
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hjelp, vi må prodsette

987

Published on

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 …

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
987
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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
  • 13. ADAM-A 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

×