App Development
IT & Services

Getting Ahead of User Demand with CI/CD

Mutual Mobile
No items found.
April 15, 2019

Why you need to practice CI/CD to stay competitive, how it works, and how you can implement it now

Amazon claims to release software updates every 11.6 seconds. Facebook says it rebuilds apps up to 60,000 times a day. The key to such rapid release cycles is continuous integration and continuous delivery, or CI/CD. And while organizations of all sizes now accept CI/CD as an important part of DevOps, many still ask whether it’s really necessary, and, if so, what it takes to implement properly for best results.

Short answer to the necessity question: Yes. And while addressing implementation is more nuanced, many find the answer to be along the lines of “mysterious but attainable,” especially with the right guidance. Guidance that includes best practices for leveraging the build, integration, and QA automation at the heart of CI/CD.

The Functionality Imperative

Dan Nichols, VP of Technology

As software developers race to deliver more capabilities to modern digital customers who expect rapid-fire updates, it becomes crucial that they deliver as quickly and economically as possible, while still ensuring high-quality code. Customers who don’t get the service they need when they need it take their business elsewhere. It happens daily. A recent Salesforce survey found that 57% of customers have reported shifting their loyalty to companies that react more quickly to their needs.

Tech influences customer experience in just about every industry. Research from McKinsey & Company found that ever-more-demanding customers are behind the push to expand and improve software development. In other words, if companies want to meet customers’ expectations, their apps better deliver real benefits in as close to real time as possible to match the evolving needs of end users.

Simple cosmetic fixes or unstable code that doesn’t deliver the goods won’t cut it. Someone else will deliver if you can’t. And quarterly updates to software, no matter how good, can’t keep pace. “You’re going to have to patch it or adapt it for some real – world uses that you haven’t considered,” points out Dan Nichols, VP of Technology at Mutual Mobile. “Your competitors are moving more quickly than that,” he says of quarterly releases, “because your customers are nimble enough to move away from your product or find an alternative in that amount of time.”

To be competitive, you need to release apps and other software to users rapidly and with confidence. The combination of CI/CD and QA automation allows you to do this by ensuring that new code gets thoroughly tested as it’s integrated into updates that are then delivered to users as quickly as possible.

Defining CI/CD

Cycle of CI/CD

In simplest terms, CI/CD is a way to build and maintain software as part of a continuous process.

Continuous integration (CI) brings vetted code into the main application as it is completed and tested. “Developers are getting feedback as they’re trying to merge changes into the source code,” explains Nichols. If automated tests fail as part of this process, then the faulty code stays out of the main build until developers can fix it. “It might all compile together, but that doesn’t mean it’s going to do what it’s supposed to.” Applying QA automation as part of the process means only qualified code makes it into the application when applying CI.

Continuous delivery (CD) then brings validated code to production environments as soon as it’s available, either for immediate release to users, or, more likely, through more frequently scheduled releases. “The goal is that we’re taking the output—those builds from that CI pipeline—and we’re able to transition them very quickly into a production environment,” says Nichols. Whether it’s through automated connections to app stores or deployment scripts that promote vetted code to the cloud, the goal is to benefit from a well-scripted, automated process for code releases.

Altogether, CI/CD plus QA automation lets organizations continuously create, test, and deliver new code to keep pace with rapidly changing business needs. To make this possible, effective CI/CD processes hold everyone on the team accountable for quality.

Industry giants such as Amazon may use CI/CD practices to release updates multiple times per hour. But, for many, moving to weekly or even bimonthly updates can go a long way toward meeting user demand and staying ahead of the competition.

How to Implement Agile-Powered CI/CD

Making the shift to CI/CD can present organizational challenges. But with the right tools and partners in place, it doesn’t have to be painful. It’s similar to the shift you may have already experienced moving from a waterfall-based workflow to Agile development. In fact, says Nichols, developers need to apply Agile principles to engage in CI/CD. “The Agile transition from Waterfall is really mostly about acknowledging that plans change,” says Nichols. “The classic Waterfall approach doesn’t help customers or teams react.”

Agile-powered CI/CD workflows enable organizations to adapt more rapidly to change. To that end, moving to CI/CD for software development requires following five key steps.

  1. Audit your existing development and testing processes. You can’t know what you need to change unless you have a clear understanding of how you already work.
  2. Establish transparency between project management, development, and QA teams. This step is vital for fostering coordinated effort and the culture of collaboration that a rapid release cycle requires.
  3. Implement a test-driven development (TDD) process and create tests that cover existing code. Having good test coverage of your code base is essential for releasing with confidence.
  4. Develop automated UI and integration tests that cover key flows and interactions. This will allow you to replace time-intensive, manual processes with automation test suites that provide fast, constant feedback during the development cycle.
  5. Build out your CI/CD processes, integrating your source control, test automation, and deployment systems to create a robust pipeline from development to production.

