Skip to main content

As a senior software developer and architecture consultant in large Java and Coremedia projects, I have been involved in various build and delivery processes. Of course, every project has its own challenges; but one problem was common to all: the rapid delivery of features into production. Each company had implemented its own processes: manual, semi-automated, lengthy (6-month releases), fast lanes to bypass the lengthy ones, etc. etc.

In a series of articles, I would like to share my experiences in the last project. We have built a continuous delivery pipeline that can meet the challenges of a modern, agile software development process and, in particular, of Coremedia 8. The findings are of a general nature and can be used in any software development process with minor adjustments.

Build and deployment take place in an agile environment which includes the following technologies:

– Cordmedia 8 with blueprint as the basis for development

– Maven as a Build Tool

– Jenkins als Continous Integration Tool

– Docker as virtualization technology in all environments (Dev, Stage, Prod)

– Mesos / Marathon as cluster solution and orchestration for Docker containers

– Zookeeper for cluster management

– HA Proxy als Loadbalancer

– Bamboo as auto configuration tool for HA Proxy and Apache Mesos

– Weave Network as a virtual network of Docker containers

From this conglomerate of technologies, we have created an environment that is designed to provide the best possible technological support for the advantages of agile business development. In the coming articles, I will go into the individual components and describe the advantages, especially for the operation of Coremedia Enterprise Content Management. To get one thing straight: the implementation is complex and has a steep learning curve for both administration and development. It requires a change in thinking, the willingness to learn new things and partially changing the way you work as a developer and administrator. But the effort is definitely rewarded; more on that later.

The word „release“ makes every developer’s neck hair stand on end because there is a latent fear that something will go wrong. That means weekends full of work and stress. In fact, it is exactly the same for most companies. „Going wrong“ has different impacts depending on the industry. It makes a difference whether something goes wrong in an e-commerce company and products cannot be sold, or whether prices are calculated incorrectly in a company that produces stock market software, or whether a picture gallery is not displayed in a media company. For the companies themselves, however, this always means accepting damage.

For example, in 2012 a software error caused the company Knight Capital to lose 440 million USD and at the same time go bankrupt. In addition to the monetary impact, there is also damage to the company’s image that can occur.

Errors in the software delivery chain do not only lead to the damage mentioned above. In my opinion, another factor leads to even greater problems. The inertia and length of time affect competitiveness. If I test features more quickly and receive feedback from customers, I can also optimize faster and better. Does my sales funnel work better with variant A or variant B? Is the red button better or the blue one? Does headline A lead to a better conversion or headline B? Smaller tests can of course be carried out with A/B tools, but more complex tests can only be done in code.

Structure of the article series:

In part 2 of the article series, I give a definition of continuous delivery before we move on to the specific challenges for Coremedia and the role of Docker, Mesos & Co. in part 3.