DevOps – Delivering Business Value
DevOps, or software development and operations, is a culture or practice emphasizing collaboration of software developers and information technology support personnel while automating the process of software and infrastructure changes. A DevOps environment is based on a culture of rapid software build, testing, and release. DevOps processes encourage frequent and more reliable software releases spanning the entire delivery supply chain. Benefits include improved deployment frequency, which can lead to faster time to market, lower release defects, shortened lead time between fixes, and faster recovery time.
Close collaboration between software development and operational teams throughout the entire system service lifecycle, from design through development to support often fills in gaps and drives rapid product iteration, much like Agile development processes. DevOps is also characterized by operations personnel making use many of the same systems and techniques as developers for operational support. Those techniques can range from using source control processes and software to automated testing to participating during the Agile development process. In addition, DevOps practices ensure that the enterprise development environments, physical environments, and processes are set up to deliver new builds into production as rapidly as possible, requiring tight integration of what have typically been separate functions.
Agile software development methodologies are an alternative to traditional waterfall development frameworks. Waterfall includes step by step sequencing and phase gates for software development project management. On the other hand, Agile development methodologies help teams respond to unpredictability through incremental, iterative work processes, known as sprints. Agile methodologies are an alternative to waterfall, or traditional sequential development. Further, extending Agile development methodologies into the “Run-The-Business” operations delivers more tightly coupled system development and operational processes and faster product development and improvements. An Agile DevOps culture provides opportunities to assess the direction of a product throughout the product lifecycle. This is achieved through regular short work efforts, known as sprints (iterations), at the end of which teams must present a potentially shippable product increment. By focusing on the repetition of abbreviated work cycles as well as the functional product or version they yield, agile methodology is described as “iterative”. A DevOps culture encourages frequent business collaboration to better understand, change and refine business requirements. Rapid prototyping greatly improves the process of business alignment and speed of business requirement definition. Maintaining a tight feedback loop with the business user community is key to successful adoption of a DevOps culture. A tight feedback loop can be facilitated by online user feedback forums, vBulletin boards and regular meetings/open discussion with key users and stakeholders.
Cloud computing and virtualization are upending the traditional application development lifecycle and organizations. Cloud enables significantly faster cycles of application management, which are imposing great change on IT organizations. The critical foundation for the technical capability that cloud computing offers, automation, also requires accelerating the application lifecycle while significantly altering traditional DevOps processes. Additionally, cloud computing forces enormous technical changes in the application architecture. Much higher scale and load variability, higher performance expectation and new system costs are imposed by cloud computing. In addition, cloud computing’s automation drastically reduces infrastructure provisioning timeframes. Today, it is trivial to obtain cloud computing resources in minutes instead of the weeks (or months) it used to take to obtain resources. In a cloud environment, it is clear that today’s lengthy infrastructure provisioning timeframes are driven by organizational processes, not the underlying cloud infrastructure resources.
Another key tool of an optimized DevOps organization is SOA. A service-oriented architecture (SOA) is an information technology architectural pattern in software design in which application components provide services to other components via a communications protocol, typically over an IP network. The principles of service-orientation are independent of propriety vendors, products or technologies. A service is a self-contained unit of functionality, such as retrieving an online bank fund transfer and may be discretely invoked by an application. SOA combined with web services and XML makes it easier for software components on computers connected over an IP network to cooperate. Every computer can run any number of services, and each service is built in a way that ensures that the service can exchange information with any other service in the network without human interaction and without the need to make changes to the underlying program itself. SOA is a foundational tool in the DevOps organization.
Security & Monitoring
DevOps provides a significant opportunity to the way information technology security controls are implemented and ensures they become business enablers. Security participation on the DevOps team is essential to making system security a by-product of everyday work processes for DevOps. DevOps integrates a number of functional areas, including information security, into the final work product. The major difference in DevOps is everyone’s input is brought in early in the cycle then automated ensuring short, predictable version release time and quality. This process ensures security is no longer the bottleneck in the development process. Rather, security teams gain detailed visibility into the computing environments and accelerate security risk assessment. Business goals and security are better balanced in a continuous software delivery model ensuring business and technology alignment. Standardized security build configurations enabled rapid builds. Application log outputs are one of the most easily implemented types of monitoring because running code already has output. If applications and services are distributed, centralized logging should be included to provide the full benefit of monitoring that is essentially already in-place. Easily traceable exceptions in a production environment dramatically reduce both downtime and support costs.
An optimized DevOps organization must have a great set of tools to succeed. These applications are based on years of experience in the IT industry, dealing with development and operations. From building a petabyte-scale, data analytics infrastructure, many of these tools and processes has become key components of successful organizations. These tools have been carefully selected:
- MS Visual Studio Test – Unit Test Automation
- SoapUI – Automated functional, regression, compliance, and load tests.
- Nessus – Security Vulnerability Scanning
- Nagios, Cacti, Ntop – Monitoring
- GIT – Version Control Automation
- Puppet – Scalable Infrastructure Automation Management
Organizations can accelerate application development, increase operational efficiency and accelerate time to market using DevOps practices. Organizations can show customers, in near-real time, what software developers are producing. This almost-immediate feedback loop aligns what is being produced with business needs and reduces time to market for products. Code quality is improved, downtime is reduced and productivity is increased delivering true business value.