In today's market, virtually all businesses hold a significant stake in the successful development of software. Software applications and their development have become increasingly important for all businesses. The efficiency and speed with which software is developed and deployed has become a vital aspect of a company's viability and competitive stance in the marketplace.
A company must be able to adequately respond to customer expectations for better applications with more rapid, responsive, and reliable deployments and updates in order to stay relevant and competitive. In order to achieve success, an organization must strive for more efficient and effective development and operational processes and environments. With conventional methods, development and operations teams are oriented to work in separate and distinct environments, making collaborative efforts difficult, which in turn can impede the process of deployment for applications to the market. This inefficient model for development and operations teams can put an organization at a considerable disadvantage in an increasingly competitive market.
One possible solution to the inefficient, conventional model is to implement a DevOps strategy. DevOps is an approach to development and operations, integrating both teams into the overall process with the aim of more rapid deployments. DevOps stresses collaboration, integration, and automation by placing emphasis on the cooperation between software development teams and information technology operations teams with the intention of providing a more efficient and advantageous development process. Think best practices for IT operations and software development.
DevOps integrates developers and operations teams to improve collaboration and productivity.
The DevOps approach seeks to more efficiently meet the needs required to effectively deliver software to the market. This approach can improve the frequency of deployment, leading to a more rapid time to market. It also seeks to alleviate common issues that can arise with new software by shortening the time needed to develop new fixes and patches for existing software.
Difficulties in Conventional Environments
In order to better understand the need for this new approach, we must first consider some of the issues and difficulties that can occur in a more conventional environment. These two situational examples illustrate these difficulties and provide a clearer picture of what a DevOps approach aims to help alleviate and correct.
The software developer’s dilemma. First we must consider the software developer. The developer might work for a company whose success is dependent on its ability to bring new and innovative applications to its customers faster than its competitors. The developer works to write code for new products, new features, security updates, and bug fixes. Unfortunately, the developer sometimes waits several weeks for their work to be placed into production. This delay increases the pressure of staying competitive and relevant because some of the competitors are able to deploy new products and features at a significantly faster rate. In addition, this delay can make it very challenging for the developer to manage both the code that is pending to be pushed into production and the development of the next feature that they are responsible for producing.
When the developer's code is finally deployed into the production environment, occasionally unforeseen errors or problems occur. This most often occurs because the developer is focused on writing code for his development environment, which might not be identical to the production environment, causing a disconnect in the process of deployment as a whole.
The system administrator’s challenge. Now one must also consider another side of the production process, the system administrator from the operations team. The system administrator is responsible for maintaining and assuring the uptime of the production environment. The number of servers that they administer is at a potentially constant rate of growth because their company continues to seek to launch new products, and customers are consuming more of their services. This increase of servers has caused some challenges for the administrator.
The tools and methods that this administrator used to utilize for administering a smaller number of servers might not be as effective when administering a much larger volume of servers. This challenge affects how new code is deployed in their production environment. Usually when new code is released, it takes some alterations to fit into the production environment. This is why the administrator requires code deployments to be scheduled ahead of time and allowed only on a limited basis within a given timeframe. Once new code is actually deployed, it is the administrator's responsibility to diagnose any errors or problems caused by these changes.
You need a change in the mindset of the two groups that need to work more closely together.
Often the administrator may experience difficulties and obstacles caused by this disjointed environment, lacking collaborative opportunities for sharing these responsibilities between the operations teams and the development teams. In a more collaborative environment, these two teams work together to avoid these issues earlier on, leading to fewer bugs and errors in the final software product.
What if the developer and the administrator worked better together, thought more alike, broke down barriers, and shared responsibilities? This would require them to change their mind set on how development and operations ought to work. These are the foundational practical issues that necessitate a broader systemic approach to workplace productivity and efficiency. This is where DevOps can be best utilized and implemented. DevOps integrates developers and operations teams to improve collaboration and productivity by automating infrastructure, automating workflows, and continuously measuring application performance.
In a work place more DevOps oriented, DevOps would place more focus on automation, from code testing, to work flows, and even the provisioning of infrastructure. The team will aim to write software in smaller and more easily managed portions, which can be integrated, tested, monitored, and deployed in a matter of hours. This appraoch could be a welcome departure from past methods requiring larger portions of code to be written over the course of a few weeks to several months before testing and deployment occur. Developers and administrators will also have the same development and production environments based on the same configurations, allowing for a more efficient and streamlined process of production.
Writing small portions of code allows the team to increase the frequency of deployments and improve the time needed to deploy new code. It also enables them to adopt an iterative process to monitor, measure, and improve the code and operations on a regular and consistent basis, as well as improve their ability to more effectively respond to market needs or other factors that may impact software development. Instead of configuring software and infrastructure manually on a provisional basis, the operations and development teams write configuration management code that describes how things ought to be built. As a result, they will have the ability to build infrastructure at scale, to a potentially vast array of servers, in various locations, operating on a diverse range of hardware.
Another difference that can be made with a DevOps-oriented team is the ability to efficiently utilize a source control system to manage, track, and document all of the changes to both the application code and the configuration management code. The team adopts a discipline of application performance monitoring and optimization in almost real-time. This change allows the development team to understand the performance impact of their changes. The ultimate goal is to have a production environment that aims to provide customers with the best experience possible.
Benefits of the DevOps Orientation
When considering the potential benefits of a DevOps oriented team, it is important to take into account the effect this dynamic has on the enterprise as a whole and the interests of company executives. From the perspective of the executive, DevOps offers benefits by allowing the company to increase the rate of software delivery and improve the time to market, potentially reducing the time from several months to a matter of days. This result can offer a crucial competitive advantage in the marketplace. It also allows the company to maintain better business focus by automating their infrastructure so that they can focus on improving other aspects of their business, spending more time on the things that add more value to their organizations. When a company is able to build and offer better products, better customer satisfaction and a stronger position in a competitive market follow.
When taking into consideration how a DevOps-oriented team would actually accomplish these goals in a realistic environment, keep a few practical aspects of this approach in mind. First, you need a change in the mindset of the two groups that need to work more closely together. Rather than the traditional method emphasizing separate and distinct teams working toward separate goals, both the development teams and the operations teams need to adopt a singular perspective. Emphasize the interconnectedness of the two teams and their goals and how they affect the overall production process and the company as a whole.
The second component to this change is the need for new tools and resources. The team will need a tool that allows them to build and test code continuously, a piece of software sometimes known as a continuous integration tool. They will also need a tool for source control and management; a cloud based Git repository would be a practical and useful option for this particular need. This asset allows the team to manage, track, and document all of the changes to their application code and their configuration management code. They will also need new tools for configuration management in order to better manage the server side application and utilities and how they are configured. These tools allow the team to deploy code in a more automated fashion, potentially across several different servers, in many different locations. The team will also require tools that help them continuously measure the performance of their environment and application.
Generating, reading, and analyzing system and application logs is exceedingly helpful for monitoring an environment. Now that many environments have hundreds or even thousands of servers, new tools can monitor web applications that run in a cloud-based environment in real-time, to better and more efficiently make sense of all of this data. This will allow the team to understand how the entire application is performing overall and help them to identify points of weakness or performance issues that need to be addressed.
DevOps Brings Innovation
DevOps is a new approach that can help software and development organizations bring innovations faster and allow organizations to be more efficient and responsive with business needs. This strategy promotes collaboration with development teams and operations teams, which can improve the quality of software development and allow more frequent and rapid software releases. Adopting the DevOps approach requires organizations and teams to adopt a new mindset, utilize new tools, and apply new skills. The ultimate goal of this approach is to provide both a development and production environment that encourages and fosters more collaboration with an emphasis on better and more efficient practices for innovation and growth. This approach not only impacts the productivity of the development and operations teams, but will also affect the company and its place in the market.
Brad Egeland is a business solution designer and IT/PM consultant and author with more than 25 years of software development, management, consulting, and project management experience, leading initiatives in manufacturing, government contracting, creative design, gaming and hospitality, retail operations, aviation and airline, pharmaceutical, start-ups, healthcare, higher education, non-profit, high-tech, engineering, and general IT. Brad is married and a father of 11. He lives in sunny Las Vegas. Visit Brad's website, follow him on Twitter, connect with him on LinkedIn, and like his page on Facebook.