DevOps Practices: Continuous Integration
In order to reduce the disconnect in the software development process, it is important to pursue a key DevOps practice: continuous integration.
The term DevOps refers to a set of tools and practices that enable software developers and IT operation teams to “integrate” or partner with one another to streamline the software development and delivery process. The concept has been trendy over the years, and for good reason.
By bringing together the development and operations teams, DevOps streamlines the software development process by empowering all stakeholders involved to build, test, and deploy code throughout automatically and frequently throughout the software development lifecycle (SDLC). A study by Deloitte demonstrated the importance of DevOps by revealing that enterprises that embraced the concept witnessed a marked improvement in collaboration (23%), application quality (22%), and time-to-market (20%).
Clearly, DevOps delivers growth, which is an outcome that results from a series of key practices, including continuous integration, test automation, continuous delivery, and rapid deployment. This piece will focus on continuous integration, a practice that encourages collaboration between teams, enables the detection of code errors and bugs, promotes predictable and quick delivery, and increases overall transparency.
Increased Collaboration Between Teams with Continuous Integration
The term continuous integration was first coined by Grady Booch. In his book, Booch writes:
“At regular intervals, the process of ‘continuous integration’ yields executable releases that grow in functionality at every release...It is through these milestones that management can measure progress and quality, and hence anticipate, identify, and then actively attack risks on an ongoing basis.”
The continuous integration process that Booch describes rests upon the regular integration of software developers’ source code into a shared control repository. This process not only enables software developers and other stakeholders to integrate their work with others on the team, but also allows them to build, test, and validate code on a regular basis and, most importantly, in an automated manner that verifies processes and ensures constant feedback.
This leads to better collaboration amongst members on the development and operations teams, as they are able to integrate their work together and ensure better delivery through automated processes. As research reveals, continuous integration “requires a link between development and operations and is thus very relevant to the DevOps phenomenon.” The practice ensures that software developers are not working in isolation; rather, they are collaborating with other stakeholders, contributing jointly to the team’s code base, and constantly building, testing, and validating code in an automated fashion to guarantee both correctness and compliance.
Better Detection of Errors and Bugs with Continuous Integration
In addition, continuous integration also leads to a tight collaboration between development and execution teams. As Booch noted, this allows developers to quickly and easily detect any code errors or bugs that appear in the software development process. With continuous integration, developers execute small changes or tasks, which – combined with frequent testing and verification – allows teams to find and address a series issues, including code errors, bugs, or duplicate code. As you may imagine, this process can lead to a collaboration that is based on both high productivity and improved team empowerment.
Continuous integration allows software developers to detect these issues, as well as address them quickly in the process. Because the practice promotes implementing changes in small batch sizes and checking these changes on version control frequently, this provides stakeholders with visibility when issues arise. Additionally, since continuous integration relies on constant and immediate feedback, teams are able to decode bugs, pinpoint errors, or eliminate duplications more easily.
In short, continuous integration prevents a situation in which, for example, integrations are committed at the end of a project in large batch sizes––leaving little or no time to find and address risks or errors. Martin Fowler, Chief Scientist at ThoughtWorks says, although “continuous integration does not get rid of bugs...it does make them dramatically easier to find and remove.”
Higher Predictability, Quicker Delivery, and More Transparency with Continuous Integration
Continuous integration makes it possible to automatically and swiftly build and test code for errors. As a result, development and operations teams are able to ensure predictable and quick continuous delivery, largely because continuous integration encourages teams to work in small batch sizes, test more, and build faster through automation.
This, in turn, leads teams to fail early and quickly––allowing them succeed sooner and more frequently and, therefore, take on more projects. Because a DevOps environment allows teams to experiment and conduct tests and trials more rapidly, teams can afford to fail early. On the other hand, if teams follow a traditional model then they do not have that luxury and, as a result, they fail to execute projects in a timely manner. This means that they may fail late in the process, which can lead to wasted time, increased costs, and slower time-to-market. A DevOps environment prevents such scenarios by equipping teams with the foundation they need to design, test, fix, and deploy products quickly and efficiently.
Clearly, the lack of continuous integration can leave enterprises in a crippling state in which they are either failing or, alternatively, succeeding slowly and very late in the software development process. Take, for example, the experience of one of our customers, a global bank. In the beginning of our engagement process they informed us that they faced predictability and delivery challenges. For example, it took them three months and approximately $1.8 million to just deploy a database field name change. This process was slow and costly because they were unaware of the consequences that this simple change may have.
Continuous integration can mitigate such challenges by allowing teams to address errors as they emerge. This reduces the long-term severity of risks or the uncertainty that comes with not knowing the impact of a deployment or change. In addition, the tight team collaboration that continuous integration encourages can increase visibility and transparency, specifically by enabling stakeholders to take part in the software development process and track its progress easily.
Moreover, since all the work is stored in a shared control repository, an increase in transparency and visibility also improves accountability because stakeholders are able to identify their contributions, inspect failed tests, and work with other stakeholders to address any issues in the software development process. And, coupled with higher predictability and quicker delivery, an increase in visibility can result in better productivity––enabling teams to have a competitive advantage in the market because they are able to incorporate changes and user feedback through an automated, high-speed manner.
Continuous Integration with API-led Connectivity
It is clear that one of DevOps core practices, continuous integration, has many benefits––from encouraging collaboration between teams to increasing overall visibility and transparency. Despite its advantages, however, continuous integration and other aspects of DevOps can be difficult to enable. Approximately 75% of IT leaders view DevOps as a top IT priority; yet, many respondents cite “understanding which technologies can help” as the greatest obstacle to enabling DevOps. Fortunately, MuleSoft can help organizations further various DevOps practices – including continuous integration – through an API-led connectivity approach to integration.
API-led connectivity is a modern, methodical approach to integrating data, devices, and applications through a variety of purposeful, reusable, and composable APIs. Unlike point-to-point integration, which creates tight dependencies between systems, API-led connectivity promotes a plug-and-play approach to integration and uses these modern APIs to expose assets and, in the process, these APIs become discoverable, self-served, and consumable across the enterprise. As organizations deliver with API-led connectivity, they build an application network––one node, one building block at a time. This ensures organizations have enduring business agility.
DevOps practices use principles that complement API-led connectivity in order to improve overall collaboration and productivity, this includes composability, empowerment, and reusability. MuleSoft can help enterprises achieve API-led connectivity through Anypoint Platform™––a unified, highly productive, hybrid integration platform. This technology serves as a platform to connect data, systems, applications, and devices.
One customer that adopted API-led connectivity to further their DevOps practice is one of our customers, Spotify. Spotify already had a cutting-edge DevOps practice in place; however, high-speed growth led to an IT architecture that is based on custom solutions and quick fixes. As a result, Spotify faced a series of challenges, including the lack of data accuracy, visibility, reliability, and a slow time-to-market rate.
In order to improve their existing DevOps practice, Spotify chose MuleSoft’s Anypoint Platform as the main integration technology. To illustrate, through the platform they were able to reveal capabilities to third parties, partners, and internal channels by exposing existing assets. With the help of MuleSoft, Spotify was able to enhance their DevOps culture by improving integration practices and promoting team collaboration and self-service––thereby improving their time-to-market performance and overall delivery process.
We know that not everyone already has a robust DevOps practice with continuous integration in place. IT leaders that are struggling to understand how to implement continuous integration must move beyond point-to-point integration because it cripples enterprises by creating tight dependencies. Instead, IT leaders must consider an API-led connectivity approach to integration, which can help further DevOps by allowing enterprises to holistically connect data, devices, applications, systems, and, ultimately, people.