Apple released a lot of cool new tech for iOS developers to work on at this year’s WWDC, not to mention the impressive hardware updates; really, who isn’t already planning on mortgaging their home to get an iMac Pro? iOS 11 is bringing with it some impressive technologies such as ARKit and CoreML (a built in augmented reality framework and machine learning framework respectively) as well as a number of features for iPad that make it a much more viable as pro-user device and a target for increasingly powerful apps. Of course with power comes complexity but DevOps is a great way to manage that complexity. Many enterprises are still treating mobile apps as one off projects rather than the long-term / long-commitment software systems they are. Fortunately, we’ve been developing iOS apps from 2008 and have managed to bring the best of DevOps to mobile development.
To get started with DevOps you need to automate your build process. A best practice that we strongly recommend is tying your builds to your source-control system in something like a simplified Git Flow. From a high level, this means that whenever a developer’s feature branch passes a code review (if you don’t have code reviews yet, you should) he or she would create a pull request to a testing branch that once merged would be deployed to a testing service such as Apple’s TestFlight or HockeyApp. This promotes increased transparency of your entire development team and gets testable code into the hands of managers and QA engineers more frequently, helping keep visibility into project progress and identifying potential issues earlier when they are easier and lest costly to resolve.
Once you’ve got automated builds running, the next step is automated testing. A lot of digital ink has been spilled about different testing methodologies and while we prefer a BDD (behavior driven development) methodology it doesn’t really matter which one pick if you don’t have any automated testing at all. The end goal here is that when our developer from above attempts to merges in his feature branch your automated tests will run and the merge can be rejected should any tests fail; additionally, the results of the tests can be pumped back into managers’ email and your team’s communications platform of choice (such as Slack or HipChat), so that the team is always synced up on the projects progress. If you don’t have many tests (or any) in your source-code, that’s no problem. The act of writing tests against existing code will often find and resolve a number of minor issues as well as reduce coupling in your code.
I hope this helps you get started on the DevOps track for your mobile app. If this all seems a little to much for your to jump into on your own, let us get your started with a free strategy session!