There are obviously benefits to be found in running applications inside of a Docker environment, shifting into cloud-based technologies and simplifying monolithic systems by factoring them into simpler, containerized microservices. If there weren't, organizations wouldn't be so enthusiastically making these changes. But as with any transition, there are pitfalls, which is why mitigating risk is an important part of any migration, either into the world of software containerization or cloud computing.
So how exactly does an organization mitigate risks when taking an existing infrastructure that is running a set of production applications and port everything into the cloud, or squeeze everything into a set of Docker containers?
Moving toward containerized mircoservices
"The first thing is to always establish what the goals are of the migration," said Daniel Bryant, CTO of Specto Labs, emphasizing the fact that organizations need to understand what they are doing, why they are doing it, while at the same time, being aware of the benefits and drawbacks to taking alternate approaches to cloud computing and deploying containerized microservices.
"Some people literally want to lift and shift," said Bryant. That is often a motivation for moving into the cloud, as organizations want to strip themselves of the burden of maintaining large datacenters, or even simply avoid spending millions of dollars upgrading legacy servers.
Daniel Bryant, CTO of Specto Labs
Or perhaps the goal is to simplify the maintenance and enhancement of existing SOA applications, a motivation that commonly drives the adoption of microservices, and often the adoption of container-based architectures that use technologies like Docker and Kubernetes. Understanding the underlying goals that are motivating the move to cloud computing or containerized microservices is important, but equally important is being able to objectively know if the goals have been achieved when the migration is done.
Validation and successful Docker containerization
"Always understand the goals, but once you have the goals, map them into something you can validate," said Bryant. Validation can manifest itself in a variety of equally valid ways. Leveraging existing Acceptance Test Driven Development (ATDD) or Behavior Driven Development techniques is one mechanism for validating the fact that a cloud migrated application is behaving as expected. To complement ATDD and BDD acceptance testing, tools like Twitter's Diffy and MySQL's Compare ensure that an application's inputs and outputs at both the HTTP and the database level have not changed during the course of the migration. "You want to put these measures in so that you can constantly assert that you are providing the same functionality and parity."