View
1.514
Download
3
Category
Preview:
DESCRIPTION
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 .
Citation preview
Together. Free your energies Anders Sveen – JavaZone 2009
Smidig utrulling
Anders Sveen
JavaZone 2009
Together. Free your energies Anders Sveen – JavaZone 2009
Først
• Teknologileder for Java i Capgemini• BBS, CIBER• Java, Smidig, Back end, Hibernate,
Maven, Konfigurasjonsstyring
• Ting som må gjøres for smidigere utrulling, og vise noen eksempler som kan inspirere
Together. Free your energies Anders Sveen – JavaZone 2009
Smidig?
Tilpasnings-dyktig
Kvalitet
Forbedringer
Flyt og forutsigbarhet
Trygghet
Together. Free your energies Anders Sveen – JavaZone 2009
Smidig utrulling
• Enkelt• Raskt• Sikkert
• Automatisk!
Prosess
Teknologi
Drift
DatabaseKonfigurasjons-styring
Avhengigheter
Arkitektur
Together. Free your energies Anders Sveen – JavaZone 2009
Fordeler
• Definition of done!• Return on investment• Raskere verifisering og tilbakemelding• Flere miljøer• Raskere feilfiks• Reduserte miljøforskjeller
Together. Free your energies Anders Sveen – JavaZone 2009
Hvordan?
• Automatisering og kontroll• Kunnskap• Kultur• Kontinuerlig forbedring
Together. Free your energies Anders Sveen – JavaZone 2009
Utfordringer
• Kulturelt– Utvikling– Database– Drift
• Teknisk– Er det for mange biter i applikasjonen?– Er andre prosjekter avhengige av grensesnitt i
systemet?– Hvordan går vi bakover når noe går feil?
Together. Free your energies Anders Sveen – JavaZone 2009
Eksempel
• Maven• Webapp• Webserver• Database• Egenutviklet kode
• http://github.com/anderssv/agile-deploy• Bruk det som inspirasjon!
Together. Free your energies Anders Sveen – JavaZone 2009
Utviklingsløpet
Utvikler DBsandkasse
Hent release
t versj
on
Hent releaset versjon
Hent releaset versjon
Commit
Tes
ter
Utvikler Subversion Mavenrepository
Deploy
Hen
t nye
ste
Hudson Test
Beta
ProdDB
DB
DB
Oppgrader
Oppgrader
Oppgrader
Together. Free your energies Anders Sveen – JavaZone 2009
Pakking
• Én pakke, ZIP med Jetty embedded• Miljøuavhengig
• Lages av – Maven Assembly plugin
• Repo dir og bin script
– Maven Appassembler plugin• Pakking til zip med config og ekstra scripts
• mvn clean install deploy:deploy
Together. Free your energies Anders Sveen – JavaZone 2009
Pakking
Server
Server kode
Avhengigheter
Spring
Together. Free your energies Anders Sveen – JavaZone 2009
Pakking
Together. Free your energies Anders Sveen – JavaZone 2009
Inne i ZIP
Scripts
• src/main/scripts
Config
• src/main/config/*.properties• src/main/config/test/*.properties• src/main/config/prod/*.properties
Database
• src/main/db/migrations/*.sql
Together. Free your energies Anders Sveen – JavaZone 2009
UtrullingLaster ned
Kopierer config dersom den ikke eksisterer
config/<env>/*.propertiesconfig/*.properties
Oppgraderer databasen
Together. Free your energies Anders Sveen – JavaZone 2009
Utrullinganderssv@beast:~/bin$ java -jar deployer-0.1-SNAPSHOT.jar test no.f12 bikestatus-poller 0.1-SNAPSHOT
INFO | y.deployer.CommandLineDeployer | Launched deploy at Sat Aug 29 13:16:01 CEST 2009INFO | y.deployer.CommandLineDeployer | Starting deploy: no.f12:bikestatus-poller:0.1-SNAPSHOTINFO | oy.deployer.RepositoryRepoImpl | Downloading package from
http://mrepo.f12.no/snap/no/f12/bikestatus-poller/0.1-SNAPSHOT/maven-metadata.xmlINFO | 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
INFO | y.deployer.UnpackerServiceImpl | Unpacking ./bikestatus-poller-0.1-20090818.212830-7.zip into ./bikestatus-poller/test/current
INFO | loyer.ConfigurationServiceImpl | Updating configurationINFO | loyer.ConfigurationServiceImpl | Creating linksINFO | loyer.ConfigurationServiceImpl | Created link for ./bikestatus-poller/test/data at
./bikestatus-poller/test/current/dataINFO | loyer.ConfigurationServiceImpl | Created link for ./bikestatus-poller/test/log4j.properties
at ./bikestatus-poller/test/current/log4j.propertiesdbdeploy 3.0M1INFO | loy.deployer.DeployServiceImpl | Could not inspect database for upgrade details, skipping.
Increase logging for no.f12.agiledeploy.deployer.DataBaseServiceImpl to see details.INFO | y.deployer.CommandLineDeployer | Deploy ended at Sat Aug 29 13:16:09 CEST 2009
Together. Free your energies Anders Sveen – JavaZone 2009
Kode og database
• Hører sammen!• Migrations• En commit inneholder både kode- og database-
endringer.src/main/java/no/javazone/Participant.java src/test/java/no/javazone/ParticipantTest.java src/db/migrations/078_add_enabled_flag_to_participant.sql
Together. Free your energies Anders Sveen – JavaZone 2009
SQL
078_add_enabled_flag_to_participant.sql
ALTER TABLE participant ADD enabled varchar;
UPDATE participant SET enabled='y';
ALTER TABLE participant ALTER COLUMN enabled varchar NOT NULL;
Together. Free your energies Anders Sveen – JavaZone 2009
SQL
079_change_enum_of_participant_type.sql
ALTER TABLE participants DISABLE participant_type_fk;
UPDATE participants SET type='VIP' WHERE type='ACCREDITED';
UPDATE participant_type SET type='VIP' WHERE type='ACCREDITED';
ALTER TABLE participants ENABLE participant_type_fk;
Together. Free your energies Anders Sveen – JavaZone 2009
Tracking
CREATE TABLE changelog ( change_number INTEGER NOT NULL, delta_set VARCHAR2(10) NOT NULL, complete_dt TIMESTAMP NOT NULL, applied_by VARCHAR2(100) NOT NULL, description VARCHAR2(500) NOT NULL);
ALTER TABLE changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY (change_number, delta_set);
Together. Free your energies Anders Sveen – JavaZone 2009
Dbdeploy
dbdeploy 3.0M1
Reading change scripts from directory C:\data\users\Anders\source\agile-deploy\deployer\target\temp\project\test\current\db\migrations...
Changes currently applied to database:
1...77
Scripts available:
1...79
To be applied:
78, 79
Together. Free your energies Anders Sveen – JavaZone 2009
Refactoring
Together. Free your energies Anders Sveen – JavaZone 2009
Verktøy
• DBDeploy - http://dbdeploy.com/• DbMaintain -
http://dbmaintain.sourceforge.net/• C5-db-migration -
http://code.google.com/p/c5-db-migration/• Scala-migrations -
http://code.google.com/p/scala-migrations/
Together. Free your energies Anders Sveen – JavaZone 2009
Eksempelet
• http://github.com/anderssv/agile-deploy
• Maven prosjekt– War– Server (Jetty embedded)
• Deployer
Together. Free your energies Anders Sveen – JavaZone 2009
Alternativer
• Deploy– Applikasjonen oppgraderer databasen ved oppstart– Deployer legger ut war på applikasjonsserver– Maven deployer– Maven oppgraderer databasen
• Pakking– RPM– JAR– WAR– EAR
• Automatiser hele veien fra utvikler til database
Together. Free your energies Anders Sveen – JavaZone 2009
Spørsmål?
Together. Free your energies Anders Sveen – JavaZone 2009
Oppsummering
• Skap kultur for forbedring• Automatiser• Reduser kompleksitet i systemet• Lag/bruk verktøy som fungerer• Rull ut ofte!• Start tidlig
Together. Free your energies Anders Sveen – JavaZone 2009
Til sluttanders.sveen@capgemini.com
http://www.no.capgemini.com/teknologiblogg
http://blog.f12.no
http://twitter.com/anderssv
http://smidig2009.no
Recommended