DevOps for mobile development

Integrate development and operations for quality and continuous delivery
to multiple platforms

Mobile computing is probably the hottest topic for development and operations teams right now.
Employees in companies large and small have various mobile devices, many of them personal,
that they are using for work. Companies all over the world want to use the mobile market
by providing customers and users with apps that make mobile computing easier.
So, it is important for companies to think through not just the development of a mobile capability
but also how they will deploy it and how they can ensure the continuity of the capabilities as these change over time.
This article covers how DevOps (development & operations) can help address the issues
of deploying different versions of apps to different devices.

Michael Rowe is part of the IBM Rational business strategy team and has
been focusing on the integration between development and operations in
Rational for more than four years. For the last few years, he has been
looking at the intersection between the mobile application phenomenon and
existing IT infrastructure in the context of how to manage the development
and deployment of these apps on the infrastructure.

Meet the author

Mobile apps: New thought processes and
behaviors

In the mobile space, there is a plethora of potential deployment platforms.
In some ways it is similar to the situation in traditional desktop
development many years ago when there were multiple competing standards.
What's different about mobile is that there are not only multiple
competing operating systems, such as Android, iOS, BlackBerry, and
Windows, but there are also multiple different device characteristics:
screen resolutions, processors, graphics capabilities, networking
capabilities, and more. Each of these adds a potential layer to the
complexity of deploying to mobile environments.

As a result, enterprises need to use different thought processes and
behaviors when developing and designing for mobile. For example, one
approach that many companies currently use is to focus on web-enabled
mobile apps. Development teams that are already working on web portals and
web capabilities simply extend them to mobile using HTML5.

The downside of that approach, however, is that it's not possible to
exploit all of the power and features of the different mobile platforms.
Users inevitably ask for better integration with existing native
functionality on the mobile device, such as the calendar application.
Meeting these demands requires native applications if the platform does
not expose APIs to access the features — and that's when you'll
start asking questions about which and how many platforms you are going to
support. In addition, how many versions of the platform will you
support? Given that most customers will only keep a device for a few
years, how much risk is involved in excluding a version and choosing not
to support those customers? Do you support or exclude one entire platform,
such as iOS? One version of Android, such as 3.2? Do you extend out to the
full capabilities of Jelly Bean, the latest version of Android?

Adding to the challenge of mobile app development and deployment is what
is being called the "consumerization" of IT. More and more, employees and
customers are bringing their own devices into the enterprise environment.
For example, at IBM in January, there were approximately 10,000 iPads
running inside the company and more than 30,000 other iOS devices. This
means that an enterprise can no longer have a corporate standard that
states they will only support iOS, version 4, because consumers are
purchasing updated iPhones or Samsung Galaxies, along with tablets and
other smartphones. Although there are advantages when enterprises use
their employees' devices, consumerization creates a very large set of
targeted environments, which increases costs both in development and
management.

The pitfalls of mobile app
deployment

One of the main pitfalls of developing and deploying mobile apps is
packaging too much change into one large deployment. This traditional
waterfall method of development is also prevalent in enterprise
application development. A company spends six to eight months working on
requirements, six to eight months developing, six to eight months testing,
and then they put their massive application into production. The problem
is, during all that time, the teams involved will likely miss
requirements, lose track of components, and even break part of the build.
So to reduce that risk, the company implements a rigorous and complex
governance process.

Companies often want to take this same approach to mobile development and
deployment, because they want their first release of a mobile capability
into the market, whether for their user base or employees, to be perfect.
In reality, the app does not have to be perfect, it simply has to be
usable and intuitive. Most enterprises don't realize this, however, so
they put a great deal of time and effort into what can become a costly
endeavor — and, often, a late one. Most apps that are the result of
waterfall development are late to market and often do not end up
addressing their users' needs.

DevOps is a way of addressing the deployment challenges of multiple
operating systems, multiple devices, and consumerization by extending the
agile development methodology to quickly deploying functionality needed
for successful mobile apps.

The power of DevOps

DevOps basically addresses the need to deploy a running application, with
the latest features, out to the production environment at any given point
in time. This is an agile approach, where a waterfall development
methodology will not work. It is important to define your requirements and
develop in small, functional pieces of business value. Every night or
every 15 minutes or every time a change is checked into the source code
management system, you want to ensure that it is possible to build your
product or business function. This is the continuous integration
capability of DevOps. Further, given the complexity of enterprise mobile
apps, this is not just about compiling the code for the mobile device.
Enterprise apps leverage backend systems, which may also need to include
new functionality.

Capturing the build and deploying it through the various environments
requires a robust set of continuous delivery capabilities that can push
apps:

From a developer's desktop with a simulator running Android, iOS, or
another mobile platform

To the test environment that might involve a third party testing
different handsets

To the back-end systems that expose services to be consumed by mobile
devices

And into a production environment where it is delivered to the various
devices

Each platform has different characteristics from a deployment perspective;
however, no matter what the platform, for the delivery to be successful,
you must identify, track, capture, and test every change. This requires a
disciplined approach that brings development and operations teams together
to ensure frequent, reliable, high-quality software deliveries.
Development and operation teams work together toward a common objective:
continuous delivery of working mobile apps without anyone assigning blame
or making excuses. Automation is critical.

That's why DevOps is so powerful for mobile application development and
deployment. DevOps can:

Capture changes

Automate how those changes take place

Automate testing

Keep the changes small enough to reduce risk to the business when they
are moved into a production environment

Ensure that, at every stage along the pipeline, appropriately packaged
business functions are replicated and pushed forward

With DevOps, you are using a disciplined and automated approach, deploying
small, functional enhancements that might, over time, become a very large,
complex capability. It pushes your apps and your updates through your
provisioning capabilities to the various endpoint devices in your mobile
ecosystem. DevOps also means transparency to changes so that all the
stakeholders are aware of how new capabilities are progressing, thereby
reducing the business risk. Metrics and measures are captured and exposed
on dashboards, increasing transparency and accountability.

DevOps is an ideal approach when you also consider that the timeframe for
delivering mobile apps is much shorter than for enterprise applications.
Companies want to get started right away. Therefore, it is important to
take the time to integrate teams and processes on mobile app releases and
updates and help everyone understand that the objective is not perfection;
the goal is improvement. This starts everything off in the right way, and
progress is faster and better. Efficiencies happen and processes are
improved at the same time they are automated.

Conclusion

Companies all over the world want to exploit the mobile market by providing
customers and users with apps that make mobile computing easier. To do
this, it is important to think through the development of the capability,
how you will deploy it, and how you can ensure the continuity of your
capabilities as you change them over time. DevOps helps ensure a
successful mobile app lifecycle that takes all of this into consideration.
It brings not only automation but also business results because DevOps
tightens the feedback loop between developers and operations. Developers
can make changes more quickly, and organizations can speed the refinement
and updates of their apps.

At the developerWorks DevOps
zone, find how-to articles, technical
perspectives, and evaluation code to help developers, testers, and IT
production and operations teams understand and adopt the IBM DevOps
approach to continuous software release and sustained innovation.

Get products and technologies

Evaluate IBM products in the
way that suits you best: Download a product trial, try a product online,
use a product in a cloud environment, or spend a few hours in the SOA Sandbox learning how to
implement Service Oriented Architecture efficiently.

Discuss

The DevOps community provides news, discussions, and training to help you
and your organization build a foundation on agile development principles and the
associated DevOps movement.

The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.