Building out automated tests is one of the most important aspects of ensuring quality while enabling a rapid release process. “The quicker you can test your product, the quicker you can get it into the hands of the people that are going to be using it,” explains Cole Cochran, DevOps Engineer at MutualMobile. He also points out that CI/CD provides a fast-track for testing that can actually improve quality at the same time that it increases speed.

Finding the Right Balance with Automation and QA

Test suites and scripts do the work of dozens of people — working for weeks — in just a few minutes, accelerating the release process. DevOps leaders reported in a recent Forrester Research survey that they were likely to consider automation in quality assurance a “critical business differentiator” at almost twice the rate of DevOps laggards, as defined by the survey.

The quality of testing tools available makes the move to automation not just a critical step on the path to CI/CD, but also an achievable one. Cloud testing services, for example, allow QA engineers to run automated tests on almost any phone, tablet, or browser, quickly pinpointing design and functional issues.

That said, automation can’t replace manual QA testing for experiences that require subjective evaluation. Automation often doesn’t capture the full story with graphics-heavy apps, for example, or games. That’s why the most effective engineering teams make judicious use of both automated and manual QA testing.

Building a CI/CD Partnership

Michael Murad, DevOps Manaer

Because effective CI/CD requires a number of well-coordinated elements and careful tuning to the requirements of individual organizations, many developers work with a trusted partner to get started or to streamline an existing practice. “In addition to helping developers establish best practices, a good partner also leads by example”, explains Michael Murad, DevOps Manager at Mutual Mobile. “A big part of our work is reassuring our partners that these processes have been refined, because this is what we’ve been doing for a while.”

A CI/CD partnership can also ensure access to experienced QA automation engineers. This team can support you in analyzing your organization’s testing processes with the goal of building an automated test regression suite. This allows you to test established functionality every time new code is introduced—a task that can quickly snowball to unmanageable levels without the right processes and automation in place.

A strong partnership starts with laying the proper groundwork. Khai Le, Technical Director at Mutual Mobile, explains, “We go through a discovery process to understand the client’s vision for their applications and come up with a strategy to meet that goal.” A thorough discovery process allows partners to provide expert audit and planning services, while aligning all business stakeholders around a product vision.

Realizing the Benefits of CI/CD with Mutual Mobile

Through the lens of CI/CD, Mutual Mobile works with partners in one of two ways:

  1. Standing up one or more new development projects, baking CI/CD and QA automation into the process from the beginning
  2. Retooling existing development projects to take advantage of CI/CD best practices.

CI/CD for New Product Development

When a major communications company came to Mutual Mobile with a ground-up app build for multiple platforms, we worked to ensure the build would follow the same standardized workflow for each environment. With our CI/CD pipeline and the use of Visual Studio App Center, we developed a flow that kept the distribution and testing uniform across both iOS and Android.

CI/CD best practices call for roadmapping at the start of a project to ensure smooth operations down the line. In this case, putting a solid CI/CD process in place at the beginning laid the groundwork for continuous testing even after launch. The result: the app and subsequent updates in the hands of users with the click of a button vs. time-consuming and error-prone manual uploads.

Using a modern CI/CD solution with a continuous release mindset is key to identifying issues and making quick corrections along the way “With this and other builds, the DevOps workflow is something we’ve standardized. We’ve built this into our foundation for app development,” says Cochran.

CI/CD for Existing Development

Mutual Mobile also works with partners to implement CI/CD and QA automation tooling for existing applications, ensuring that the product remains stable — even as releases and updates increase in frequency.

A fast-growing food delivery company came to Mutual Mobile with an existing app hobbled by an inconsistent release schedule and quality control issues. Our team helped the company get their app into a CI/CD pipeline with automated tests. As a result, the company was able to:

  1. Discover thousands of errors in existing code, squashing them before they caused problems for users.
  2. Broaden testing to cover all customer devices — instead of just the phones developers had on hand — using automated testing and a device farm.
  3. Transition from manually building and uploading code to app stores to a CI/CD pipeline that automatically pushes consistent, verified builds to the stores.

As a result, the company can now rapidly release updates with confidence and without sacrificing quality.

Taking the CI/CD Leap

CI/CD provides many benefits to both software developers and users, allowing everyone to thrive in our fast-moving digital economy. These benefits include:

  • Shorter delivery times to meet evolving market needs.​
  • Deep integration of QA and development practices that result in more stable, higher-quality apps.
  • Faster feedback cycles for immediately discovering problems as they pop up.
  • More development focus on product enhancement and meeting new business needs and less on chasing bugs.
  • Better user experiences and faster updates.
  • Automation that reduces repetitive work and keeps feature creep in check.

CI/CD and QA automation are revolutionizing the software engineering space. They are essential for meeting modern customer expectations. It’s all about reliable, quality releases, says Nichols. “That’s what customers really struggle with understanding, and that’s one of our biggest opportunities: to help them build supporting structures for rapidly releasing a coherent product confidently.”