A development team’s primary role is to design, write, document, and test code for specific software projects; however, this is just one aspect of software engineering.
Software also requires deployment, scaling, networking, maintenance, and monitoring to continue running, as well as an operations team to make sure these pipelines are running smoothly and adapting to both internal and external changes.
“In some contexts, the development team might be perceived as introducing change or uncertainty, while the operations team strives for stability and order, so these teams often are at odds with one another,” explains Matt Giallourakis, Haneke’s Lead Mobile Developer.
This is where DevOps, a methodology that harmonizes development and operations, comes into play.
One key aim of DevOps is to merge project source code and infrastructure configuration, allowing dynamic adjustments in response to evolving requirements. This integration is typically achieved through Infrastructure as Code (IaC) and Cloud Build Services, which seamlessly bundle processes like building, deploying, hosting, and automating with the project’s source code through configuration files and APIs.
Mobile DevOps: Fastlane and EAS
Many software projects don’t have just one version or deployment target at any given time. There are often many internal development and testing branches handled by version control systems and deployment services, all with configurations outside of the project code itself.
“For mobile projects, app stores additionally require metadata (such as in-app screenshots, pricing details, and data retention declarations), some of which don’t exist within the apps themselves and so need to be entered within the store dashboards manually,” Matt explains.
Born from DevOps principles, various tools exist to automate the building and submission of mobile apps through configuration files and terminal commands.
Fastlane provides a suite of tools to make store submissions faster, safer, and more reliable. Fastlane’s Snapshot tool automates generating and uploading screenshots of an app, the Deliver and Supply tools update store metadata, and Gym and Pilot handle submitting apps for building, deploying, and distributing apps for testing.
Expo Application Services (EAS)
EAS is currently made up of these three services: Build compiles and signs Android and iOS apps with custom native code in the cloud, Submit uploads an app to the Google Play Store or Apple App store from the cloud with one CLI command, and Update pushes quick fixes to end-users without having to release a new version through the app stores.
Additionally, two more services are on the horizon: Metadata (which uploads all app store information required to get an app published) and Insights (which provides analytics about a project’s performance, usage, and reach) are in Beta and Preview stages, respectively.
Backend DevOps: Terraform and OpenTofu
Terraform is like a digital architect for your IT infrastructure. Imagine you’re building a house, and instead of manually laying each brick and hammering every nail, you tell the architect what you want, and they create a blueprint. Terraform does something similar for your computer systems and cloud services.
With Terraform, you write down how your infrastructure should look in a simple configuration language—things like servers, databases, networks, and more. Then, Terraform takes this “blueprint” and automates creating and managing those resources, whether in the cloud (like AWS or Azure), on-premises, or even a combination of both.
“It keeps track of what has past builds and helps you make changes or additions without causing configuration issues going forward. This automation saves time and reduces the chance of human errors, making your IT infrastructure more reliable and easier to scale,” explains Jonathan Ghandforoush, Haneke’s Lead Backend Developer.
Terraform empowers you to treat your infrastructure as code, just like a software program, making it flexible and repeatable. Whether setting up a web application, a complex data center, or anything in between, Terraform makes the process more efficient, manageable, and less error-prone by automating the heavy lifting of infrastructure management.
For all its great qualities, Terraform does have some downsides. The main one being that it recently became closed source. Which gave rise to OpenTofu/OpenTF, an open source form of terraform that is managed by the Linux Foundation. It does everything Terraform can do, but as an open source platform, it thrives and grows with community engagement!
Universal DevOps: Workflows
Many of the tools above are instances of Workflows, or automation scripts that run in response to specific triggers or events, usually run in the cloud. Github Actions take this to the extreme by spinning up a virtual environment that can run sequences of custom terminal commands, and thousands of preset automations from Github’s Marketplace, on a repository.
“Actions can be triggered by numerous events, like whenever code is merged, an issue is opened, or even via webhooks so that other integrations can initiate an action,” Matt explains.
In the spirit of DevOps, the configuration file that describes what kind of virtual environment to build and what the steps to run is contained within the project itself, meaning that it also benefits from version control and portability.
Just recently, MacOS M1 runners have entered public beta, meaning that Actions can now make use of Apple Silicon-specific commands and build processes.
The landscape of software development and operations is vast, intricate, and ever-evolving. As we delve into the nuances of Mobile, Backend, and Universal DevOps, it becomes clear that the bridge between development and operations—DevOps—isn’t just a buzzword; it’s a necessity in our modern digital world.
Beyond just tools and technologies, the underlying message is about collaboration and integration. Development and Operations, once seen as opposing forces, are now converging, breaking down silos, and working harmoniously to deliver robust, scalable, and maintainable software.