6 Tips to Avoid "Integration Hell"
August 26, 2016

Sven Hammar
Apica

Inevitably, software and application developers are forced to delay pushing fixes and features because other parts of the code are not ready. "Integration Hell" earned its name because clients are missing out on the latest versions of applications. This can be avoided with continuous integration.

Continuous Integration (CI) is a software development practice involving "integrating" updates multiple times a day. The process is designed to catch problems early on and prevent "Integration Hell" – clients that miss out on the latest versions of applications because they are not launched, which also negatively impacts on team morale.

Using the CI approach to development, development teams typically write higher quality code, receive immediate notification of broken code, experience reduced deployment time, and see a boost in confidence.

The following six tips can help developers create a better experience working with CI:

1. Commit Code Frequently

CI works best when making frequent small, incremental changes to the application. Clients do not have to wait for weeks between releases for fixes and new features. Organizationally, frequent updates prevent developers from stepping on each other's toes, because problems are typically fixed before a second developer takes a look. With CI, teams spend less time delegating tasks, can take action immediately, and use work time more efficiently.

2. Fix Broken Builds Immediately

Pushing high-frequency updates allows the development team to address broken builds and programming bugs with minimal time between identifying the problem and pushing a fix. Developers using CI should fix problems immediately to get the most out of the practice.

3. Split the Code: Feature Branches

Organizing and separating application code furthers much of CI's selling points. Multiple developers work with hundreds of files, scripts, and templates that all contribute to a larger application. Separating the code allows for independent updates of smaller parts of a larger system element.

The development team can push an update to a smaller segment of the code without worrying about pushing unfinished updates in larger code groupings. Splitting the code makes managing the project easier and allows for reverting smaller code segments — thus losing less work — when there is a problem with an update.

The "Feature Branch" approach, which works well with CI, involves removing code from the "trunk," or main part of the code, so features can be added or upgraded over a longer period of time without disrupting the CI programming flow. Branches are a temporary thing: The relevant code is pulled out of the main application for work and then returned when work is completed. The feature branch approach keeps all end users on the most recent version of the application, which avoids the need to support multiple versions of the same product.

4. Rely on Automation

CI servers are a huge asset in avoiding Integration Hell. Developers can push code as soon as they believe it is ready for use, and the server runs tests on that code to identify problems the developers may have missed. The CI server acts as a gatekeeper and alerts developers of problems with the code so they can fix it for the next update push. This means the development team does not need to worry as much about pushing bad code live; they can spend less time debugging, and more time developing. The one downside is that CI servers require additional setup costs and programming.

5. Use Feature Toggles

Unfinished features can hold up the development process and delay updates. Development teams can work around hang-ups by programming toggles for in-progress features. These are simple "true/false" tests that can be controlled with a variable that either enables or disables a feature. The team can remove the toggle when the feature is ready for production.

6. Include Load and Performance Tests as Part of CI

Changes to a source repository done by the developers can be automatically detected and tested for load and performance. After the tests are complete, the built code is deployed to staging servers for testing from where additional tests are run such as integration or load tests. Upon the successful completion of those tests, the tested and approved code is deployed to production instances.

Sven Hammar is Chief Strategy Officer and Founder of Apica
Share this

Industry News

May 17, 2022

DevOps Institute, a global professional association for advancing the human elements of DevOps, announced the release of the Upskilling IT 2022 report.

May 17, 2022

Replicated announced a host of new platform features and capabilities that enable their customers to accelerate enterprise adoption of their Kubernetes applications.

May 17, 2022

Codefresh announced that its flagship continuous delivery (CD) platform will be made accessible as a fully-hosted solution for DevOps teams seeking to quickly and easily achieve frictionless, GitOps-based continuous software delivery in the cloud.

May 16, 2022

Red Hat announced new capabilities and enhancements across its portfolio of open hybrid cloud solutions aimed at accelerating enterprise adoption of edge compute architectures through the Red Hat Edge initiative.

May 16, 2022

D2iQ announced a partnership with GitLab.

May 16, 2022

Kasten by Veeam announced the new Kasten by Veeam K10 V5.0 Kubernetes data management platform.

May 12, 2022

Red Hat introduced Red Hat Enterprise Linux 9, the Linux operating system designed to drive more consistent innovation across the open hybrid cloud, from bare metal servers to cloud providers and the farthest edge of enterprise networks.

May 12, 2022

Couchbase announced version 7.1 of Couchbase Server.

May 12, 2022

Copado added Copado Robotic Testing to Copado Essentials.

May 11, 2022

Red Hat announced new advancements within its Red Hat Cloud Services portfolio, delivering a fully-managed and streamlined user experience as organizations build, deploy, manage and scale cloud-native applications across hybrid environments.

May 11, 2022

JFrog introduced a new Docker Desktop Extension for JFrog Xray that allows organizations to automatically scan Docker Containers for vulnerabilities and violations early in the development process.

May 11, 2022

Progress announced a series of updates in Progress Telerik and Progress Kendo UI.

May 11, 2022

Vultr announces that Vultr Kubernetes Engine (VKE) is generally available.

May 10, 2022

Docker announced new features and partnerships to increase developer productivity. Specifically, the company announced Docker Extensions which allow developers to discover and add complementary development tools to Docker Desktop.

May 10, 2022

Red Hat announced the general availability of Red Hat Ansible Automation Platform on Microsoft Azure, pairing hybrid cloud automation with the convenience and support of a managed offering.