Clutch spoke with Ronak Patel, CEO of Sunflower Lab, about DevOps, its meaning, and its value to companies.
Definition of DevOps
In an article Clutch published in January, we described DevOps as a concept centered on efficiency: "increasing communication and collaboration between development teams that write the code and operations teams that implement the code, to streamline deployment and reduce error."
Do you agree with this definition?
I agree with the definition. DevOps is a compound of development and operations. It’s a set of engineering practices that automate the processes between the software development teams and the IT operations team. Historically, these two teams have lived and functioned in silos. The goal of the DevOps is to improve the collaboration between the two teams.
With DevOps, you work as one unit to get things done. You have a shared responsibility to get things done, rather than, “This responsibility belongs to this department or team, not us.” With DevOps, It takes much less time complete the pipeline from code development to production.
What are the main components and advantages of DevOps?
There are five main components of DevOps.
1. Continuous Integration: requires developers to frequently check-in their code. For each check-in, they run an automated test to detect and correct any problems.
2. Automated delivery pipeline: Pipeline automation is a big component for DevOps. A pipeline starts with taking stable code from your data repository and packaging that code into artifacts. These artifacts get promoted to various environments such as development, QA, UAT, and ultimately ends in the production environment.
3. Configuration management: Configuration management automates the configuration of operating systems, applications servers, database connections pools, and shared drives to reduce the errors common with manual configuration.
4. Continuous Monitoring: Periodically and automatically checking the health of your application and reacting timely manner to any errors.
5. Infrastructure as Code: Developers and system administrators use code to automate managing servers of your business infrastructure using a software-based interface.
DevOps increases the productivity, communication, and the quality of the deployment and software. Development becomes fast, less prone to errors, and stable. Businesses can focus on integration and innovation, rather than manual processes. DevOps also enhances customer experience by increasing delivery speed.
Is DevOps a cultural movement or a methodological trend?
DevOps is the combination of cultural movement and a new set of methods and tools that increase an organization’s ability to deliver applications at a rapid pace.
Transitioning to DevOps requires the team members to communicate more frequently to each other and share more responsibilities. Team members have to go beyond their stated roles to fill the gap between the two teams. In my mind, this represents a change in mindset, which is a cultural shift. Workflows are more collaborative and more efficient.
From a methodological standpoint, DevOps optimizes traditional methodology and tools that can be time consuming, inefficient, and slow. DevOps practices allow for
- Continuous integration
- Continuous testing of software
- Continuous delivery
- Automated delivery
- Automated continuous deployment and monitoring
Will DevOps practices become the business norm in the near future?
I don't see think it'll be too long before DevOps practices and tools become mainstream in most organizations. We are much closer than we think right now.
Sometimes organizations say that they don’t do DevOps, but in reality, they have adopted some of its central components. DevOps is not an “all or nothing” concept. An organization can take one component and master that and then move to the next one. It’s a continuous process.
I think more organizations now understand the advantage of DevOps, but we still need more education on the advantages it can bring. Once companies realize the benefits, they will be more aggressively adopt DevOps practices.
It is an extension of the Agile methodology. Many of the practices are part of the Agile practices; i.e., continuous integration, continuous testing, frequent checking, and delivery of software. With DevOps, you extend that beyond the development team to the operations team.