Due to the significant differences between the CI/CD processes of mobile and server applications, CI/CD processes in the mobile world are managed with mobile-specific tools and resources such as Appcircle instead of CI/CD tools such as Jenkins. In this article, we will cover five of the most fundamental differences. Of course, before going into these details, let’s briefly examine the concepts of CI/CD.
What is CI (Continuous Integration)/CD (Continuous Delivery & Deployment)?
CI (Continuous Integration): CI is the control and compilation steps of the source files of the project we develop through a workflow process (Workflow/Pipeline). In this process, before the source files are compiled, control mechanisms such as whether there are breaks, whether quality processes are implemented properly, and the consistency of new plugins are checked. If the expected standards are met, application packages are created.
CD (Continuous Delivery&Deployment): It is the process of delivering/distributing the packages created after the CI process in the relevant environments. While delivery is mostly done by the relevant teams, distribution is mostly done automatically by the system. For example, packages to be released to the test environment can be done automatically, packages to be released to the prod environment can be done by a team.
Why is CI/CD important?
I am aiming for a separate article on this topic, but to summarize briefly, we can say the following:
- Continuous operational work takes a lot of time from developers and infrastructure teams, but it can also be error-prone because it is repetitive and similar work. For this reason, there is a need to automate processes.
- Compiling and packaging processes are CPU and RAM-intensive, which tires the developer’s machine and can prevent it from working. In this case, the developer cannot do other work during the packaging process – which can sometimes take 2-3 hours – and is blocked.
- Since each developer’s environment (IDE, library versions, etc.) may be different, different results may occur after packaging. Sometimes cache-based problems can also occur. For this reason, there is a need for an environment that teams can use in common.
- In order to create and maintain standards in corporate organizations, there is a need for everyone to establish a common structure, and to improve this structure in line with the experiences and to establish an independent structure.
- Packaging and Distribution are not among the main tasks of the developer. Since this type of operation is a different discipline, there may be role conflicts.
DevOps teams manage CI/CD and even CT (Continuous Testing) processes in corporate organizations. However, in the industry, we see that mostly Mobile CI/CD/CT processes are carried out by mobile teams. Because when DevOps is mentioned, disciplines that manage the needs of the backend world come to mind. Maybe it is because the backend is where the subject was born, this is a bit controversial.
Explore the best automation testing tools: https://devopstipstricks.com/exploring-the-best-automation-testing-tools/
In general, mobile teams create and manage a structure using SaaS-based software or in-house open source software (such as Jenksin, Fastlane) to establish their own CI/CD processes. More details on the mobile CI/CD market can be found in the report available at https://jasoncarter.co
Since the disciplines and flows of the mobile world and the backend world are different areas of expertise, the products that stand out in these areas are also differentiated.
CI/CD products that stand out for the backend world:
Bamboo (Bitbucket Pipelines)
CircleCI
GitHub Actions
GitLab CI
Jenkins
Microsoft VSTS (Azure Pipelines
Dozens more tools can be added here.
The prominent CI/CD products for the mobile world can be counted on one hand:
Appcircle
Bitrise
Codemagic
VS App Center
What are the differences in CI/CD processes in mobile and backend world?
According to my own observations, I can list the main differences that attract my attention as follows:
- In the backend world, rules and processes are more flexible and organizations can flex these processes according to their own dynamics. However, in the mobile world, the ecosystem is very tightly controlled by Apple and Google. For this reason, the mobile world has a special process flow. These processes change significantly with updates every year, and following this closely is a job mostly done by mobile teams. For this reason, Appcircle includes processes and industry standard flows according to the dynamics of the mobile world and updates itself according to innovations.
- The technical disciplines (Container Technologies, Messaging, Security, Performance etc.) and lessons learned (best practices) required for expertise in the backend world are completely different from the mobile world. In the backend world, DevOps teams have many different alternatives to their own environments and dynamics in CI/CD processes, while in the mobile world, these processes and implementation methods have more limited options and are strictly disciplined. For example, it is not possible to build iOS applications without a Mac.
- While in the mobile world there is a structure (IPA, APK, AAB) that compiles and deploys the entire project, in the backend world it is more of an inceremental deployment process. In the backend project, it is possible to release even by updating only one CSS, whereas in the mobile world, even one line change requires compiling the entire package. In this case, operational tasks such as retesting the entire package arise. Another difference is that in the mobile world, deployment to devices is required after packaging. On the server side, changes can be published instantly. Appcircle also offers an integrated and automated testing and deployment module for the CD process.
- The packages created in the mobile world need to go through Apple and Google’s review processes in order to be published to the end user, and this process takes time and is completely at the discretion of Apple and Google. In the backend world, the publishing process is entirely at the discretion of the organization itself. Therefore, in the mobile world, it is important to test the packages better and prepare them in accordance with the review processes. Appcircle offers control mechanisms to prevent errors in projects and provides the option of automatic submission to the test channels of the Stores.
- Code signing in the mobile world is a separate bureaucratic process in itself and are separate disciplines that need to be learned for iOS & Android. In the packaging process, it is necessary to manage this with different certificate types according to the target. In the backend world, certificates are more flexible, but the way they are used is completely at the discretion of the organization. Appcircle has a centralized certificate management module that facilitates the process for mobile projects, and its security and management is role-based.
In summary, Mobile CI/CD processes are different from those of Backend/Infrastructure teams, and although mobile teams get support from Devops teams to create and manage these processes, they usually create CI/CD processes themselves. Developers in mobile teams allocate on average 1 in 5 of their resources for these processes. (reference: https://jasoncarter.co)
Appcircle has been launched as a simple-to-use tool that mobile teams can manage their CI/CD processes by taking into account corporate dynamics. You can find more detailed information at https://appcircle.io and follow @appcircleio on Twitter for further updates.
Explore the free devops courses: https://devopstipstricks.com/free-devops-courses-for-beginners/