Continuous Intergation & Deployment

703
-1

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
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

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

No notes for slide
  • http://www.agitar.com/solutions/why_unit_testing.html
  • Nyrelease av ”alt” november 2009…
  • Princess is our staging environment. So why didn’t we just call it “staging”? Partly, that’s just how we roll. We used to have an environment called “Staging” that was the last stop before code went live to everyone. However, it was not ideally set up; the first time your code would interact with actual production hardware was when you deployed. Princess uses production data stores, our production network and production hardware. In order to make a clean mental break from the old way, one of our rad engineers, Eric Fixler, came up with “Princess”.Here’s our IRC bot telling everyone that something went out. It also includes a link to the commits that went live.
  • 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/

    ×