For the past half year I have been going around the country talking about the topic of ‘DevOps for Mobile Apps’. I have been at the same time developing consensus and interest within my peers about the importance of this topic and how there needs to be better practices and tools to help in this area. So, that being said, what do I mean by there is no such thing as DevOps for Mobile Apps?
Very simple. I want to clarify that there is no such thing as DevOps for Mobile Apps, alone! You as an organization need to have a DevOps philosophy. You should have as an organization adopted the principles, practices, tools and the organizational nuances that need to be implemented to become a DevOps shop. You cannot do it for Mobile alone! You may choose to start with your mobile team, for whatever reason, but isolating DevOps to a single team or group is a recipe failure. You Dev teams and Ops teams, need to work together. They cannot work together just for a set of (mobile) projects and be siloed for everything else.
Enterprise Mobile Apps
If you are building a stand-alone mobile app, that runs on a mobile device and has no backend it connects with, then you don’t need to worry about DevOps. Deployment is as simple as building an app and submitting it to the appropriate App store(s). Even a simple mobile app with just a back-end database on a server is fairly trivial to deploy. If on the other hand, you are building an enterprise mobile app, that accesses and interacts with multiple services and applications in your enterprise, then you need to think about your DevOps strategy. Now, deploying the mobile app is not as simple as submitting to the app store. What you have now is a set of enterprise apps that need to be deployed, which happen to have a mobile app as one of the front-ends. Include that mobile app in your enterprise DevOps strategy, and no one gets hurt.
The classic example I have used in my presentations is that of LinkedIn’s mobile app. It has virtually no business logic in the app. (Disclosure: I have had no interaction with LinkedIn regarding their mobile app or DevOps. All my knowledge of their applications is based on their public engineering blog). It is a front-end to LinkedIn’s applications, just like their website (linkedin.com) is. When LinkedIn deploys a new version of one of their applications, let’s say their messaging application, they may need to update their mobile application to handle the changes to the messaging application. When they look at the DevOps strategy for their applications, they should include the mobile application in their planning, just like they include their web applications, with all the special considerations that mobile apps require. (Refer to my presentation on DevOps for Mobile for more on these special considerations). DevOps for the Mobile App become a part and parcel of the overall DevOps approach.
Mobile Apps are not Web Apps
So, are mobile apps just like web apps? No, they should be just given the same priority and attention as web apps, but they have special needs. Other than all the challenges related to supporting multiple devices with multiple OS versions and form factors, mobile apps are different from web apps in many ways. Focussing on differences related to deployment:
- Mobile Apps need to go thru an App Store. This is an asynchronous step that takes a finite amount of time. Web Apps can be updates as needed or are at least within control of the enterprise.
- Updating Mobile Apps is a ‘pull’. You cannot force a user to update their App when you want them to. So, unless you disable the ability for your backend to connect to older versions of the App, users can keep using them, even though updates are available.
- No roll-back. Unlike web applications, mobile apps cannot be rolled back. You have to release a new version and ask users to upgrade to it.
DevOps for Mobile Apps
To conclude. There is no such thing as ‘DevOps for Mobile’ in isolation. DevOps for Mobile Apps needs to be a part of your overall DevOps strategy. Adopt DevOps principles and practices across your enterprise and make sure you include your Mobile App development teams as first class citizens. And finally realize, that when this is done, Mobile Apps will need special consideration for their deployment planning and processes. Include the Best Practices for DevOps for Mobile, in your DevOps strategy.