Words of notice: This is an article I wrote for Gekko. Many thanks for their consent to sharing this story here.
A niche market?
We live in a hyper-connected world, composed of a large majority of highly portable devices including smartphones, tablets and laptops. New devices open up new opportunities: smartwatches, smartglasses and smart TVs. All these high-tech components of our daily lives are smart because they do more that their main purpose which is to telephone, send messages, tell time or stream your favorite shows; they allow you to program or use their potential through the means of apps.
What is an app, basically? It is a piece of software which will run on your device. Common apps serve a purpose such as watching online streamed content, playing games, tracking your physical activity or keeping in touch with your friends and relatives.
Apps run on Operating Systems, or OS for short. An OS orchestrates the ecosystem around the apps and handles permissions, sensors, user interactions so that the apps can do that in a simplified and performant fashion. In terms of highly portable devices, there are two main ecosystems and OSes to consider today: Android / AOSP and macOS.
Without entering too much into details, Android is historically based on Java. Java allows to run applications “anywhere”. Given the right toolset, you should be able to build Android apps from a wide variety of devices including Apple devices.
It is the Apple ecosystem that adds limitations here. Indeed, you need to prepare your app on an Apple device in order for it to run on other Apple devices. You would not have any other choice than to use your own equipment to compile, test, sign and notarize apps or some neutral equipment in your company.
AWS is driven by customer needs and the Apple ecosystem development has had this need for a very long time. As Cloud engineers specialized in AWS, we also had to deal with this question, with no satisfying answer. Until today, with the release of a family of EC2 instances dedicated to macOS!
These instances are currently backed by actual Intel-based Mac Mini devices supporting macOS Mojave 10.14 and Catalina 10.15 with plans for Apple Silicon M1 based devices and macOS Big Sur in the future. Nothing reads the specifications better than the announcement:
EC2 Mac instances are powered by a combination of Mac mini computers—featuring Intel’s 8th generation 3.2 GHz (4.6 GHz turbo) Core i7 processors, 6 physical/12 logical cores, and 32 GiB of memory - and the AWS Nitro System, providing up to 10 Gbps of VPC network bandwidth and 8 Gbps of EBS storage bandwidth through high-speed Thunderbolt 3 connections.
Without forgetting the official blog post, which delves into some details to get started.
Before starting using the instance family
You might have noticed that the announcements mention support for AWS EC2 Nitro. What and why is it?
Virtualization is a common theme in infrastructure. For short, it answers questions related to sharing physical appliances and making sure that no user can interfere with the others. Virtualization in AWS is an even more common theme so that it became the central theme of Dr. Werner Vogels’s re:Invent 2019 keynote.
The difference between “classic” virtualization and AWS EC2 Nitro lies in the details. Virtualization commonly hides the hardware behind standard interfaces, notably the I/O, storage and networking. Physical hardware is exposed to the contents of the instance through a hypervisor. It would be wasteful if the instance had to manage workloads and its I/O, storage and networking, especially when running datacenters packed with compute instances that are used for other services!
AWS EC2 Nitro endgame
AWS has been phasing out Xen in favor of AWS EC2 Nitro for that reason. The latter offloads as much components as possible out of the Amazon EC2 instance into dedicated servers in order to keep the hypervisor minimal. For AWS, this simplifies the development of new offerings and opens major upgrades in terms of performance!
Apple devices are not known for being virtualizable. Here, even tough instances are not shared between customers, you still need to ensure that the data left on the instance cannot be read by someone else once you shut it down. Note however that AWS EC2 Nitro relies on PCIe. Mac instances rely on hardware connected via Thunderbolt, which is a combination of PCIe and DisplayPort!
Minimum reservation duration
If you have started creating your instances before finishing this article, you might have noticed that you could not start and stop your instance immediately: you would need to reserve a bare-metal instance for 24 hours or more. This odd limitation actually comes from Apple’s Software licence agreement for macOS Big Sur. A quote:
Leasing for Permitted Developer Services.
A. Leasing. You may lease or sublease a validly licensed version of the Apple Software in its entirety to an individual or organization (each, a “Lessee”) provided that all of the following conditions are met:
[…] (ii) each lease period must be for a minimum period of twenty-four (24) consecutive hours; […]
The topic of virtualization of Apple hardware has always lived in a gray area until very recently so even though there have been competitors in the field and plenty of possibilities to serve companies that develop software for the Apple ecosystem, there was no definitive limit to what they should allow or not. This release is a leap forward in that direction as well.
macOS Big Sur is not supported at the moment, which would make this argument null and void, except that supporting that version of the OS would then require to enforce those same licence terms at that time. This is technically challenging and could be seen as a major downgrade in terms of flexibility of the service.
You may find these new instances in the US East (N. Virginia), US East (Ohio), US West (Oregon), EU (Ireland), and Asia-Pacific (Singapore) regions starting today. Their price covers management cost that you would not have to carry out locally any more and their integrations with various other AWS services.
Savings plan for EC2 mac instances
If there is an intention for long term usage of such instances, check out Savings Plan and search for “mac1” in the “Compute Savings Plans for Amazon EC2” or the “EC2 Instance Savings Plans” tabs, for your favorite region and in “Dedicated Host” tenancy.
Your turn now
While this release is certainly not for everyone, it is a welcomed move from AWS and Apple. CI/CD for the Apple ecosystem has now a new challenger with plenty of perspectives for the future. We are truly excited to capture these ambitions into our future designs.
If this preliminary introduction to this new offering has captured your interest, the next step is to learn more about the Amazon EC2 Mac family.