Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ove Ruben R Olsen                                  ruben@azuralis.noContiuousIntegration&Deployment
Klassisk integrasjon – hva og nårKombinere alle komponenter til ett systemGjøres på slutten av prosjektet
Klassisk integrasjon – høy risikoTiden det tar å   – fikse feilen   – re-testemodulenI verste fall - tiden det tar å   –  ...
Integrasjoner?•   Din kode                •   Windows•   Min kode                •   OS X•   Andre sin kode          •   L...
Kostnadsfaktor ved feil10080604020 0      Kompilator   Enhetstest   Systemtest   Akseptansetest   Produksjon
Faktiske kostnader ved feil                      http://www.agitar.com/solutions/why_unit_testing.html
Målsetting – 50 ganger per dag• Kl 09:30 – utvikler sjekker inn kode i GIT / SVN• Kl 09:40 – utvikler tester endring i sys...
Gjenta 50 ganger pr dag – 8-16
… og nå tilbake til CID!
Martin Fowler - 2006Continuous Integration is a softwaredevelopment practice where members of a teamintegrate their work f...
Martin Fowler - 2006Continuous Integration is a softwaredevelopment practice where members of a teamintegrate their work f...
http://code.flickr.com/
April 2009
http://codeascraft.etsy.com/Every engineer at Etsy writes automated testson a daily basis, and our Hudson continuousintegr...
Etsysdeployinator
Etsysdeployinator
Varförgör ni så där …•   Øke kvalitet - redusere risiko•   Fjerne manuelle, repeterende prosesser•   Raskere deploymentsyk...
… varförgör ni på detta viset?• Feil seint i prosjektet er dyre å rette• Lav-kvalitesprogramvare   – Standarder   – Arkite...
Eksempel på syklusUtvikler                                  Byggeansvarlig• Kompilering                             • Utsj...
ContinousIntegration&Deployment
CID – best practices - utviklere• Et autoritativt koderepo• Skriv selvtestende kode• Daglige commits fra alle utviklere
CID – best practices - bygging•   Automatisk bygging av TRUNK•   Automatisk deployment til produksjonsklone•   Automatisk ...
Hva er poenget?• Ta kostnaden nå istedenfor senere• Lavere deploymentkostnad• Release nå – ikke 3 ganger per år
Ta kostnaden nåRette feil like etter at de er påtruffetAutomatisert• Enhetstesting• FunksjonstestingDeploy ved hver iteras...
Hvorfor løser ikke dette alt?
Metrics – ikke bare for slips
Ikke bare java(script)
Verktøy – CI servereOpenSource• CruiseControl (java, .NET, Ruby, PHP,)• Hudson / Jenkins (primært java)• Continuum (primær...
Hva et CI verktøy må søtte•   Integrasjon med kildekoderevisjonssystem•   Integrasjon med byggeverktøy•   Integrasjon med ...
Xtreme Feedback!
Linkerhttp://martinfowler.com/articles/continuousIntegration.htmlhttp://codeascraft.etsy.com/2010/05/20/quantum-of-deploym...
Continuous Intergation & Deployment
Upcoming SlideShare
Loading in …5
×

Continuous Intergation & Deployment

873 views

Published on

Foredrag hold på BLUG angående kontinuerlig integrasjon og deployment.

----

Talk given at Bergen Linux & BSD Users Group. Introduction to Continuous Integration & Deployment.

Talk was given in Norwegian - thus the slides are in Norwgian.

Published in: Technology
  • Be the first to comment

Continuous Intergation & Deployment

  1. 1. Ove Ruben R Olsen ruben@azuralis.noContiuousIntegration&Deployment
  2. 2. Klassisk integrasjon – hva og nårKombinere alle komponenter til ett systemGjøres på slutten av prosjektet
  3. 3. Klassisk integrasjon – høy risikoTiden det tar å – fikse feilen – re-testemodulenI verste fall - tiden det tar å – finne hvorfor ting feiler – redesigne modulen – fikse feilen – re-testemodulen – teste alle moduler som er avhengige av redesignet
  4. 4. Integrasjoner?• Din kode • Windows• Min kode • OS X• Andre sin kode • Linux• Data(baseskjema) • BSD• CSS • Tomcat• Grafikk • Jboss• Layout • Test• 3dje parts webservice • Produksjon
  5. 5. Kostnadsfaktor ved feil10080604020 0 Kompilator Enhetstest Systemtest Akseptansetest Produksjon
  6. 6. Faktiske kostnader ved feil http://www.agitar.com/solutions/why_unit_testing.html
  7. 7. Målsetting – 50 ganger per dag• Kl 09:30 – utvikler sjekker inn kode i GIT / SVN• Kl 09:40 – utvikler tester endring i systemtest• Kl 09: 50 – tester kjører QA i akseptansetest• Kl 10:00 – sluttbruker tar i bruker endringen
  8. 8. Gjenta 50 ganger pr dag – 8-16
  9. 9. … og nå tilbake til CID!
  10. 10. Martin Fowler - 2006Continuous Integration is a softwaredevelopment practice where members of a teamintegrate their work frequently, usually eachperson integrates at least daily - leading tomultiple integrations per day. Each integration isverified by an automated build (including test) todetect integration errors as quickly as possible. Manyteams find that this approach leads to significantlyreduced integration problems and allows a team todevelop cohesive software more rapidly.
  11. 11. Martin Fowler - 2006Continuous Integration is a softwaredevelopment practice where members of a teamintegrate their work frequently, usually eachperson integrates at least daily - leading tomultiple integrations per day. Each integration isverified by an automated build (including test) todetect integration errors as quickly as possible. Manyteams find that this approach leads to significantlyreduced integration problems and allows a team todevelop cohesive software more rapidly.
  12. 12. http://code.flickr.com/
  13. 13. April 2009
  14. 14. http://codeascraft.etsy.com/Every engineer at Etsy writes automated testson a daily basis, and our Hudson continuousintegration server runs about 2 500 tests withevery code push. Since we push code around20 times a day, that meansrunning around 250,000 PHPUnit tests in atypical work week!(2010)
  15. 15. Etsysdeployinator
  16. 16. Etsysdeployinator
  17. 17. Varförgör ni så där …• Øke kvalitet - redusere risiko• Fjerne manuelle, repeterende prosesser• Raskere deploymentsyklus• Bedre prosjektvisibilitet• Etablere høyere prosjekttrygghet
  18. 18. … varförgör ni på detta viset?• Feil seint i prosjektet er dyre å rette• Lav-kvalitesprogramvare – Standarder – Arkitektur – Duplisering• Kun nightlybuilds• Ingen oversikt over hva som skjer
  19. 19. Eksempel på syklusUtvikler Byggeansvarlig• Kompilering • Utsjekk i fra repository• Enhetstesting • Kompilering• Kjøring på lokal PC Drift• Innsjekking i repository • Enhetstesting • Kopiering• Gi beskjed til sjefsutvikler • Bygging • Utpakking • PakkingSjefsutvikler • Kopiering • Restart av produksjonsmiljø• Sjekke ut kode fra repository • Utpakking• Kompilere • Testing av noen funksjoner• Banne • Integrasjonstesting• Enhetsteste • Kopiering• Kjøring på lokal PC • Utpakking• Innsjekking i repository • Funksjonstesting • Akseptansetesting
  20. 20. ContinousIntegration&Deployment
  21. 21. CID – best practices - utviklere• Et autoritativt koderepo• Skriv selvtestende kode• Daglige commits fra alle utviklere
  22. 22. CID – best practices - bygging• Automatisk bygging av TRUNK• Automatisk deployment til produksjonsklone• Automatisk testing• Kjapp bygging• Gi alle full oversikt
  23. 23. Hva er poenget?• Ta kostnaden nå istedenfor senere• Lavere deploymentkostnad• Release nå – ikke 3 ganger per år
  24. 24. Ta kostnaden nåRette feil like etter at de er påtruffetAutomatisert• Enhetstesting• FunksjonstestingDeploy ved hver iterasjon
  25. 25. Hvorfor løser ikke dette alt?
  26. 26. Metrics – ikke bare for slips
  27. 27. Ikke bare java(script)
  28. 28. Verktøy – CI servereOpenSource• CruiseControl (java, .NET, Ruby, PHP,)• Hudson / Jenkins (primært java)• Continuum (primært java)Komersielle• TeamCity• Bamboo• Cruise / Go
  29. 29. Hva et CI verktøy må søtte• Integrasjon med kildekoderevisjonssystem• Integrasjon med byggeverktøy• Integrasjon med prosjektverktøy• Notifikasjon – epost, RSS, IM, etc• Dashboarding• Kildekodemetrics• Vertikal og horisontal skalering
  30. 30. Xtreme Feedback!
  31. 31. Linkerhttp://martinfowler.com/articles/continuousIntegration.htmlhttp://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/http://www.sonarsource.org/http://phpundercontrol.org/http://hudson-ci.org/ http://jenkins-ci.org/http://cruisecontrol.sourceforge.net/http://continuum.apache.org/http://www.jetbrains.com/teamcity/http://www.atlassian.com/software/bamboo/http://www.thoughtworks-studios.com/go-agile-release-management/http://wiki.hudson-ci.org/pages/viewpage.action?pageId=20250625http://wiki.hudson-ci.org/pages/viewpage.action?pageId=38633731http://cradiator.codeplex.com/

×