DevOps: The Next Stage of Development and Operations
September 27, 2022
DevOps is a collaborative approach to creating enterprise applications that brings together software development and IT operations. In a general sense, DevOps is a philosophy that promotes better communications and collaboration between software developers and IT operations groups within an organization. In a narrower sense, DevOps describes the iterative process of software development and the programmable infrastructure, deployment, and maintenance of enterprise applications.
DevOps has proven itself as an efficient approach to developing and maintaining business-critical operations, but software development and IT operations didn’t always collaborate. Development and operations used to be siloed functions, only coming together at the end of a development cycle to determine how to test and deploy new applications.
The shift to DevOps has made enterprise development and maintenance easier and faster, allowing organizations to adapt to changing market and operational needs. Understanding the evolution of DevOps offers some important reminders about the need for operational agility and how collaborative development can give you a competitive edge.
The Classic Role of Operations
The need to unite development and operations directly results from the evolution of computing architectures. When I started my career as a Systems Manager, the “system” was an HP3000 980/100 minicomputer that took up an entire room. The 100 in the model number indicated that the system had a single processor, but it was used across the company to support sales, accounting, and the warehouse; approximately 60 users connected to the server via dumb terminals.
Operations was responsible for load balancing, online backups, maintaining failover systems, and more. Operations also was responsible for keeping software up to date, which was no small feat. Software updates required bringing the system down, installing upgrades, and testing the systems, a process that could take hours in the middle of the night. And maintaining software meant monitoring and managing applications, database tuning and replication, job scheduling software, and updating the operating system.
These days companies rely less on in-house servers and instead use cloud technology for data storage and processing. However, some companies still manage their data assets in the same fashion.
Applying the Software Development Life Cycle
One of the biggest steps forward in enterprise software is the advent of the Software Development Lifecycle (SDLC), which lays out a strategy for enterprise software development and maintenance. The stages in the SDLC include:
- Plan – Gather information and write the specifications for what’s needed.
- Design – Create wireframes or sketches of the screens (i.e., the user experience or user interface) and create a design for the UX/U Development – Actually coding or writing the application.
- Test – Once completed, perform quality assurance tests on the application.
- Deploy – Once testing is completed, give users access to the application.
As you may have noticed, the cycle ends at deployment. However, that’s an oversimplification of a complicated process. Deployment can introduce a myriad of issues, from bugs that prevent the software from running on the production environment, to inability to scale to meet user demands. When problems arise, deployments need to be rolled back and developers have to troubleshoot what went wrong. This can be a huge challenge for developers unfamiliar with the setup of the hosting or production environment and lead to inefficiencies and wasted time.
Merging Development and Operations
Enterprise applications have always been driven by both developers and operations. The developers are responsible for creating the actual software while operations manage the hosting environment and supporting technology. In the past, this has led to conflicts.
If development and operations don’t work together, the applications may not perform as needed. Software developers may not consider the hosting environment. Operations may not understand how the software operates in the hosting environment to support the type of use and load. Updating enterprise applications can be even more challenging, especially if development and operations are from different cultures.
DevOps solves the problem by combining development and operations into a single team process. The software and IT teams work together to implement an extended version of SDLC. With DevOps, the process changes:
Most of the old SDLC process takes place before coding, building, and testing. Everything following application testing is part of normal operations functions. With DevOps, you have one team that works together instead of two. The concept is that you have a cohesive team with a common toolset, making it easier for the processes to flow from one to the next. Developers consider how an application needs to be packaged and released as part of their process. Standardized tool sets help automate the packaging and deploying of an application in a cloud infrastructure. Applying technologies like containerization standardizes how the application will run.
The Benefits of DevOps
DevOps makes application development and maintenance more efficient. Software developers can focus on coding. DevOps engineers concentrate on packaging, deployment, and application maintenance, so the developers no longer have to struggle with bug testing when deployments fail. They can focus on coding.
There are several benefits to adopting DevOps as an application development methodology:
- Better application stability with fewer end-use bugs.
- Improved software performance with better response times.
- A more reliable infrastructure, since the application is developed for the infrastructure and the service can be set up for redundancy and even self-healing.
- Faster deployment since the packaging and release of new versions can be automated, making it easier.
- There is a shorter recovery time when problems arise since the system uses cloud-native monitoring tools.
- Better use of development resources since developers can focus on application development without worrying about deployment and maintenance.
- Fewer human mistakes since the packaging and deployment of applications are automated.
Embracing DevOps is as much about embracing the DevOps philosophy as it is about new methodologies. DevOps is about continuously delivering better applications through collaboration, automation, integration, and ongoing testing and monitoring. Implementing DevOps is not a trivial task. It’s a cultural shift to a new way of developing and deploying software that requires a talented team and solid commitment. But organizations, especially those who are not technology companies, don’t need to do all the work themselves. Companies can gain all the benefits by outsourcing DevOps and working with professionals who already have the culture in place.
It feels like there’s a new technology buzzword every few months, which can make it hard to determine which areas to invest in. But when it comes to DevOps, the benefits are real and tangible. It’s not a matter of if DevOps will become the new standard for development and operations, it’s a matter of when.
Stuart Smith, Product Engineer, has been working as a technology professional for about 30 years. He got his start working in systems operations/systems management and then moved on to software development. He has a diverse history with technology working with software applications and systems ranging from avionics, web applications, disaster recovery, license plate recognition, content management, and systems monitoring.