Table of Contents
Mobile DevOps Overview
01
Challenges of Enterprise Mobile App Delivery
02
A fragmented ecosystem
02
High user expectations
02
Integrated systems
03
Challenges with Applying DevOps to Mobile
04
Resource constraints and limited skillsets
04
Fear of change and increased communications
05
Automation is cumbersome
05
Advantages of Mobile DevOps
06
Accelerated time-to-market
06
Business success through customer satisfaction
06
High quality customer experiences
07
Implementing DevOps in the Mobile Lifecycle
08
People and culture
08
Plan: Create a living strategy
09
Build: Design and develop
10
Integrate: Connect to data anywhere
10
Test: Ship high quality apps
11
Iterate: Continuously improve product, processes and people
12
Conclusion
13
Mobile DevOps Overview Forrester defines DevOps as “providing a set of practices and cultural changes— supported by complementary tools—that automates the software delivery pipeline, enabling organizations to win, serve, and retain consumers better and faster than ever before.” Customer expectations today are exceedingly high and, as Forrester says, it is “the age of the customer.” DevOps provides a way to keep up with these high expectations and continuously evolving user demands, especially when it comes to the world of mobile apps. The mobile app delivery process poses unique challenges when compared with web apps. The mobile ecosystem is fragmented, with a large number of devices and operating systems that change frequently. At the same time, end users continue to have very high expectations. Staying competitive in this environment requires embracing these changes through innovation and DevOps streamlined for building, testing, and continuously iterating.
“ DevOps—providing a set of practices and cultural changes—supported by complementary tools— that automates the software delivery pipeline, enabling organizations to win, serve, and retain consumers better and faster than ever before.”
01
Challenges of Enterprise Mobile App Delivery A fragmented ecosystem There are a very large number of devices, operating systems, and screen sizes at play in the market today. In 2014, there were 18,796 unique Android devices1 and in 2015 that increased to 24,093 unique devices with 1,294 device brands, a 28% increase in just one year. Similarly with the iOS family, there are 11 kinds of current devices across iPhone, iPod Touch, and iPad categories (with 31 total from the beginning of the iPhone era)2. To add to this, each of these devices support multiple operating system versions that are frequently updated, with Google and Apple releasing multiple APIs every year. This results in a myriad of permutations and combinations of devices, operating systems, and screen sizes.
High user expectations Users don’t care about the fragmentation or the complexities involved in efficiently supporting multiple versions of apps. They expect high-quality apps at all times, irrespective of the device or operating system version they are using. They want experiences that are native to the specific device they are using, they expect performance to be on a five-star level at any given time, and they expect support for operating system updates and new features immediately. Performance cannot be sub-par, especially after putting out an updated version of the app—if app updates break the app, App Store reviews will take a big hit. When apps perform poorly, users have no qualms about sharing how they feel through poor reviews and one-star ratings.
Source: 1. http://opensignal.com/reports/2015/08/android-fragmentation/ 2. https://en.wikipedia.org/wiki/List_of_iOS_devices
02
Integrated systems Invariably, mobile apps serve as the front end for the business, integrating with enterprise backends like customer and employee management systems or transaction processing systems for their data needs. In order to ensure top-notch performance, it is important to not only focus on the front end, but on the end-to-end integrated experience. It is necessary to coordinate releases across all integrated systems, and ensure that the entire experience is working as expected and that no errors are generated as a result of these integrations.
“ A survey of 1,000 business users discovered that after an unsatisfactory experience with a mobile business app, 65% of users will abandon the app after two or fewer uses and 8% will abandon immediately.” Xamarin Mobile Business User Survey, 2015
03
Challenges with Applying DevOps to Mobile
Resource constraints and limited skillsets Mobile development itself might require the addition of new skills and resources on the team based on which development model (cross-platform, platformspecific, hybrid) you adopt. In addition, to effectively implement DevOps, enterprises will need to invest in new tools and likely hire personnel who are well versed in these tools. This proves to be a big barrier when it comes to actually implementing DevOps.
04
Fear of change and increased communications Another barrier to implementing DevOps is open communication. Developers and operations professionals will need to be open to change, increased communication between teams, and a cross-functional work culture. There will be terminology differences, workflows and processes will integrate and look different, and conflicts might arise between the team members. A lot of these changes will end up being outside of the traditional work streams and comfort zones for these teams. Managerial difficulties will also arise because of the cross-functional nature of DevOps and the traditional hierarchical nature of most enterprises. These challenges put up multiple barriers to adopting a DevOps mindset.
Automation is cumbersome There are many stages of the build→test→deploy phases that are manual today. From developing code to checking it in and deploying builds, the process itself is manual. Automating activities inside this process is challenging—takes a lot of time to set up this process to be automated so that once there is a new build it automatically gets sent through the testing phase and then on to the deploy phase. There is a lot of initial foundational work to be done by the teams, which, although time consuming, has huge benefits attached to it.
05
Advantages of Mobile DevOps Accelerated time-to-market A continuously integrated mobile app delivery process will result in a much faster time-to-market for apps. Enterprises can go from an idea to a live mobile app in the hands of end users much faster than if employing traditional development methods. Keeping up with market trends and the demands of users will also be much easier because of the ability to provide faster updates.
Business success through customer satisfaction For DevOps to be successful, it has to provide value to the business, and one of the best ways to track value is through customer satisfaction. If end users are happy, then the business will thrive. Ultimately, one of the most important benefits of DevOps is end user satisfaction, whether you are dealing with internal or external customers. When the business is able to fix bugs faster, keep up with user demands, and continuously provide quality experiences for end users, these users are satisfied and keep coming back for more. One of the best ways to measure the benefits of DevOps is to closely monitor the before and after effects of metrics like recurring revenue, conversion rates, and churn rates.
06
High quality customer experiences Down time can have a significant impact on both internal operations as well as service level agreements with end users. The longer it takes to resolve issues that arise, the worse it becomes for end users. Mean Time to Resolution (MTTR) becomes an important metric to track because stability is critical to the success of mobile apps. With a DevOps culture, any bugs, app crashes, or code failures can be detected and fixed much faster than with traditional development methods. A bug that would normally take a few days or weeks to surface can be detected immediately with a real-time monitoring solution, and a fix can be put out into the market quickly because of the continuously integrated and automated delivery process.
“ When I talk to people from other companies about automating their entire test base, they give two reasons why they aren’t doing it: “The tools are just too complicated to use”—which just isn’t true—and ‘We don’t have time to start.’ I think the question they should be asking is ‘How can we afford to not be doing this?’” —Niels Frydenholm Senior iOS Developer at eBay Classified 07
Implementing DevOps in the Mobile Lifecycle
People and culture Embracing a Mobile DevOps culture begins with a strong focus on the people and teams. Collaboration is a critical part of DevOps success and this can happen only if there is mutual trust across all teams and people involved. Fostering a non-competitive attitude among team members can also further enhance collaboration, trust, and empathy. Encouraging people to take on individual ownership will make them feel empowered to try new things, experiment, fail smartly, and will promote a culture of rapid feedback loops around successes and failures. This allows the group to continuously iterate and improve internal processes in the same way developers are iterating on the product.
08
Giving people access to the right tools and software, and encouraging them to learn and grow with these tools, is part of adopting a Mobile DevOps mindset. Especially in the challenging mobile ecosystem, in order to be effective, it is important to have an integrated environment with reusable, repeatable processes that will allow teams to focus on things that actually matter, such as software innovation. In the following section, we’ll discuss the mobile app delivery lifecycle, its multiple stages, and how DevOps plays a part in each stage.
Plan: Create a living strategy Any development project begins with a plan and it is no different in the mobile delivery cycle. It is critical to orient everyone on the team with the goals and benefits of the project. Planning also includes a feasibility test to ensure that the project has enough merit to actually take it forward—for example, are the benefits relevant to the market and the customer, has the team performed background research before identifying these goals, and are these constantly evolving as the market evolves? The team can then focus on breaking down this idea into individual features, prioritizing the work, start building the idea into an actual mobile app(s), and continuously iterating and improving on it through Agile DevOps practices. How to enable success through DevOps • Use a solution that allows you to create feedback loops to communicate changes so you can quickly and easily prioritize the project, keep track of your most important work, and monitor your backlog • Ensure an efficient work environment by having the ability to plan sprints based on team capacity, eliminate waste by visualizing workflows, and monitor projects in real time • Invest in a tool that allows you to have a bird’s eye view of your project with dashboards and charts that give you visibility into things that matter and help the team stay focused 09
Build: Design and develop This is where most enterprises will begin their mobile journey. Being smart and efficient with design and development of mobile apps is critical because of the high expectations and limited timeframes available. Start with understanding the kinds of apps that are being built and their business objectives: B2C (consumer-focused), B2B (vendor-focused), and B2E (employee-focused). How many such apps will be built and how often do you anticipate updating these apps? Will these apps make use of features native to the device? Is there underlying functionality that can be reused across apps? How to enable success through DevOps • Use an approach that will allow you to create reusable elements, so that you can share code across apps and accelerate your time-to-market • Ensure the ability to access the native aspects of individual devices and operating systems (iOS, Android, Windows) without compromising on app performance • Invest in a platform that enables you to ship up-to-date apps as soon as possible, for example, same day support for OS and API updates
Integrate: Connect to data anywhere Mobile apps typically integrate with backend data sources to populate data in the apps. Usually these integrations are with internal backend services, but can also include external services like social integrations with Facebook, Twitter, etc. How will you store all of your backend data? Is it going to be in the cloud, on-premise, or both? Pay attention to user authentication and single sign on capabilities so that users have smooth and consistent access across all apps. 10
Scalability is another critical factor at this stage; mobile app needs can shift rapidly. Being able to spin your resources up and/or down to address scale is important to provide uninterrupted, high quality experiences. How to enable success through DevOps • Use a solution that easily integrates with the tools in the mobile lifecycle, as well as your existing IT environment, so your current asset investments can be leveraged • Ensure the ability to run your apps anywhere in the world to support global users. Look for cloud solutions with data centers located in regions you service • Invest in a solution that can quickly and securely scale to support rapid user growth and peak load times
Test: Ship high quality apps As mentioned earlier, the fragmentation in the mobile ecosystem makes it very challenging to ensure high quality apps on all of the combinations of devices and operating systems available. This is where test automation comes into the picture. To save precious developer time so that they can focus on creating new innovations, it is important to automate aspects of the delivery cycle. It is essential to automate testing. The focus should be on finding as many bugs as possible before you ship. It is nearly impossible to find everything, however, which is where real-time monitoring will come in handy. Simulate real user interactions like tapping, pinching, swiping and scrolling, and make sure to test these continuously over each application iteration. How to enable success through DevOps • Use a solution that allows you to test on the same physical devices that your customers are using. Simulate real user interactions, either through test scripts or a playback of recorded tests
11
• Ensure that you have both visual test results and detailed data results so that you can easily determine where and why issues surface, decide where to focus your efforts, and respond quickly • Invest in a solution that integrates with your existing CI system so you can be agile with your app development and updates
Iterate: Continuously improve product, processes, and people Once your apps are out in the wild, you need to continue to ensure top-notch performance. It is important to know the health of your app, understand your users, and measure adoption and usage metrics in real time. When apps crash, you want to have insight into this and access to the right information to resolve issues quickly. Another important aspect of the iterate phase is a continuous integration system where you can track bugs, code changes, and automate the deploy process. Using an integrated suite of solutions that all work together will give you total control over the development, quality, and monitoring of your apps. How to enable success through DevOps • Use a solution that will allow you to track any crashes that your app has in real time and give you access to information like symbolicated traces so you can resolve them • Ensure the ability to distribute beta builds to your testers easily and gather feedback from them on feature improvements and suggestions • Invest in a solution that allows you to set up an automated system to build, test, and deploy your apps without needing to write and maintain hundreds of lines of script code
12
Continuous improvement goes beyond just apps. In an environment as fragmented and fast-moving as mobile, it will serve teams well to continuously improve their knowledge and skillsets. Cross-functional training outside of their core competencies will further increase the ability of each team member to contribute. The most effective teams stay up-to-date with the latest developments in the constantly evolving landscape of development tools and practices.
Conclusion The mobile app lifecycle is complex, and it is definitely challenging to keep up with the demands present. Approaching it methodically and applying DevOps will make sure you are on the path to a successful mobile strategy. A key goal should be to create automated reusable and repeatable processes to accelerate efforts and reduce redundancies. Don’t leave testing for the eleventh hour, and have a real-time monitoring system in place for production apps. Stay focused on adopting a continuous delivery practice with an automated build, test, and deploy process to accelerate mobile success. To learn about Xamarin + Microsoft products facilitating Mobile DevOps, and to sign up for a mobile strategy session, please visit xamarin.com/mobile-devops
13
A better way to build apps
[email protected] / +1 (855) 926-2746 / xamarin.com