smidig utrulling - javazone 2009

Post on 28-Nov-2014

1.514 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

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 .

TRANSCRIPT

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

top related