Sophia Parafina

Modernizing Java Apps with Docker

[This post was written by Sophia Parafina and Arun Gupta.]

Modernizing Traditional Applications or MTA was one of the themes at DockerCon EU 2017. Traditional applications are typically built a number of  years ago but are critical to business operations. The developer and operational skill set to maintain the application may be hard to find. The code base can be difficult to maintain, if it is available at all. The team that wrote the original app may not even be around. The applications go into maintenance mode, which may mean they are patched regularly for vulnerabilities. Any revisions to the code can take significant number of hours to test and deploy, so updates are infrequent. It can also hold back infrastructure improvements as dependency management becomes a huge pain point.

Java Apps Docker

Any modern application needs a faster delivery time that can adapt to change in the market conditions. The pipeline from pushing the code to a source code repository to the application delivery should be efficient, automated, secure and fast. The application should be able to scale to demand, typically done by horizontal scaling across multiple instances. Portability of the application across different infrastructure becomes key in that case. In case of a failure, MTTR should be short and automated processes should roll back to a previous stable version of the application. This objectives could be challenging to achieve for a traditional application.

That is exactly the gap that is filled by Docker Enterprise Edition [EE]!

With Docker EE, updating an application means uploading a new Docker image with the latest code to a private registry in Docker Hub, remove an existing container and then start a new container using this new image. And this is all done in a secure and fully automated software supply chain. The image is scanned for any vulnerabilities and monitored against leading CVE databases during this pipeline. The application can scale across multiple nodes. Docker EE also gives you portability across multiple clouds.

In this session, we discussed how to modernize a Java EE 7 application running on an old application server. Using Docker, we were able to easily build a new version and deploy to a newer, more lightweight Java EE application server. This was an actual app Arun wrote 4 years ago.

The entire build and app server deployment is done through a single Dockerfile instead of a manual run book process. This is possible because of multi-stage builds. In addition, to deploying the application in a container, we show how to incrementally update the application by replacing the old Java Server Faces client with a Javascript React client by taking advantage of the REST interface in the client.

If you want to try out the process, the application is available in the Dockersamples. You can can also watch the Dockercon EU 2017 session.

Learn more about the MTA program:

, , ,

Sophia Parafina

Modernizing Java Apps with Docker


Leave a Reply

Get the Latest Docker News by Email

Docker Weekly is a newsletter with the latest content on Docker and the agenda for the upcoming weeks.