DevOps for mobile development
Integrate development and operations for quality and continuous delivery to multiple platforms
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.
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.
- "Techniques for rapid mobile solution development" (developerWorks) offers concrete suggestions on how even a small in-house team can quickly develop and deploy a well-targeted employee app across multiple platforms.
- Evaluate IBM products in the way that suits you best.