VMs or Containers? Get the Most Out of Your Edge Computing Workloads
Most companies have embraced cloud computing, and overall, it’s a win, with faster application workload deployments, easier scaling and elasticity, and overall less time spent managing underlying physical data center infrastructure. However, traditional cloud computing isn’t perfect for every situation.
Traditional cloud providers such as Microsoft Azure, Amazon AWS, and Google Cloud Platform (GCP) have data centers across the world. While each provider’s data center numbers are increasing rapidly, these data centers aren’t always close enough to the users when an app needs to provide maximum performance and minimal latency. Think of your frustration when you play a multiplayer game and your frames drop, or when you stream a movie and the video or audio stream lags.
When speed matters, or where generated data should remain close to the users, edge computing helps. In this article, we’ll compare two ways to use edge computing: edge virtual machines (VMs) and edge containers, and help you decide which is best for your needs.
Why Edge Computing?
The major cloud providers offer a limited number of data center regions. While they have impressive compute power capacity, there are still only about 150 regions across the top three providers, most in the same area. They cover a small part of the world map.
Edge computing runs on a much larger number of smaller-sized data centers around the world. It uses points of presence (PoPs), typically located close to where users consume data or close to where data is generated. These PoPs use fast, reliable network connectivity and run on powerful hardware.
Deciding between traditional cloud or edge computing is not an “either-or” proposition. Edge computing complements or enhances services running in traditional cloud providers’ data centers.
There are several cases where edge computing should be the main provider (and is sometimes the only viable option to avoid latency):
- Streaming – Users are moving toward streaming everything instead of downloading. They expect streams to begin immediately, making this an ideal case for edge computing. Examples include podcasts, music and videos.
- Gaming – Leaderboards, matchmaking, and multiplayer gaming benefit from ultra-low latency.
- Manufacturing – Internet of things (IoT) and operational technology (OT) in manufacturing provide interesting opportunities to optimize remote monitoring and management, as well as operate machinery. Packaging, warehousing, construction, and similar businesses can now operate remotely. This is especially beneficial at hazardous sites, for example, as it eliminates the need for certain workers to be on site.
Now you know the core concepts of edge computing, as well as some of the common use cases where edge computing is beneficial. Let’s zoom in on how you can host these edge applications using edge virtual machines or edge containers.
In short, virtual machines are virtual machines, no matter where they run. Starting from the physical layer, known as a bare metal server, virtual machines rely on a hypervisor (VMware or Hyper-V, for example) to share compute power (processor, memory and storage) among different virtual machine instances. Each virtual machine runs as an isolated unit, with a full operating system available, supporting just about any kind of application workload. Virtual machine architectures dramatically contribute to elasticity, scalability, and optimized availability of such workloads.
The virtual machine’s operating system requires regular patching, updates and maintenance. Monitoring is crucial, to guarantee the health of the virtual machine instances and the underlying bare metal infrastructure. You also need to consider backup and disaster recovery operations. All this adds up to plenty of monitoring and maintenance time.
VMs are ideal for running multiple applications on the same machine. Depending on the workload, this can be an advantage. Imagine you want to run multiple websites with different versions of Tomcat or .NET. You can run them side by side without conflicting with other running workloads.
Virtual machines also let you easily port existing applications to the edge. If you use an on premises VM or a public cloud architecture, you can almost use a lift and shift approach — where you don’t change the state of the application setup nor the operating system — to migrate the VM to an edge server.
If, at some point, you need to migrate to a newer version of the operating system, this can affect the VM’s running applications and interconnected workloads. Think of a migration from Windows Server 2012 R2 to Windows Server 2019 or from an outdated to an up-to-date Linux version. It’s generally not a good idea to upgrade the same virtual machine in place. You can deploy the latest version on a new virtual machine, then migrate the data, which can be complex. Or, you can clone the VM, update the cloned VM, and if all is well, make that the main version, maintaining any fixes you have put in place over the years.
Because there is a complete system (operating system, application and data) available, supporting and running about any application possible, VMs are a perfect hosting solution for edge computing.
While virtual machines have been around for years, containers have emerged as a popular (and sometimes necessary) computing unit.
The reemergence has been driven by developers migrating away from traditional centralized application architectures. Instead of large, monolithic applications—requiring monolithic computing environments—developers are designing applications as collections of much smaller, independent “microservices.” Each microservice can be deployed in its own container, and those containers don’t even have to be in the same physical location.
A container is an isolated, sandboxed instance of a specific part of an application. Containers still provide elasticity and scalability, but typically not for all containers in an application architecture, just the specific component that requires scaling. Once you’ve built a container image, it’s easy to spin up additional copies of the container and load balance between them as needed.
Docker is probably the most popular brand when discussing containers, together with Kubernetes. The Docker software framework enables you to containerize your applications. Kubernetes is not a container engine but is described as a container orchestrator, an intelligent management and monitoring tool for big, complex containerized environments.
Similar to containers you’ve seen elsewhere, edge containers are not full virtual machines. They only contain the user space and share the kernel with other containers running on the same machine. Sometimes, this is interpreted as offering less isolation than virtual machines. For example, all containers running on the same host share the same network stack and have access to the underlying operating system. Although this rarely causes problems, it may be a blocker for applications that require deep access to operating system features provided by the kernel.
Edge containers are ideal for running a single process within each container. Besides containers typically having a smaller footprint than a virtual machine, other differences include:
- A container doesn’t have an operating system as part of the running container, but rather relies on the host’s (virtual machine or bare metal) operating system. This means that all containers on a host share the same underlying host infrastructure.
- A container typically runs a specific, single task, and can only understand that specific task. For example, if you have a .NET core application, the container can only run that specific version of the .NET core application. If you need to upgrade the kernel or framework version, you compile (build) a new version of the container.
- Containers typically have a faster startup time than virtual machines: a few seconds versus a few minutes.
How to Decide Between VMs and Containers
Deciding between virtual machines and containers isn’t as straightforward as some might think. Given the popularity of Docker and Kubernetes, you would almost think if you are not using containers, you are doing it wrong.
Containers are ideal when your application allows for microservices architecture, with application components running and scaling independently from each other. As long as your public cloud or edge computing platform offers a Docker engine, your containers can run anywhere. There is also less administrative and operational overhead.
Virtual machines are still recommended when you need to access a full operating system, because your application requires specific operating system integration not available in a container. If you want more control of the application architecture, or if you want or need to run several applications on the same server, you require virtual machines.
When you are considering the architectural aspects of edge computing, edge virtual machines, and edge containers, you need a secured edge provider like StackPath. With over 50 PoPs globally, integrating powerful content distribution network (CDN) services for caching and optimizing streaming data, StackPath also provides advanced security, such as DDoS protection and SSL/TLS, for all connectivity. This connectivity routes over 100 percent private network links, providing +65Tbps total throughput. From a management and operations perspective, all integration is available from RESTful APIs, enabling you to automate processes and deployments.
Edge computing is an option for workloads requiring low latency connectivity and high performance. Workloads like gaming, streaming and manufacturing are typical candidates. You can serve the data streams from close to the consumer, or keep the data close to where it is generated, closer than public cloud data centers.
Edge computing has traditional architectures like in on-premises data centers and public clouds, based on virtual machines and containers, without much difference. The only real difference is that edge computing allows for faster connectivity for users, improving their online experiences.
Now that you know more about edge computing, including the difference between edge VMs and edge containers, you can decide what is right for your needs. To learn more about StackPath edge computing, and try it out for yourself, get started today.