In “Contain Yourself: An Incremental Adoption of Modernization,” Petr Novodvorskiy and Dan Jones share some chapters from Skytap’s own app modernization story, specifically those around how we successfully broke up several monolithic services into microservices using Docker and Kubernetes. Petr and Dan presented this session at CoreOS Fest 2017 in San Francisco.
When we hear the word “customer,” we often think of the users of an end-product, but in software, customers may be far further upstream in the software development and delivery process. Skytap’s tools team, who largely drove our container adoption initiatives, recognized that their direct customers—Skytap’s development teams—were dealing with a number constraints and inefficiencies around Skytap Cloud, a complex distributed application deployed across several global regions. And it was the tools team’s customer-first attitude and approach that played a large role in the successful adoption of such a transformative technology like containerization.
What Does an App Development Customer-first Attitude Look Like?
Skytap’s tools team understood that while they believed introducing Docker and Kubernetes would improve the lives of their customers, they would need to change more than just the way developers worked—they would have to change the way they think. This wouldn’t be an overnight change, but one of small, incremental changes over time. By first working to containerize only small, stateless, and immutable services, and ensuring that new tooling would harmonize with, and not replace existing tools, they began to get buy-in from key players in the early days of their efforts. This approach created a foundation of trust that not only helped containerization efforts get off the ground, it also got Skytap’s developers comfortable with teaching and encouraging their peers how to scale their adoption to additional components. Buddy systems, help documentation, and support channels were also all put in place as additional helpful resources.
What Mistakes Can this Approach Help You Avoid?
A customer-first attitude may sound easy enough to adopt; most teams, after all, are dedicated to delivering high-quality work to their customers, but there are a number of guiding principles that development teams can adhere to ensure transformative app modernization efforts don’t end at good intentions alone. On top of not trying to change “everything” at once, Petr and Dan talk about how failing to underestimate the scope of what’s changing, from code, to state, to data—can result in short-lived, transient technology choices that are almost guaranteed to be more difficult to replace in the future. Not only does your software grow more complex every day, earning invaluable customer buy-in to embrace future changes after a previous negative experience may be hard to come by if not impossible.