It goes without saying that computing concepts can sometimes be difficult to understand. I think it has to do with their inherently complex and intangible nature. You can’t just roll up your sleeves and put your hands on them, or stare at them until they make sense. Communication about and within this realm often suffers from a lack of good analogies, so I’ll try to create one to explain what the Chef development framework does for our customers.
Imagine your business environment as a home, complete with kitchen, bedroom, etc. And let’s say it’s in North Carolina. Each room is, of course, precisely where you expect it to be, every time you go to it. If you wake up in the middle of the night and need something from the kitchen, you don’t even have to turn on the lights to find your way there. Your home is well-suited to your lifestyle, and you’re very comfortable in it.
So how can software developers like those of us in Datalink’s software solutions group help you when you ask us to transport your house to a lakefront spot on the Salton Sea in California without changing a single detail? Or, when you tell us you want an exact copy of your home on every lakefront in Minnesota? How about when you upgrade the electrical in the garage to 220V, and you want to duplicate that change in every location?
How do we make these changes efficiently? Chef, that’s how. Chef enables us to replicate entire computing environments to any number of locations. A computing environment consists of a host of interdependent components that collaborate to offer a service to an end user. Instead of manually installing and configuring each component, we write a Chef program that does it reliably and in nanoseconds.
When completed, the program is saved in version control. If you later request a change to the environment, we change the Chef program and it updates the environment. If a new customer comes along with similar needs, we employ the reusable parts of the program and write the new parts from scratch.
The DevOps software development method in general, and Chef in particular, are good for customers and software developers because they automate tasks that have traditionally been executed manually. Naturally, this yields many benefits including speed and reliability. The importance of speed is obvious and easy to understand, but the importance of reliability as it regards DevOps is critical and difficult to overstate. An environment that hosts a computer application is not only complex, but very fragile and difficult to debug. Chef helps us reduce this fragility by coding the creation of the environment, so that it’s deployed exactly the same, every time, everywhere.
Xavier G. López
Chef development framework expert