DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
11 Monitoring and Observability Tools for 2023
Learn more
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. DevOps and CI/CD
  4. Why DevOps Engineers Suck at the Mobile Ecosystem

Why DevOps Engineers Suck at the Mobile Ecosystem

Learn the most common mistakes DevOps engineers make when working with the mobile ecosystem so you can avoid them.

Shashikant Jagtap user avatar by
Shashikant Jagtap
·
Sep. 19, 18 · Opinion
Like (1)
Save
Tweet
Share
4.77K Views

Join the DZone community and get the full member experience.

Join For Free

The latest TechRepublic post revealed that as per the Stack Overflow Developer Survey 2018, DevOps Specialist is the highest paid programming job in the IT industry. There is no shortcut to becoming a DevOps Specialist; it comes from hard work, continuous learning and years of experience. As DevOps engineers roles require knowledge of millions of tools and technologies, it also requires soft skills to deal with different teams. The typical DevOps Engineer's toolbox includes Jenkins, Docker, Ansible, Chef, Puppet, AWS, Azure, Terraform, Kubernetes, and many more. It turns out most DevOps engineers are very good at implementing these tools in organizations to deploy web applications. However, when it comes to mobile applications, this toolkit doesn’t always work, especially for Apple apps. In this post, we will see what skills traditional DevOps engineers lack to become a full stack DevOps engineer and how mobile DevOps is becoming key in recent days.

How Mobile DevOps Is Different

Managing infrastructure for web and mobile are completely separate activities. There are some unique challenges when it comes to managing mobile infrastructure. These challenges are platform- and operating system-specific. Most of the web is currently running on Linux, however, building iOS apps requires infrastructure to manage macOS servers. We will see the major differences between web and mobile DevOps.

Operating Systems

DevOps engineers mostly use Linux as the primary operating system. Some of them still use Windows servers. It’s very important to know on which platform the production is supposed to run. In the case of websites, most production code runs in the browsers, while in case of mobile apps, it runs on the real devices (Android, iOS, etc).

Hosting Servers

Websites need to be hosted on the servers running inside the data center or in the cloud. Most companies are moving their infrastructure to the cloud, so DevOps engineers use AWS, Azure, or other cloud platforms. They also need to monitor all the servers to make sure the website is running without issues. Mobile applications are hosted on the App Store or Play Store, and once they have been released, mobile apps don’t need to be monitored for hosting, as the App Store or Play Store will take care of hosting.

Deployments

Web deployments are push-type, where we can push the code change to production and users have to accept all the deployed changes. Mobile deployments are pull-type, where we have to submit an app to the App Store for review and then Apple or Google will review an app before it goes to the end users. Once released, mobile apps need to be explicitly updated by the users. This is the major difference that needs to be considered in mobile DevOps.

Tools & Technologies

The technologies used in web and mobile application development are very different. Websites can be built by various web technologies like Java, Ruby, and JavaScript while native mobile apps are built using languages like Swift or Kotlin. There are some hybrid apps built using languages like JavaScript, but there is a major difference between the technologies used in the web and mobile. The tools used for build, test, and release automation are also differing in web and mobile ecosystem. The web ecosystem uses different language-specific build tools while the mobile ecosystem uses Fastlane, Gradle, etc for build automation. There are some major differences in the testing tools as well. Tools like Selenium or Web drivers are being used in the web while tools like XCTest, Expresso, and Appium are being used in the mobile ecosystem.

Code Signing

Mobile applications need to be code signed before shipping to the App Store, while web applications don’t need to be code signed. The process of code signing makes sure that applications are built by a trusted developer and gives the user the confidence to use them without any worries.

We have seen some of the major difference between web and mobile DevOps. Now, let’s explore the common mistakes DevOps Engineers make when they are asked to manage mobile infrastructure.

Reasons DevOps Engineers Suck at Mobile

In the most companies, DevOps for mobiles apps has been completely outsourced to cloud-based CI services like TravisCI, CircleCI, or similar services. Cloud-based CI services are very expensive and they charge companies on the basis of the number of builds, number of projects, number of concurrent builds, etc. Most in-house DevOps teams who are doing amazing things for Linux often refuse to manage mobile CI/CD in-house because they can’t simply do it. DevOps engineers great at Jenkins, AWS, Docker, Kubernetes, Ansible, etc don’t always have the skills to manage mobile infrastructure. The most common reasons for this are that the tools and skills required for mobile infrastructure are different than web or Linux. When DevOps engineers are asked to manage the mobile ecosystem, they truly suck.  Below are some of the common mistakes DevOps engineers often make.

Applying Jenkins Everywhere

In the traditional DevOps, Jenkins is de facto standard for continuous integration and delivery for web apps. There might be so many Jenkins servers hosted on the AWS or some other cloud within Docker containers. Although Jenkins is a great CI/CD server for web apps, it doesn’t always fit into the mobile workflow. DevOps engineers typically set up Jenkins to run mobile builds. In iOS apps, Jenkins needs to be installed on the macOS server, which is kind of a pain for DevOps engineers. Once set up, Jenkins for mobile CI/CD goes through constant hassles and repairs which cause distractions for native app developers. DevOps engineers should go beyond the boundary and find suitable CI/CD tools for mobile DevOps.

Lack of Platform-Specific Knowlege

DevOps Engineers are great at the Linux platform. They can configure, provision, and manage all the infrastructure on Linux. However, when it comes to other platforms, like macOS, they don’t have the skills to configure, provision, and manage macOS infrastructures. There is a completely different set of tools being used on macOS than Linux, like Homebrew, security, and many more command line Apple developer tools.

Not Aware of Mobile Tooling

As mentioned earlier, the set of tools used for mobile build, testing, and release automation are way different from web tooling. The tools used for beta testing mobile apps are also different. A good example of these tools is Fastlane, CocoaPods, Carthage, Homebrew, Fabric, XCTest, Expresso, Xcode command line tools, and many more Apple developer tools. DevOps Engineers working on the Linux platform might not have heard about these tools.

Choosing the Wrong Tools

Due to lack of awareness of mobile tooling, DevOps Engineers end up applying tools that they already know to the mobile ecosystem. This adds complexity and overhead to maintaining mobile infrastructure. DevOps Engineers might end up automating a Swift build using tools like Maven or Rake, which don’t make sense for the mobile ecosystem.

Code Signing Ignorance

DevOps Engineers are often involved in the deploying the web apps, which doesn’t always require code signing. When it comes to the Apple platform, the code needs to signed with an authorized certificate and profiles. Code signing of Apple apps requires a developer account with Apple, certificates, provisioning profiles, and entitlements. There are separate tools required for the provisioning and automated code signing tasks.

Conclusion

Managing mobile infrastructure in-house requires skills, guts, and courage. If DevOps team can’t manage the mobile ecosystem and are still using highly expensive cloud-based solutions, what’s the point? How does the DevOps team in your company manage mobile CI/CD? Is that working well? I look forward to hearing your experiences. Please weigh in in the comments below.

mobile app DevOps Engineer Continuous Integration/Deployment

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • How To Build an Effective CI/CD Pipeline
  • Build an Automated Testing Pipeline With GitLab CI/CD and Selenium Grid
  • Use Golang for Data Processing With Amazon Kinesis and AWS Lambda
  • Microservices 101: Transactional Outbox and Inbox

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: