MAAS: Flexibility of the Cloud, Performance and Reliability of Bare Metal!

Eric Londo
The Startup
Published in
8 min readJan 16, 2020
A Typical Server Room. Photo Credit: www.racksolutions.com.

In today’s rapidly evolving technology market, it can be increasingly difficult to wade through the immense variety of solutions involved in deciding the type of service(s) your company requires, the options that are best suited to your unique work environment, and the cost implications of such services.

With decreasing costs in the cloud computing market, it has become ever easier to set up shared software applications, development platforms, or digital infrastructure, while never having to deal with the gritty details that come with hardware installation, configuration, and maintenance. However, not all cloud computing solutions are created equal. For example, typical cloud usage for application development is not necessarily the best option for every business, especially when raw performance is of utmost importance. Enter “Metal as a Service” or MAAS.

What is meant by “as a Service?”

For some context, let’s take a look at some other popular cloud services that are commonly provided to companies and users:

“Software as a Service” (SaaS) is an extremely common way for businesses to develop software and lease it to you or your company with an associated fee through an Internet subscription model. This can be advantageous if you have a large employee base that utilizes the same software applications frequently. Due to its integration with the Internet, SaaS is extremely useful because it is platform agnostic, does not require installation and maintenance of software applications on local machines, and usually provides an easy way for users to share project files seamlessly.

SaaS allows a single instance of the software application to be run, while still making it available to all of your employees that need access to it. In addition, the storage and resources required to run and update the software packages are the responsibility of the vendor, which can save on cost dramatically.

Examples of SaaS include G Suite, Microsoft Office 365, and Salesforce.

“Platform as a Service” (PaaS) is becoming more and more popular due to the vast amount of providers for nearly any price level. PaaS is primarily aimed toward creating easy, flexible, and full-featured development environments for businesses that create, test, and maintain web sites, software applications, or other large programs. With the PaaS model, companies are expected to manage their own data as well as the application resources, while all other resources are provided by the vendor. PaaS usually consists of four main components: a programming environment, an operating system, some type of server, and a database.

Due to the abstraction layer of the cloud, developers who use PaaS solutions no longer have to worry about the underlying infrastructure that their application is running on and are allowed the flexibility to scale their projects as they reach larger and larger audiences.

Examples of PaaS include Google App Engine, Cloud Foundry, and Heroku.

“Infrastructure as a Service” (Iaas) can be very important for large companies with complex server setups and large amounts of important data being stored. IaaS is typically used by system administrators, but can be used for a multitude of purposes from hosting large websites to storing and analyzing big data. One big difference when comparing SaaS and PaaS with IaaS is that IaaS will typically not be utilized by your users or employees outside of those working on your IT or system administration team.

IaaS provides the basic computing infrastructure, including servers, storage, and networking. However, all other pieces of the environment, such as the operating system, development environments, and software packages are decided on by the company utilizing the service. This makes it incredibly flexible to suit the higher-level computational needs of your company. IaaS acts like a virtual server center that is available to your company at all times.

Examples of IaaS include OpenStack, Amazon Web Services EC2, Google Compute Engine, and DigitalOcean.

In summary, the main difference between these three cloud computing services is related to how much of the software stack your company wants to manage versus how much the vendor manages.

So, where does MAAS fit into all of this?

Visualizing the concept of MAAS can be made easier if you compare it to purchasing your own on-premise server.

First, you would have to put up a few thousand dollars just for the hardware infrastructure required to build your system in the first place. Additionally, you will need to hire and keep a decent-sized team of expert administrators, hardware technicians, and software engineers solely dedicated to building, configuring, maintaining, and upgrading your servers and all the components that come with it. And last, you will take on all the resource costs that come with running the server itself, which can be a hefty bill in and of itself. Sounds like you fell off of a time machine back in the 1990s, right?

Even with these cost downsides, there are a few major positive gains that can be provided by running a server on-premise. First, running anything on bare metal is always going to have performance gains over using virtualization abstraction layers.

You can try this at home. If you have Office 365 capabilities, try opening and editing a Word document from your local machine and then try opening and editing the same Word document in your web-based Office 365 Suite. The difference in speed between the two may not be as dramatic as you would expect, but running the application on your bare metal WILL be slightly faster.

Now, imagine you were not running a simple text editor but were scaling a massive application. Those tiny, not-so-dramatic speed differences begin to add up. Add in the fact that many of these applications are now written in high-level (but slowly performing) programming languages such as Ruby or Python in place of C or FORTRAN, and you will find even more drastic performance issues. Some of this speed up is in part due to not using virtual environments, which can take up considerable resources and are much less flexible than bare metal.

