27
Together. Free your energies Anders Sveen – JavaZone 2009 Smidig utrulling Anders Sveen JavaZone 2009

Smidig Utrulling - JavaZone 2009

Embed Size (px)

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

Page 1: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Smidig utrulling

Anders Sveen

JavaZone 2009

Page 2: Smidig Utrulling - 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

Page 3: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Smidig?

Tilpasnings-dyktig

Kvalitet

Forbedringer

Flyt og forutsigbarhet

Trygghet

Page 4: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Smidig utrulling

• Enkelt• Raskt• Sikkert

• Automatisk!

Prosess

Teknologi

Drift

DatabaseKonfigurasjons-styring

Avhengigheter

Arkitektur

Page 5: Smidig Utrulling - JavaZone 2009

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

Page 6: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Hvordan?

• Automatisering og kontroll• Kunnskap• Kultur• Kontinuerlig forbedring

Page 7: Smidig Utrulling - JavaZone 2009

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?

Page 8: Smidig Utrulling - JavaZone 2009

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!

Page 9: Smidig Utrulling - JavaZone 2009

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

Page 10: Smidig Utrulling - JavaZone 2009

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

Page 11: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Pakking

Server

Server kode

Avhengigheter

Spring

Page 12: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Pakking

Page 13: Smidig Utrulling - JavaZone 2009

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

Page 14: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

UtrullingLaster ned

Kopierer config dersom den ikke eksisterer

config/<env>/*.propertiesconfig/*.properties

Oppgraderer databasen

Page 15: Smidig Utrulling - JavaZone 2009

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

Page 16: Smidig Utrulling - JavaZone 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

Page 17: Smidig Utrulling - JavaZone 2009

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;

Page 18: Smidig Utrulling - JavaZone 2009

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;

Page 19: Smidig Utrulling - JavaZone 2009

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);

Page 20: Smidig Utrulling - JavaZone 2009

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

Page 21: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Refactoring

Page 22: Smidig Utrulling - JavaZone 2009

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/

Page 23: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Eksempelet

• http://github.com/anderssv/agile-deploy

• Maven prosjekt– War– Server (Jetty embedded)

• Deployer

Page 24: Smidig Utrulling - JavaZone 2009

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

Page 25: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Spørsmål?

Page 26: Smidig Utrulling - JavaZone 2009

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

Page 27: Smidig Utrulling - JavaZone 2009

Together. Free your energies Anders Sveen – JavaZone 2009

Til [email protected]

http://www.no.capgemini.com/teknologiblogg

http://blog.f12.no

http://twitter.com/anderssv

http://smidig2009.no