Netflix has always been a leader in adopting technology and processes. Go to pretty much any technical conference, summit, or meet-up and you’ll find someone from Netflix’s engineering team presenting on the leading edge technology or process they’re implementing or have implemented. Last week, Netflix announced in their blog they’ve completed their cloud migration for their streaming service and they have sunset the final parts of the application running in their own data center. This may not be all that newsworthy but the lesson here is, even for an application we think of as "born in the cloud" it took them seven years to complete the project.
Fully shifting from on-premises systems to cloud-based service delivery takes discipline and time.
According to Netflix’s Yury Izrailevsky, Vice President, Cloud and Platform Engineering, "Moving to the cloud is a lot of hard work." This may sound obvious, but I hear time and time again statements from company leadership to the effect of "this fiscal year we’re moving everything to the cloud."
"Everything" here refers to decades-old traditional systems that are not architected for the cloud, have a waterfall-type development and change process, and require a lot of manual effort to deploy. Essentially, their apps are incongruent with the cloud on all dimensions.
Mr. Izrailevsky shared the approach at Netflix: they attacked both the process front as well as the architectural front. They retooled their processes to be aligned with DevOps and continuous delivery. They rearchitected their application from a monolithic blob to hundreds of microservices. They also had to change the way they made decisions and funded projects. It required new systems and new skills for teams to learn.
There are important lessons we can take away from Netflix:
- First, you are not going to migrate all of your business or mission-critical applications to the cloud in a single year. Conduct a review of your application portfolio and prioritize the applications you want to migrate to the cloud. It’s going to be hard work and it will be better to establish a cadence for reviewing progress than setting an unrealistic date for completion.
- Second, moving to the cloud is more than just moving the application, your processes need to change, including your funding models. You will need new processes for how teams operate. Agile, Lean, and DevOps are all good candidates and you will need to consider what will work best in your culture. You need to implement tooling to support the new process. Configuration management tools like Puppet and Chef. Continuous integration and deployment tools like Jenkins and Travis CI.
- Third, moving applications as-is to the cloud moves all of the existing problems along with them – you need to rearchitect. You need to break up the monolith into micro-services and explore different types of data technologies such as Redis, Memcached, and MongoDB.
The recurring theme in all of these lessons is to be patient and methodical. Netflix has a lot of extremely talented people, a service model seemingly built for the cloud, and it still took them seven years. Don’t set your team up for disappointment and failure by claiming you’re going to do it in a year. Focus first on process, then on technology, and then iterate on both. Remember, this is hard work, and a lot can and will go wrong. Learn from the mistakes, keep pushing forward, and enjoy the small victories your team can tally on the journey!