If your business needs are unique enough that you develop your own applications or software, then you’ll know the pain involved with delivering it. Constant bug fixes, gripes about performance, long lead times and technical debt are common, and they’re the stuff of nightmares.
The cloud can make things better, but only if you’re prepared to use it as part of a broader cultural change. Enter DevOps and its relatives, continuous integration (CI) and continuous delivery and deployment (CD). These are new approaches to software development that let you create better software, more quickly, and for less money.
DevOps isn’t a single tool or technique. It’s a culture that brings together different people in the organisation: the developers who write the software and the operations who have to run it (Dev and Ops, see?) These two groups have mostly worked in isolation. That’s why when the sysadmins complain that code doesn’t work, the developers would shrug and respond: “It works on my machine.”
How DevOps works
In a DevOps environment, developers and admins work together to ensure that the code runs properly in production This involves automated tools for testing the software and configuring the machines to run it on. By the time the sysadmins get the code, it should work just as well on their servers as it did on the developer’s machine.
Cloud environments are perfect for DevOps. They are virtual, making them easier to configure. You can set up entire server and networking environments using software configuration files. In a cloud environment, you code your infrastructure alongside your programs.
This makes it easier to create as many new virtual environments as you like using tools like the AWS Service Catalog, which lets you publish new virtual infrastructure configurations to standardise and self-provision them. That’s great for developers wanting new development and testing environments, and it lets sysadmins who create production systems easily for new apps or updates.
Software development in the cloud also brings other benefits. You can more easily develop and deploy cloud-native applications that take advantage of stateless operations so you can replicate lots of identical environments for scalability. You can also consume cloud services, offering you canned services ranging from blob storage to speech recognition via application programming interfaces, meaning that you don’t have to code much at all.
Using automation tools for tasks like testing and deployment also reduces human error and improves security. You can automate a variety of tasks ranging from integrating multiple tests, communicating with developers and logging tasks based on the results, through to predicting and prioritising code issues.
Transform your coding practice
A healthy DevOps culture, underpinned by robust automation, paves the way for a transformation in coding practice. Instead of delivering code every six months, you can use CI and CD to deliver it more regularly. Empowered by automation and standard environments, developers can integrate their individual code additions back into the main code more frequently. Tools test that code automatically and won’t integrate it until it passes.
Instead of spending long periods developing large pieces of code and then labouring to integrate them into the main program, this automation lets developers push new code weekly, daily, or even multiple times each day. However, it still takes a human manager to sign off on the final code.
That paves the way for the next step after CI: continuous deployment. This automates the deployment of the code entirely, pushing it to production when all tests are complete. That’s a risky process, though, that you’d only do when you’re 100% confident in the maturity of your DevOps culture and the CI pipeline that it fostered.
DevOps works best in a flexible, easily automated environment like the cloud, and it can lead to a transformation for your software development process. Adopting it isn’t an overnight project, though. It involves some deep conversations between your developers and the sysadmins to see if they can work together. We always find those happen best over a pint or two. Time for a team-building session or two, perhaps?