Z2 V2.1 is coming…

While I wanted to write about something completely different – much more technical and possibly quite boring to most – finishing up version 2.1 of Z2 keeps us so busy that I thought it may be much nicer to simply brag a bit about what is really cool in v2.1.

1. We do finally have a decent project management tool in place

We switched from Trac to Redmine and finally have issues, repositories, samples, and Wiki in one place and all linked up with each other. It’s here: Redmine at z2-environment.net.

The Wiki has turned out nice. Look here: Z2-Environment Wiki. Still some work in progress content of course.

2. We moved completely in with Git now

It’s not like we have become true Giterons now. Far from it. Subversion is supported as it was before.

Git does however fit nicely with Z2 – much more so than we thought a while back. Also, Git does help with cross-repository operations, where Subversion is rather weak.

In contrast to Subversion, with Git there is a natural tendency to have more and smaller projects. That is reflected in the repositories that make Z2 and its add-ons.

And we are know hosting all repositories ourself. Via Redmine they are all nicely integrated with the Web UI and we have all permission management abstracted out from the OS layer.

3. Add-ons

Previously we had two distributions: z2@base and z2@spring and planned for z2@hadoop. From v2.1 on there is only z2-base and add-ons and samples. I.e. there is a Spring add-on that has all the Spring modules (and a Wiki page and samples) as there is a Hadoop add-on (and a Wiki page and samples) and hopefully more.

To make use of an add-on, all you need to do is to declare another repository with Z2. Samples do so and you hardly notice. Want to try one? Takes no more than 5 minutes:

http://redmine.z2-environment.net/projects/z2-environment/wiki/Sample-spring-basic

With the simple ability to create your own repositories (here Git is nice), scenario setup is simple and still cleanly separated and in relation with the original repositories:

This is really great! Previously our approach was more like: Take a copy of the z2@base repository, modify the environment, and add your repository on top.

With the modular repository approach and the overriding of the environment (see How to create your own system) and by setting up via “git pull” this has become much simpler and repeatable – and upgradable!

4. Z2 Zero Downtime Upgrades

Now to a true software feature: Zero Downtime Upgrades (implemented via the Gateway project actually). Updating stateful Web applications typically implies downtime. Most do not have serializable session state, and even if they have, you would still have a short downtime when updating. With Z2 Zero Downtime Upgrades we use the built-in capability of worker process management to implement no-downtime upgrades, by putting old worker processes in retirement until all sessions bound to them have terminated and the gateway terminates them.

Old sessions can complete with the old code, while new sessions will make use of the new code.

5. Samples

Via the Wiki and the linked repositories we have a very convenient way for us to roll-out samples and for you to try and understand them. There is samples for Spring, transaction manager integration, hadoop (in progress), and we are working on more.

6. Lots of improvements and updates

Finally we are on Jetty 8. Eclipsoid integrates with the source code resolution during debugging, etc., etc.