Smidig utrulling<br />Anders Sveen<br />JavaZone 2009<br />
Først<br />Teknologileder for Java i Capgemini<br />BBS, CIBER<br />Java, Smidig, Back end, Hibernate, Maven, Konfigurasjo...
Smidig?<br />
Smidig utrulling<br />Enkelt<br />Raskt<br />Sikkert<br />Automatisk!<br />
Fordeler<br />Definition of done!<br />Returnoninvestment<br />Raskere verifisering og tilbakemelding<br />Flere miljøer<b...
Hvordan?<br />Automatisering og kontroll<br />Kunnskap<br />Kultur<br />Kontinuerlig forbedring<br />
Utfordringer<br />Kulturelt<br />Utvikling<br />Database<br />Drift<br />Teknisk<br />Er det for mange biter i applikasjon...
Eksempel<br />Maven<br />Webapp<br />Webserver<br />Database<br />Egenutviklet kode<br />http://github.com/anderssv/agile-...
Utviklingsløpet<br />
Pakking<br />Én pakke, ZIP med Jettyembedded<br />Miljøuavhengig<br />Lages av <br />Maven Assembly plugin<br />Repodir og...
Pakking<br />
Pakking<br />
Inne i ZIP<br />
Utrulling<br />
Utrulling<br />anderssv@beast:~/bin$ java -jar deployer-0.1-SNAPSHOT.jar test no.f12 bikestatus-poller 0.1-SNAPSHOT<br />I...
Kode og database<br />Hører sammen!<br />Migrations<br />En commit inneholder både kode- og database-endringer.<br />src/m...
SQL<br />078_add_enabled_flag_to_participant.sql<br />ALTER TABLE participant ADD enabled varchar;<br />UPDATE participant...
SQL<br />079_change_enum_of_participant_type.sql<br />ALTER TABLE participants DISABLE participant_type_fk;<br />UPDATE pa...
Tracking<br />CREATE TABLE changelog (<br />  change_number INTEGER NOT NULL,<br />  delta_set VARCHAR2(10) NOT NULL,<br /...
Dbdeploy<br />dbdeploy 3.0M1<br />Reading change scripts from directory C:datausersAnderssourceagile-deploydeployer	arget	...
Refactoring<br />
Verktøy<br />DBDeploy - http://dbdeploy.com/<br />DbMaintain - http://dbmaintain.sourceforge.net/<br />C5-db-migration - h...
Eksempelet<br />http://github.com/anderssv/agile-deploy<br />Maven prosjekt<br />War<br />Server (Jetty embedded)<br />Dep...
Alternativer<br />Deploy<br />Applikasjonen oppgraderer databasen ved oppstart<br />Deployer legger ut war på applikasjons...
Spørsmål?<br />
Oppsummering<br />Skap kultur for forbedring<br />Automatiser<br />Reduser kompleksitet i systemet<br />Lag/bruk verktøy s...
Til slutt<br />anders.sveen@capgemini.com<br />http://www.no.capgemini.com/teknologiblogg<br />http://blog.f12.no<br />htt...
Upcoming SlideShare
Loading in...5
×

Smidig Utrulling - JavaZone 2009

749

Published on

My slides from JavaZone 2009 on agile deployment. Sorry, presentation only in Norwegian. Video will be online, and the demo code is available at http://github.com/anderssv/agile-deploy/tree/master .

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

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

No notes for slide

Smidig Utrulling - JavaZone 2009

  1. 1. Smidig utrulling<br />Anders Sveen<br />JavaZone 2009<br />
  2. 2. Først<br />Teknologileder for Java i Capgemini<br />BBS, CIBER<br />Java, Smidig, Back end, Hibernate, Maven, Konfigurasjonsstyring<br />Ting som må gjøres for smidigere utrulling, og vise noen eksempler som kan inspirere<br />
  3. 3. Smidig?<br />
  4. 4. Smidig utrulling<br />Enkelt<br />Raskt<br />Sikkert<br />Automatisk!<br />
  5. 5. Fordeler<br />Definition of done!<br />Returnoninvestment<br />Raskere verifisering og tilbakemelding<br />Flere miljøer<br />Raskere feilfiks<br />Reduserte miljøforskjeller<br />
  6. 6. Hvordan?<br />Automatisering og kontroll<br />Kunnskap<br />Kultur<br />Kontinuerlig forbedring<br />
  7. 7. Utfordringer<br />Kulturelt<br />Utvikling<br />Database<br />Drift<br />Teknisk<br />Er det for mange biter i applikasjonen?<br />Er andre prosjekter avhengige av grensesnitt i systemet?<br />Hvordan går vi bakover når noe går feil?<br />
  8. 8. Eksempel<br />Maven<br />Webapp<br />Webserver<br />Database<br />Egenutviklet kode<br />http://github.com/anderssv/agile-deploy<br />Bruk det som inspirasjon!<br />
  9. 9. Utviklingsløpet<br />
  10. 10. Pakking<br />Én pakke, ZIP med Jettyembedded<br />Miljøuavhengig<br />Lages av <br />Maven Assembly plugin<br />Repodir og bin script<br />Maven Appassembler plugin<br />Pakking til zip med config og ekstra scripts<br />mvncleaninstalldeploy:deploy<br />
  11. 11. Pakking<br />
  12. 12. Pakking<br />
  13. 13. Inne i ZIP<br />
  14. 14. Utrulling<br />
  15. 15. Utrulling<br />anderssv@beast:~/bin$ java -jar deployer-0.1-SNAPSHOT.jar test no.f12 bikestatus-poller 0.1-SNAPSHOT<br />INFO | y.deployer.CommandLineDeployer | Launched deploy at Sat Aug 29 13:16:01 CEST 2009<br />INFO | y.deployer.CommandLineDeployer | Starting deploy: no.f12:bikestatus-poller:0.1-SNAPSHOT<br />INFO | oy.deployer.RepositoryRepoImpl | Downloading package from http://mrepo.f12.no/snap/no/f12/bikestatus-poller/0.1-SNAPSHOT/maven-metadata.xml<br />INFO | oy.deployer.RepositoryRepoImpl | Downloading package from http://mrepo.f12.no/snap/no/f12/bikestatus-poller/0.1-SNAPSHOT/bikestatus-poller-0.1-20090818.212830-7.zip<br />INFO | y.deployer.UnpackerServiceImpl | Unpacking ./bikestatus-poller-0.1-20090818.212830-7.zip into ./bikestatus-poller/test/current<br />INFO | loyer.ConfigurationServiceImpl | Updating configuration<br />INFO | loyer.ConfigurationServiceImpl | Creating links<br />INFO | loyer.ConfigurationServiceImpl | Created link for ./bikestatus-poller/test/data at ./bikestatus-poller/test/current/data<br />INFO | loyer.ConfigurationServiceImpl | Created link for ./bikestatus-poller/test/log4j.properties at ./bikestatus-poller/test/current/log4j.properties<br />dbdeploy 3.0M1<br />INFO | loy.deployer.DeployServiceImpl | Could not inspect database for upgrade details, skipping. Increase logging for no.f12.agiledeploy.deployer.DataBaseServiceImpl to see details.<br />INFO | y.deployer.CommandLineDeployer | Deploy ended at Sat Aug 29 13:16:09 CEST 2009<br />
  16. 16. Kode og database<br />Hører sammen!<br />Migrations<br />En commit inneholder både kode- og database-endringer.<br />src/main/java/no/javazone/Participant.javasrc/test/java/no/javazone/ParticipantTest.java src/db/migrations/078_add_enabled_flag_to_participant.sql<br />
  17. 17. SQL<br />078_add_enabled_flag_to_participant.sql<br />ALTER TABLE participant ADD enabled varchar;<br />UPDATE participant SET enabled=&apos;y&apos;;<br />ALTER TABLE participant ALTER COLUMN enabled varchar NOT NULL;<br />
  18. 18. SQL<br />079_change_enum_of_participant_type.sql<br />ALTER TABLE participants DISABLE participant_type_fk;<br />UPDATE participants SET type=&apos;VIP&apos; WHERE type=&apos;ACCREDITED&apos;;<br />UPDATE participant_type SET type=&apos;VIP&apos; WHERE type=&apos;ACCREDITED&apos;;<br />ALTER TABLE participants ENABLE participant_type_fk;<br />
  19. 19. Tracking<br />CREATE TABLE changelog (<br /> change_number INTEGER NOT NULL,<br /> delta_set VARCHAR2(10) NOT NULL,<br /> complete_dt TIMESTAMP NOT NULL,<br /> applied_by VARCHAR2(100) NOT NULL,<br /> description VARCHAR2(500) NOT NULL<br />);<br />ALTER TABLE changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY (change_number, delta_set);<br />
  20. 20. Dbdeploy<br />dbdeploy 3.0M1<br />Reading change scripts from directory C:datausersAnderssourceagile-deploydeployer arget empproject estcurrentdbmigrations...<br />Changes currently applied to database:<br /> 1...77<br />Scripts available:<br /> 1...79<br />To be applied:<br /> 78, 79<br />
  21. 21. Refactoring<br />
  22. 22. Verktøy<br />DBDeploy - http://dbdeploy.com/<br />DbMaintain - http://dbmaintain.sourceforge.net/<br />C5-db-migration - http://code.google.com/p/c5-db-migration/<br />Scala-migrations - http://code.google.com/p/scala-migrations/<br />
  23. 23. Eksempelet<br />http://github.com/anderssv/agile-deploy<br />Maven prosjekt<br />War<br />Server (Jetty embedded)<br />Deployer<br />
  24. 24. Alternativer<br />Deploy<br />Applikasjonen oppgraderer databasen ved oppstart<br />Deployer legger ut war på applikasjonsserver<br />Maven deployer<br />Maven oppgraderer databasen<br />Pakking<br />RPM<br />JAR<br />WAR<br />EAR<br />Automatiser hele veien fra utvikler til database<br />
  25. 25. Spørsmål?<br />
  26. 26. Oppsummering<br />Skap kultur for forbedring<br />Automatiser<br />Reduser kompleksitet i systemet<br />Lag/bruk verktøy som fungerer<br />Rull ut ofte!<br />Start tidlig<br />
  27. 27. Til slutt<br />anders.sveen@capgemini.com<br />http://www.no.capgemini.com/teknologiblogg<br />http://blog.f12.no<br />http://twitter.com/anderssv<br />http://smidig2009.no<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×