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

934 views
842 views

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
934
On SlideShare
0
From Embeds
0
Number of Embeds
5
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 />

×