Docker containers are taking the cloud computing world by storm with many major providers getting behind the technology. So what makes Docker containers so popular? For starters, containers provide application portability between clouds, as well as a way to break applications into distributed components. Additionally, users can manage and scale those containers as clusters.
Step 1: Decompose
Applications are typically complex and have many components. For example, most applications depend on database or middleware services for data storage, retrieval and integration. Therefore, break out these services into their own container through design and deployment. The more distributed an application becomes, the more options there are to scale the application. However, becoming more distributed also means more complexity to manage.
Step 2: Select a base image
As time goes on, enterprises will find more value in these Docker Registry base images. Remember that Docker supports a community of Docker developers, so success depends on users' participation in image management and improvements.
Step 3: Address security and governance
Security and governance need to be a priority; enterprises can no longer add them to the application or containers as a final step. Instead, enterprises must plan security and governance from the beginning, design them into applications and proactively manage them during operations. This is where enterprises need to apply substantial effort.
Container-based applications are distributed applications. Enterprises should update older applications to support federated identity management approaches, which are more helpful for securing distributed applications. To do this, provide each application component and data with a unique identifier that allows enterprises to manage security at a fine-grained level. Enterprises should also add a logging approach.
Step 4: Add code
To create an image, enterprises need to use a Dockerfile, which defines the necessary steps to build the image. Once the image is created, enterprises can add it to the Docker Hub.
Step 5: Configure, test, deploy
Configure the application running in the container so it knows where to connect with external resources or other containers in the application cluster. Enterprises can place these configurations within the container, or use environmental variables.
Testing container-based applications is similar to testing other distributed applications. Enterprises can component-test each container and the container cluster as a whole. Determine how the application is able to scale under an increasing load. If you're using a cluster manager, such as Swarm, test its performance as well.
Finally, deploy the container into production. To proactively observe how the container-based application runs, implement monitoring and management mechanisms. Make sure to turn logging on.
Many applications moving to the cloud are destined for containers. While the migration is a bit more complex, containers protect the application investment and should give it a longer life.
About the author:
David "Dave" S. Linthicum is senior vice president of Cloud Technology Partners and an internationally recognized cloud industry expert and thought leader. He is the author or co-author of 13 books on computing, including the best-selling Enterprise Application Integration. Linthicum keynotes at many leading technology conferences on cloud computing, SOA, enterprise application integration and enterprise architecture.
His latest book is Cloud Computing and SOA Convergence in Your Enterprise: A Step-by-Step Guide. His industry experience includes tenures as chief technology officer and CEO of several successful software companies and upper-level management positions in Fortune 100 companies. In addition, he was an associate professor of computer science for eight years and continues to lecture at major technical colleges and universities, including the University of Virginia, Arizona State University and the University of Wisconsin.
AWS developers don't feel the Docker container love
Docker addresses scalability with orchestration tools
Kubernetes out in front of Docker in container orchestration