Getting changes into production safely and quickly with continuous delivery (I)

One more year, Liferay Developer Conference (DEVCON) will bring together developers from all around the world to learn about Liferay, our platform, available tools and the people behind the product. The fifth edition of the Liferay DEVCON will take place in the historic Beurs van Berlage in the heart of Amsterdam. Featuring more than 40 in-depth sessions and technical workshops, the three-day Conference is part of the Amsterdam eWeek.

 

This year Rubén Pulido and I will be talking about Continuous Delivery at Liferay. Why have we chosen this topic? Because as software developers, our priority is to continuously deliver software of value to our customers.

What’s Continuous Delivery?

Once your code changes have passed unit and integration tests, you should validate if they work in production-like conditions before delivering them to your customers. Depending on the resources and the time required by these tests (e.g. traffic load, scalability, data update), you can define one or more environments and perform different validations on each. At the end of the line, your application has to be ready for production. This ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way is what we call continuous delivery.

By definition, the put-into-production step in a continuous delivery schema is performed manually. If your deployment to production is performed automatically, then you’d be doing continuous deployment. This choice depends exclusively on your business strategy, since from a technical point of view you’re always ready to release your code.

 

Continuous Delivery at Liferay

As you know, Liferay has moved from a monolithic on premise application model towards a distributed service platform model. In other words, Liferay Digital Experience Platform introduces an scenario of software-as-a-service applications that demand high availability, zero-fault tolerance and shorter release cycles. Many of the applications that Liferay will be presenting in the next months will follow these criteria, and therefore continuous delivery has become a keystone process for us.

So, how are we using continuous delivery at Liferay? Basically, we’ve defined a continuous delivery pipeline for our applications. When code changes are pushed to the repository, the Continuous Integration (CI) server runs tests automatically and on success publishes a snapshot of the application to a distribution repository. The CI server also triggers the setup of the pre-production environments. On every environment, the distributable application is deployed and some specific tests are run. Only it tests pass on an environment, the next one is updated. Finally, if all tests pass in all environments, changes are accepted as production ready. At this point the application is tagged as a release in the repository and after manual approval, the changes are deployed into production.

Implementing a Continuous Delivery Pipeline for Liferay Applications

During our session at DEVCON, Ruben and I will show you how to use a continuous delivery pipeline to release changes in a demo Liferay application quickly and safely. We’ll also provide all the requirements to create a continuous delivery pipeline for your own applications. Don’t miss out and join us this week at DEVCON! See you in Amsterdam!