The consumer appetite for instant gratification is as high as it has ever been. People want to send and receive money instantly, to have their groceries delivered in an hour, and to stream the latest shows without interruption. Across a number of industries, companies have attempted to cut out the middleman to deliver services as quickly as possible.
To meet this increased demand, companies have had to change how they work. More specifically, the traditional silos between engineering and DevOps have had to crumble. Enter: enterprise self-service DevOps.
In this article, we’ll break down the meaning of self-service DevOps and look at how you can begin reimagining your DevOps workflow.
What is self-service in DevOps?
Prior to ride-sharing apps, there were taxis. You went outside and hoped that a car appeared, or you called a service, talked to someone on the phone, and waited for a car to arrive at your location. Today we all know this process sounds and feels obsolete. Instead, we’re used to summoning a car whenever we’re ready to leave, and in most areas, we’re used to the car appearing in a matter of minutes.
Before DevOps self-servicing, software engineers typically built an application or a product feature and then waited for the IT operators to “dispatch” it. With self-service DevOps, however, engineers are no longer dependent on a separate team of IT operators to bring their product features to life. Instead, DevOps teams can build infrastructure that allows software engineers to deploy updates without waiting for DevOps resources to become available.
As the rate of software innovation has accelerated, it’s become clear that the traditional way of working (where a centralized IT team handled the automated procedures and were the gatekeepers to executing tasks) no longer makes sense. Developers spent time waiting for the operations team to respond to a ticket request and additional time was lost as the operation team tried to make sense of the new feature in the live environment.
This is why, according to The New Stack, tech companies first popularized the idea of DevOps—dispersing centralized IT functions throughout the organization and embedding operations engineers within development teams. While this worked for tech companies, other enterprises struggled to adopt DevOps roles at scale. Services like AWS, Azure, and Google began offering IT services on-demand to help the average company adopt the DevOps model. But self-service DevOps is more than just picking IT capabilities from a menu.
Challenges of establishing self-service in DevOps
Self-service DevOps can break down silos and increase productivity, but, like any process, it can be challenging to implement in the beginning. One roadblock can be an increase in costs. With engineers able to deploy at scale, it’s a good idea to put parameters in place.
According to Stelligent, one way to control costs is to launch smaller instances. That is, use less expensive servers to maintain your infrastructure while also creating and keeping autoscaling policies so that a spike in demand doesn’t automatically translate to a spike in costs. Another strategy is to use mock services instead of always deploying to a live environment.
You’ll also want to ensure that self-service automation doesn’t lead to engineers going rogue. Be sure to design parameters within the on-demand self-service environment that the engineers understand. Stelligent recommends thinking about a one-button deployment, with distinct options and a failsafe built into the pipeline. Having strict parameters in place also helps mitigate security concerns.
Benefits of self-service on digital transformation
Bureaucracy and digital transformation rarely go hand-in-hand. As organizations aim to move faster and become more flexible to meet the demands of their customer, teams need to be nimble enough to innovate, launch new products, and try new processes. Creating a self-service DevOps culture is one way to reduce bureaucracy and break down organizational silos.
Self-service DevOps mitigates against the naturally occurring silos that arise within organizations. According to RunDeck, self-service DevOps reduce wait-time to deploy new features, shorten feedback loops, align tooling, and increase labor capacity. By automating on-demand operations, you free up team members to innovate on new projects and better manage both planned and unplanned interruptions.
Traditionally, the operations team was seen as the one responsible for automatic procedures. But by having developers weigh in on operational processes, you create a centralized operations team that reduces engineer wait time and instead allows them to test and iterate on new products that could ultimately boost your bottom line.
Having an overview of your entire cloud environment will make it easier for your development and operations team to stay on the same page. Lucidchart Cloud Insights, for example, automatically generates cloud diagrams to ensure teams use accurate environment depictions during incident response.
How to begin setting up self-service
One of the first ways to set up self-service DevOps is to disperse the responsibility for automated operating procedures among the development team. Ensuring that automated procedures can be used by both the development and operations teams will reduce friction and help eliminate bottlenecks.
RunDeck recommends creating a hub that performs the following functions:
- Creates a rubric for defining and executing automated operations procedures
- Provides defined points of entry for specific users according to your company’s governance policy
- Provides a single source of truth for the environment and systems where the operations procedures will run
Lucidchart Cloud Insights can be the first step to providing a centralized view for your development and operations teams. Within seconds, you can visualize your entire cloud infrastructure, organized by region or computer instance. You can also import from your different cloud services, including AWS, Microsoft Azure, or Google Cloud Platform.
After creating a central hub, create a software development life cycle to facilitate development and operations teams collaboration. This allows development teams to test the automated procedures early and often before they are widely available and makes it easier for development teams to receive handoffs down the line.
Another way to start implementing self-service DevOps is to identify what RunDeck refers to as anti-patterns: processes that lead to interruptions, waiting, and negative communication between teams. An example of an anti-pattern might be repetitive requests made by engineers to the operations team. By automating those requests you can save time and reduce the likelihood that your operations team becomes frustrated by identical ticket requests piling up.
Another example of an anti-pattern would be the inability for an engineer to fix common problems. Instead of having the right access, they have to contact a colleague to fix the problem for them, even though they may be closer to the code and could fix it more efficiently. By analyzing your ticket queue or getting feedback from employees, you can identify the processes that cause the most friction and begin automating those procedures to create a self-service DevOps culture in your organization.
Self-service DevOps helps companies break down silos and work more efficiently. By automating processes for engineers and leveraging the knowledge base of both developers and operations, teams can work better together and ultimately be more productive.
Automatically visualize your architecture to keep development and operations teams on the same page.