Additionally, another definite plus is the fact that you have complete control over the hardware and software that goes into the system. Working on machine learning and need a specific model of GPU to fit your workload? No problem, just set it up with those GPUs in the first place (or write your code to conform to the GPU you picked in the first place!). Now, you have full control of the low-level resources to fine tune your software to the hardware stack underneath, which can increase speed, allow your code to be more efficient and expressive, and make you a very happy customer.

Cool, so you’re saying I should just buy my own server?

Well, not exactly.

Now, imagine that you could rent a dedicated server like this with a subscription model similar to the aforementioned cloud computing technologies. This would remove the overhead cost of the physical server, the large engineering team to build, maintain, and upgrade it, and the hefty resources that go along with running it. This is what MAAS is all about: speed, control, and flexibility of your own on-premise server without all the cost related to it.

Simply put, just like with the other subscription models, you can spin up as many servers as you want, whenever you want, and no longer have to deal with the layer of abstraction provided by virtualization. In other words, you gain full control of the low-level hardware architecture, your custom software applications, and everything that falls in between.

Another benefit to using a MAAS solution is that your resources are your own. No more sharing resources with other customers because the servers that you rent are dedicated to you and will gain a considerable speed-up compared to sharing resources in a virtual server stack.

However, just like with everything in life, there are trade-offs to every option. For instance, not every MAAS provider will give you the same level of flexibility with operating systems, hardware selections, and subscription plans.

For instance, a commonly used provider of MAAS for smaller web sites or databases is GoDaddy. Though the price points for their particular plan options are enticing, they are also very restrictive on the availability of options given to the customer. For instance, they only provide a few different operating systems for you to choose from, including Ubuntu, CentOS, and Windows. In addition, the hardware that they provide is inflexible. They do not allow for a wide array of different hardware configurations, but instead increase RAM and storage for their higher-tiered pricing options.

Does this mean flexibility is just another buzzword associated with MAAS?

Absolutely not. Over the years, certain providers of MAAS have become much less restrictive (just as many cloud providers have pushed to include a much wider variety of available options).

One of the more revolutionary services in MAAS is available through Canonical, the company behind Ubuntu, which has risen to become one of the most popular operating systems available in the cloud ecosystem. Canonical’s MAAS subscription allows you to run any operating system that you can think of with any hardware configuration on your own dedicated server on demand.

In addition to the flexibility to configure your system in any way you’d like, there is an extremely helpful and intuitive API that allows you to do anything from designing your filesystem with RAID, LVM, or ZFS, setting up your optimal network configuration, and deploying your server with a few clicks of a button. However, if you enjoy the power of the command line above all else, all of the expansive functionality of the API is available with easy and intuitive commands through a command-line interface (CLI).

Moreover, if you and your team are not tech magicians, the advanced API that Canonical provides to it’s MAAS customers can allow you to automate most of the setup of your server(s) with intuitive guides and always available support. This can allow you to spin up as many servers as you would like incredibly quickly, just as if you were using virtual server technology. This means scalability is extremely simple and will allow your company to grow alongside your products. In fact, you can even start out with just a single dedicated server and continue adding components on demand as your application scales to clusters of any size imaginable.

One of the most advanced features of Canonical’s MAAS is that you can build and deploy hybrid-cloud solutions in almost any configuration you can imagine. With options such as the KVM micro-cloud, you have the ability to choose which of your servers will host virtual machines to be dynamically allocated alongside your dedicated physical servers. This means that you can basically run any of the aforementioned cloud services on top of or alongside your actual dedicated hardware. The best of both worlds!

Wow, that does sound incredible!

Yes, indeed it is. However, this solution may not be the one-and-only for every company. There are many factors to take into account when choosing a solution in this rapidly evolving arena.

Still, if you are a small company looking to build the next generational application, a massive corporation looking for performance upgrades to your current architecture, or anywhere in between, MAAS should be an option that resides at the top of your radar. With the myriad of innovative enhancements to MAAS over the years, such as in Canonical’s system, it may just be the right tool for the job!

For more information on Canonical’s MAAS functionality check out these links:

Key Features

How it Works

Overview of Latest Features

Documentation

Discourse Forum

Thanks for reading! Let me know in the comments what you think about the complex state of cloud solutions today, how you have used MAAS in the past (or present), or anything else that crosses your mind.

--

--

Eric Londo
The Startup

Environmental engineer with a passion in software development, the open source software community, and especially the GNU/Linux OS. Writer at GNOME.