Organizations building and delivering mobile applications using DevOps techniques and tooling will find there are important differences in how their processes are applied.
Viktor Benei is CTO and co-founder of Bitrise, a company that offers solutions for mobile DevOps, and when asked if there were differences developing apps for mobile devices as opposed to on-premises servers or the cloud, he responded: “Lots of things — some big, some small.”
“You can’t fully automate the continuous deployment process for mobile, as releases have to go through the app stores,” he said. This means organizations should still optimize how frequently they deploy their applications. As Benei noted, “Users also expect frequent updates, but not too frequent, so around once per week.”
He went on to say that testing and monitoring also differ. For testing, for example, you have to run emulators for UI testing. You also inherently work with a “monolith” — you can’t just release parts of the app separately like you can with microservices.
The app stores themselves inhibit continuous deployment, Benei said. “You can employ some tricks like releasing only to certain countries, doing something like a canary release, but you can’t do full continuous deployment.”
Benei suggested still having iterations ready for deployment frequently, “but things like feature flagging are even more important for code integration from multiple teams and so you can release every week or so,” he said. “You also have to double down on automated testing, running tests on a wide variety of virtual and physical devices.”
Benei offered that automation is a key best practice for mobile DevOps. “Automate as much as possible — reduce manual steps and processes. Focus heavily on testing, as you can’t do rollbacks and you can’t just push a fix as quickly as you can for a web service. Also, benchmark your app as much as possible — for example, benchmark the size and the startup time of your app as you can lose a lot of customers if your app is too large or loads slowly.