The Phoenix Project – The Three Ways – The Hello World App
My current company is making a big push to deploy our flagship app in the cloud around the world. This is a suggestion I recently made in a meeting regarding “How” we should start and how we can prevent making the same mistakes we make today in our physical infrastructure.
So I am sitting here reading “The Phoenix Project”, which by the way is a great book, and it is discussing The Three Ways.
- The First Way – Create a fast flow of work that moves from development into IT operations.
- The Second Way – Amplify feedback loops, so we can fix quality at the source and avoid rework.
- The Third Way – Create a culture that simultaneously fosters experimentation, learning from failures, and understanding that repetition and practice are the prerequisites to mastery.
I think these are some great goals we should try and live by when we discuss how we start deploying apps to the cloud. In a previous company one thing we did was started all new application deployments with a “Hello World” app which initially spoke to the underlying persistence tier (mongodb, cassandra, elastic search, etc..). This “Hello World” app was put into a continuous deployment process and releases where cut on a regular basis, even if the release didn’t yet have any substance to it.
As you begin to deploy to the cloud (or other API driven infrastructure), I think that this can really help start us off on the right foot, and also helps us start to implement The Three Ways.
We don’t wait till the last minute to think about deployments (first way), we start thinking about deployment from the beginning and grow our deployment process for each app as part of the app building process.
We amplify feedback loops with our core automation components. By exercising these components from the beginning we can proactively grow our underlying automation layers long before we hit the production deployment date.
The Third Way becomes the culture by thinking about and implementing this process up front. We allow teams to experiment early, we learn from failures, and we can “deploy to prod” multiple times before we even have a customer delivery date.
Obviously there are many other ways we can embrace these principals, but I feel this can start us off on the right foot.