Productize your Infrastructure
The sudden uptick & interest in “devops” over the past few years is driven by Cloud. With a capital C. Historically, operations built out the infrastructure and then slapped the application on top of it that the developers had produced. As your application gets bigger and so does your infrastructure, things get harder. Welcome to the Cloud Forcing Function.
In a world where people talk about Infrastructure-as-a-Service, the real key to growing at scale is Productizing your Infrastructure.
What do we mean by Productizing?
Let’s start with the definition of a product. Put simply, a product is something that is manufactured for sale or distribution. However, when we talk about building software, there are a lot more implications.
- It’s designed
- It can be repeatably built and delivered
- It has tangible features
- Each component is tested and has some level of quality
Put another way, the way we build software systems should also be the way we build the Infrastructure. Think Systems Development Life Cycle
Building your infrastructure should be approached no differently to the way we build software.
Quite simply, get out of the business of doing stuff and into the business of building stuff.
Symptoms of not having products
- Repeated requests for the same item over and over
- Making direct changes to live running servers & network devices
- Frequently having to revisit issues that you thought you had resolved
Paul Graham, an extremely prominent writer & startup accelerator founder, talks specifically about the idea of startups being high growth focussed on scale and says…
To be a startup, a company has to be a product business, not a service business. By which I mean not that it has to make something physical, but that it has to have one thing it sells to many people, rather than doing custom work for individual clients. Custom work doesn’t scale.
Productize your consulting work
Simply building automation around common tasks is not the same as building a product. Automation is internal to you. You need to have something that you hand to your customers and step back from.
- Start managing your Work in Progress
- Start identifying work that is frequent and repititve
- Distill one piece of work down to the smallest possible piece that can deliver value
- Build software to deliver that value to a customer
- Wash, Rinse, Repeat…