In a series of blogs published over the past few weeks on mobile application development (Key considerations, Choice of technology framework, and a Primer), we discussed the various architectural and implementation choices for development and deployment of mobile applications. As you are aware, in the current environment, rapid development and continuous deployment of mobile applications is not an option but is a mandatory practice. In this blog, I will outline how DevOps can be indispensable for a continuous mobile application development process.
In recent times, the mobile app development ecosystem has transformed into a fast-paced, ever-changing environment. While development teams sprint from one release to the next, the possibility of other teams being out-of-sync is always a looming threat to enterprises. DevOps, which governs the Agile implementation process, is a tried and tested methodology that seeks to bring together various teams involved in the application development lifecycle to function in tandem with each other. A more specific take on the what’s and why’s of DevOps implementation can be found in our previous blog titled “A practical approach to DevOps adoption”.
Based on the architecture and technology stack of your mobile application, a diverse choice of tools and frameworks are available for implementing DevOps, as shown below:
For each stage of the DevOps lifecycle, we have used a combination of various integration, testing and automation tools, specific to the tech-stack, to develop and deploy mobile applications.
Requirements Management:
JIRA and Confluence are the primary tools used for Requirements management. User stories are created on JIRA and project management & workflow discussions are captured on Confluence.
Development and Continuous Integration:
Irrespective of your technology stack and type of mobile application, Continuous Development (CD) and Continuous Integration (CI) including source code control, review, code integration etc. can be driven using the tools shown above.
Continuous Testing:
Successful DevOps implementation is largely dependent on the ability to automate all critical stages of the application development process, including testing. Core testing functions such as performance, acceptance and regression testing can be automated using the tools mentioned above, across various tech-stacks.
Deployment
Deployment of mobile applications to a production environment is predominantly driven by the customer’s business environment and deployment preferences. For a cloud-based deployment, some of the popular services used are shown below. For non-cloud based deployment, the applications can be hosted on local servers, which could either be located on-premises or at a co-hosted facility.