trying to solve IT problems

How I tried to fix certain programming problems, mostly in the java, JEE, JBoss scene, web area and using Ubuntu or Debian linux.

  • Home
  • Geomajas / GIS
  • About
Twitter RSS

Continuous delivery BeJUG session notes

Posted on May 6, 2011 by joachim
No CommentsLeave a comment

BeJUG session May 5, Continuous delivery, Axel Fontaine, www.axelfontaine.com

Reliable software solutions through build, test and deployment automation

The take-away message is that automation and agility has improved the development process, but that deployment is still more according to a waterfall model. This can be improved by applying the same kind of agility. It can be done as indicated by sites like stackoverflow (see the version number in the bottom right corner) or flickr (they display it on their tools page).

Green build is top priority!
Don’t check in when the build is red.
Roll back when build is red for too long.

Types of tests:
small
- typically unit tests
- run entirely in RAM, no db, no network,…
- JUnit
- fast
- parallelizable when written properly
- technology oriented
medium
- component tests
- run in RAM but can access local resources like local disk and DB
- DBunit
- slower than small tests but still quite fast
- technology oriented
large
- black box system tests
- can also cross process boundary
- Selenium
- slow(ish)
- end-user oriented (which does not need to be human)

Deployment

Do not deploy snapshots!

What gets deployed?
- code, deployment package, needs deployment script
- configuration:
– environment: put in configuration server (eg LDAP, REST service,…)
– application+environment: deployment package, use environment detection
– application: in the code
– security: file system
- DB delta, in deployment package, LiquiBase or better Flyway (with good maven integration), see also “evolutionary database design” and “refactoring databases”

Extras

Branch by abstraction, use a feature switch to allow switching features on/off for development/testing or deployment.
This allows you to continue working on trunk/master.
When new funstionality is done, remove the switch and the old code.

How to allow previous version to be removed “quickly”. Session affinity, all new sessions on new version.
If we assure that session state can be serialized/deserialized between versions, you can store sessions in something like memcache.
The new version can then be switched almost instantly once the new version is up.
Called blue/green deployment.

Deploy using standard package like .msi, .deb, .tar to allow standard deployment tools like puppet, apt etc to be used.

book:
Continuous delivery by Jez Humble

Be Sociable, Share!
  • Tweet
Categories: java, web development
Activiti BPM first steps
JDBC connection pooling

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

*

*


question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  • Recent Posts

    • Plug-ins and faces overview for Geomajas
    • Adding an admin user in JIRA with embedded database
    • The Geomajas project release releases back-end 1.10, three independent projects and 15 plug-ins
    • Spatial data in the enterprise BeJUG session
    • Ktunaxa Referral Management System
  • Recent Comments

    • Eric on delete windows service account
    • nandra indonesia on delete windows service account
    • joachim on CXF ws client, dynamic endpoint and loading WSDL from the classpath
    • TXMaster on CXF ws client, dynamic endpoint and loading WSDL from the classpath
    • TXMaster on CXF ws client, dynamic endpoint and loading WSDL from the classpath
  • Categories

    • architecture
    • competencies
    • equanda
    • geomajas / GIS
    • java
    • jboss
    • maven
    • semantics
    • tapestry5
    • ubuntu / debian / linux
    • Uncategorized
    • web development
    • web services
© trying to solve IT problems. Proudly Powered by WordPress | Nest Theme by YChong