Unlike most traditional program products or IT solutions, mobile development is very dynamic. You must follow the evolutionary change of mobile devices regularly to keep up. Usually, faster response, adaptive planning, early delivery and flexible response to change are the keys to providing a successful mobile app solution. An agile software development style, such as SCRUM, or a faster Iterative and Incremental development is highly recommended to be embedded in mobile developing.
In our China office, we use SCRUM development in most of our focus areas and mobile development equally. We work in sprints and deliver continuously. The lifecycle looks something like this:
The above lifecycle is iterative every two weeks (as a standard sprint time), but in the two weeks, often time development and testing occurs, and usually there is only one deployment, which means a PO/PM cannot see the output / changes until in the end of one sprint. How can we improve this? Can we provide more flexible response and early delivery?
“DevOps is a software development method that emphasizes communication, collaboration (information sharing and web service usage), integration, automation, and measurement of cooperation between software developers and other IT professionals. The method acknowledges the interdependence of software development, quality assurance (QA), and IT operations, and aims to help an organization rapidly produce software products and services and to improve operations performance.”
To embed DevOps in the development lifecycle, several tools/methods are necessary: a CI server, automation tests and a centralized VCS. In detail, we use Jenkins, KIF iOS Integration Testing Framework and GitLab as the implementation, and several hooks/triggers between each. So that the lifecycle is now like this:
Now whenever a certified developer pushes to GitLab (take a training app for example), the system will automatically build, test, archive, and deploy the app and publish it after all tests run successfully. Which also means, the signed work (still complex for an iOS App) can be done automatically, and the risk to disclose the sign key is reduced by the machine. It is also possible to create a docker image for both the Jenkins server and the authentication server (an authentication server is used to package and sign the iOS app). (For security reasons, only the master branch is embedded by DevOps, and it is a protected branch so that only a certified developer can push commits to master branch.)
With DevOps, it is now possible for us to provide frequent releases as well as a dashboard that is visible to all parties providing status of the current project for any other future iOS mobile solutions.