Authored by Ron Cadwell, founder and CEO of phoenixNAP. Prepared for publishing by the Editorial team.
Despite the widespread adoption of DevOps, it is still a relatively controversial idea with plenty of debate on the best practices for implementing it. Here at phoenixNAP, we have made the leap and never looked back, all in the pursue of developing a superior product – Bare Metal Cloud.
And for all those still on the fence about embracing DevOps, I will explain why we did it, the steps we took, and what we gained.
What is DevOps?
DevOps is primarily a set of organizational principles that try to bridge the gap between software development (Dev) and operations (Ops) personnel to provide more efficiency and transparency in the software-development process.
DevOps is the programming equivalent of “if you cook, you wash up.” In a DevOps environment, the teams that develop software are also responsible for production support – essentially end-to-end ownership.
This ownership incentivizes developers to make robust solutions that work well instead of churning out buggy code that causes problems further down the line. DevOps encourages developers to care about how their software operates, and operations to care about how the software was developed.
Why We Transitioned to DevOps
Making such a fundamental change is a challenging endeavor for any large organization. There was skepticism and resistance, but in the end, we decided to implement DevOps for two main reasons.
To Truly Understand the Requirements of Our Customers
We anticipated that future workloads will require infrastructure built for DevOps teams, and we wanted to better understand their point of view and requirements. To support DevOps teams, we needed firsthand experience with the tools they were using and the challenges they faced.
We decided to effectively reverse engineer a product for our clients by mirroring their organizational structure and way of thinking. Our primary goal for to make Bare Metal Cloud the go-to infrastructure for DevOps teams.
To Optimize the Development of Our New Flagship Product - Bare Metal Cloud
One of our long-term goals was to develop a cutting-edge cloud infrastructure service and bring it to market against stiff competition. To do that, we needed our development pipeline to be faster and more efficient, but without a significant increase in manpower or cost. The only way forward was to streamline our development cycle and increase the frequency of quality updates and features.
- Automated server provisioning in less than 2 minutes.
- Server deployment and management through a customer portal, API and CLI.
- Fully cloud-native infrastructure.
- 30+ pre-configured server instance types.
- Integration with popular Infrastructure as Code tools like Terraform, Pulumi, Ansible, and SUSE Rancher.
Benefits of Transitioning to DevOps
DevOps offered us distinct advantages in most parts of the development and production chain. Here are some of the benefits we saw from adopting the DevOps philosophy:
1. Quicker Deployment
Traditional software development teams operate in sequential phases and depend on other organizational units like operations or QA testing to finalize a product. In practice, software updates must pass multiple teams in several stages, which, if coordinated poorly, cause unnecessary and costly delays.
On the other hand, DevOps teams don’t suffer from this issue, as all stages of software development are handled by a single team and daily communication and cooperation do not pose an issue. A feedback loop of continuous development, testing, and deployment keeps the team focused on all parts of the development cycle.
2. Less Friction in the Work Environment
Software development and operations teams often have different perspectives, goals, and even competing performance metrics. We all heard stories and jokes about the rivalry between Dev and Ops. However, all jokes aside, the rivalry can cause friction and slow down production.
At phoenixNAP, implementing DevOps eliminated this divide by placing all the production teams under one organizational umbrella whose performance we judge holistically.
Both a requirement and a reward of DevOps, transparency is the result of better communication and less friction in the work environment. All team members work towards the same goal, so it is in everybody’s interest to share information and be as transparent as possible.
4. Automation of Repetitive Tasks
One of the core DevOps principles is automating as much as possible. By reducing the amount of repetitive manual tasks, automation gives engineers more time to focus on higher-value projects and essential goals while directly reducing management and production costs.
Whatever we learn automation-wise, we try to incorporate into Bare Metal Cloud and provide automation functionalities to our customers.
5. Automation Leads to Innovation
Thanks to automation, our DevOps engineers have the time and freedom to test various scenarios and implement custom configurations to identify best practices which are then reverse engineered into BMC.
6. Lower Production Costs
Ever since we transitioned to DevOps, we saw the cost of a release decrease. This is not something we expected, but it is a welcome result.
7. Faster Response to Client Demands
We maintain a Slack channel to communicate with clients directly. We foster a vibrant community where customers and developers can ask questions or request new features. DevOps has given us the ability to respond to feature requests more quickly and go from idea to prod in record times.
Tips for Transitioning to DevOps
A shift to DevOps is set for failure if a company doesn’t fully commit to the change. Below are our tips for all organizations transitioning to DevOps.
Create Self-Sufficient Teams
The basic unit of the DevOps environment is a self-sufficient team with a wide array of complementary skills. They need to be able to deliver a project from start to finish without relying on people outside the group. This self-sufficiency enables a DevOps team to tackle issues without micromanagement and delays.
Create an Iterative and Efficient Software Development Cycle
Relying on “big bang” events to push updates and projects live increases the chance of unforeseen technical issues. Instead, take advantage of one of the core strengths of DevOps – iterative and gradual implementation, testing, and review. A well-planned DevOps pipeline guarantees the software goes live on a strong foundation.
Embrace the Culture
DevOps is more than just tools and communication – it is about changing an engineer’s mindset from “just doing their job” and being a cog in a machine to being passionate about the software they are creating. But that passion can only come from seeing a project through from start to finish and having control and responsibility over its direction.
Test Your Progress
Test your progress during your transition to DevOps. For example, you should see shorter times to market. Test the velocity and if you are not seeing features being built faster, find out why.
Track the team’s morale. People should show passion and be motivated to continue the transition. DevOps needs to be embraced by teams, hence, it is essential that the entire team is on board with the change.
Learn more about which DevOps metrics you should be tracking.
Implementing DevOps has facilitated innovation in our company and empowered developers to do what they do best – without distractions and politics. I have no doubts that DevOps is the next logical step in organizing a team of software engineers, but I would argue that DevOps signals a broader shift in the way we work.
Instead of producing anarchy, doing away with rigid hierarchy and specialization has empowered people to take ownership of their success and failure and ultimately be more productive. I believe DevOps will continue to gain popularity, but I also expect similar echoes implemented across other sectors outside of software development.