A Case Study: How DevOps Plays a Role at Apple Headquarters
Continuous updates and features are key to delivering a consistent and reliable user experience. Software companies need to go the extra mile to compete long-term and build strong relationships with their user base. This is where DevOps comes in.
DevOps is a culture philosophy and agile methodology that combines development and operations. It’s clear that DevOps has a strong presence over at Apple headquarters; on any given day, you’ll find plenty of DevOps engineers positions listed on the Apple market.
In a LinkedIn post, the company stated, “We are passionate about continuously improving the way we enable the software development lifecycle and push the envelope to reimagine cutting edge solutions to engineering problems of scale.”
Here’s how DevOps plays a role over at Apple—from its early heyday to modern times.
Apple’s Minimum Viable Product
Apple has had a lengthy reputation for its secretive nature, which makes it difficult to understand what’s happening behind closed doors in Cupertino. However, you can make some conclusions about their lean approach and agile methodology by analyzing their product history.
For instance, Steve Wozniak built the first Apple computer as a minimum viable device—aesthetically, it resembled more a typewriter than a modern computer.
Since then, the product has gone through a vast number of iterations and code changes.
At the time, however, there were no solid DevOps tools on the market. Integration tools from companies like JFrog weren’t yet in place, and Kubernetes and Helm were far from inception.
Without a structured process, Wozniak and Jobs had to take a manual route to continuous integration and continuous development. Engineer Bill Atkinson even used a Polaroid camera to take a photo of each milestone in the interface development process.
In the book, “Revolution in the Valley: The Insanely Great Story of How the Mac Was Made,” Andy Hertzfield stated, “Instead of arguing about new software ideas, we actually tried them out by writing quick prototypes, keeping the ideas that worked best and discarding the others. We always had something running that represented our best thinking at the time.”
Leveraging the CI/CD Pipeline
Continuous integration / continuous delivery plays a key role in Apple’s software development. This practice is comprised of processes that allow teams to push code changes quicker, re-enforce code integrity and security, and automate build and deployment steps.
There’s no doubt that Apple utilizes this agile methodology. In 2018, they acquired BuddyBuild, a CI/CD service for mobile apps. With this tool, developers are able to build a smoother workflow in terms application beta testing. Buddybuild was quickly rolled into Xcode, an integrated development environment for Apple’s product suite.
The acquisition falls in line with Apple’s approach to integrating tools that build upon its software agenda, and the company has a reputation for buying smaller startups in an effort to leverage new technology. Back in 2014, they also acquired TestFlight, a beta deployment and analytics platform.
Under Tim Cook’s management, iOS update frequency increased by 51%. Test automation helps engineers boost test coverage. Armed with support from CI/CD tools, test scripts can automatically generate builds, deploy those builds, and test them.
Mobile features and applications have become increasingly robust and complex, requiring a more thorough and in-depth testing process. Still, bugs will inevitably slip past automation detection, even if these cracks are notably smaller than those you’d find in a software company that relied on traditional forms of siloed testing. Apple needs to consistently release quick patches when major bugs—and even small vulnerabilities—are discovered.
With these key factors in mind, testing is arguably an important part of the DevOps process, and indeed one of the most notable benefits of implementing DevOps in the first place. And when it comes to software with multiple iterations and nuances, there’s no denying that automated testing—coupled with a much smaller percentage of manual testing—is key.
For instance, when Apple hosted its WWDC conference in San Jose in June 2018, they announced that iOS 12 would be compatible with devices dating back to 2013. This was big news for the tech giant, who has received backlash regarding old devices no longer working and increasing pressure to invest in newer devices for a better user experience. This meant that DevOps teams would have to expand their testing capabilities to include running new operating systems on older devices. With this expanded testing environment grounded in DevOps, Apple became better positioned to run programs flawlessly regardless of the device.