DevOps is a term that's generated loads of interest over the last year, yet many people don't fully understand what it actually means. One thing is clear -- as cool as it sounds, DevOps is not some sort of top secret developer militia group. But it is a terrific ideology that can unite a tech team and take your company to new heights.
From the start at 2U, we knew we were going to need to build a scalable, vertical SaaS model to provide a top-notch educational tech platform. We knew our close-knit team would be relying on great communication, third-party tools, and our ability to build on an enhanced infrastructure using reliable automated processes and feedback.
In short, we knew we'd be adopting a DevOps culture. We recognized that as our different departments grew, communication was key for us to avoid the unproductive siloing the DevOps movement was confronting. So we embraced DevOps principles from the start -- before we'd even heard the term -- to get everyone on the same page and create a sense of shared responsibility. That was our recipe for success.
Your DevOps success recipe should be made up of several key ingredients. These are three that should be included as the basis of any DevOps plan:
Rule of 3s: If you're doing something more than twice, you should think about converting it into an automated task. Automation ensures your process is repeatable and reliable, because it standardizes the execution of the task to the best way, the same way every time, without any risk of deviations from peer-reviewed code to improve the process for the whole team.
Automation gives a sense of empowerment, allowing your employees to feel like they own the product, because they can go from end-to-end and see the fruits of their labor without delay. A classic example of a process that needs automation is the deployment of source code to production applications. You could get on each server in your architecture and download the code to it by hand, or even operate all the servers at once using common techniques. But both still put you at risk of fat-fingering a vital command and neither give you a log of changes for your team to review.
Better to put the ingredients of a successful build into repeatable deployment scripts run from a continuous integration server, where everyone can see the results of their work going out to your end-users.
Transparency: In most software companies, the operations teams and development teams are siloed. There isn't enough communication between the two groups because they're only worried about doing their own jobs. Transparency gets employees from these groups to take an intimate look into what the others are doing, improving communications and business processes for all, not just for those in your department.
A common example is the use of a source code management (SCM) tool. When someone runs source-code deployment automation from an SCM, everyone gets a look into what is actually happening and what errors might occur. If something breaks, you have information from a variety of sources, making it easier to fix, while saving a history to see where and why it broke for future review.
Talent: You can't breed a successful DevOps culture without the right type of talent working for you. You want employees who put business needs, efficiencies, and automation before their historical knowledge of how hardware works, and don't draw a line in the sand between IT and developers.
Before digging in to solve a problem, they talk to co-workers elsewhere who may have solved the problem in the past. Above all, they are working with the goal of the entire company in mind, not just the tasks at hand.
Creating your own DevOps culture
A DevOps culture doesn't have to start at the inception of the company. You can instill the mindset of "not just writing code for yourself" into your employees at any time. Identify the needs of others around you, including those with other skillsets and responsibilities. Seek out those who would value the tools you are building, and ask them what they need the tool to do. Always factor in the needs of the business.
Your developers need to be empowered to make broad changes in their environments, and encouraged to automate the processes used to make those changes, test them, and verify their positive business impact before getting those changes out to customers.
The team that trains together stays together -- your teams should constantly cross-train across various departments. Your developers should know how QA departments work, and your IT operations group should be aware of the needs of the developers. Employees in general must be aware of everyone else's needs so they can work in silos but still have the transparency and communication necessary to be productive.
Every chef tinkers with ingredients to taste, but like any recipe, if you stick to the basics you'll be on your way to DevOps success.
Can the trendy tech strategy of DevOps really bring peace between developers and IT operations -- and deliver faster, more reliable app creation and delivery? Also in the DevOps Challenge issue of InformationWeek: Execs charting digital business strategies can't afford to take Internet connectivity for granted.