Save to My DOJO
Hello again everyone! I’m very happy to be able to bring you the next installment of our long-running Containers for MSPs series!
As always, we’re continuing to build on the huge amount of container focused material that we’ve already covered in this series, all through the lens of an MSP. We’ve covered things like container networking, how to run Linux Containers on Windows Server, and even suggested pricing models. While most of the content has been very technical in nature, I wanted to do something a little bit different today. Recently I’ve been getting a lot of questions about containers vs. serverless, or even people asking me if they’re one and the same. This by no means will be a deep dive into serverless architecture, but I wanted to spend a little bit of time today defining what serverless architecture is and talk about the key differences between the two.
First off though, let’s recap where we’ve been thus far in this series with the below list.
The Definitive Guide to Containers for MSPs
Part 1 – What are Containers?
Part 2 – Platforms for Running Containerized Workloads
Part 3 – Introduction to Docker
Part 4 – 4 Pro Tips for Working with Docker
Part 5 – How to Run Linux Containers on Windows Server 2019
Part 6 – How to Create Persistent Docker Containers
Part 7 – Docker Container Networking – Part 1
Part 8 – How to Setup a Linux Container Host
Part 9 – How to Run a Container in Azure with Azure Container Instances
Part 10 – 4 Considerations for Pricing Container Services
Part 11 – Docker Container Networking Part 2
What is Serverless Architecture?
We’ll start with the question of: “What is serverless architecture?” It seems like such a strange definition, right? For as long as we’ve been doing business IT there has been the concept of a server, or host system that “serves” something to client endpoints. So how can we provide the same services without a server right? Really the definition comes from today’s cloud computing era.
Even though the name says “serverless” it doesn’t mean there AREN’T servers involved. It just means that the person or organization running the compute workload doesn’t need to roll-out and manage their own servers or services to conduct the work. A platform such as Azure Functions or AWS Lambda is used and they both have access to the resources and services on their particular platforms. Think about how the cloud consumption model works. You pay for resources used, and if you’re using a VM for example, there is a good chance that you’re not consuming those resources at 100% capacity at all times. This leads to extra costs and wasted resources.
Serverless addresses this issue head on. Instead of relying on “servers”, a simple Event – Execution model is followed within the cloud platform itself. For example, an alert gets raised about an Azure PaaS SQL DB, a function could then then run to conduct a DB clean up. All of this is done in the Azure platform and doesn’t require any infrastructure on the user’s part. In short, you’re using the most base parts of the cloud platform and consuming only the resources that are necessary to get the job done, which is great for cost savings and scalability.
Figure 1: Function App Dialog in Azure with Description
There are some drawbacks though, and this is where the containers vs. serverless discussion comes into play.
Why Would I Choose Serverless over Containers or Vice-Versa?
Learning Curve – If you think containers are too new and have a steep learning curve, serverless is worse. If you think containers feels too “dev-ish”, serverless feels even more so that way. While most IT Pros and operations folks can wrap their heads around containerization, serverless can seem completely foreign.
Infrastructure Management – Despite many claims of simplicity, the fact remains that administrators still have to manage the “plumbing” when It comes to containers. You still have to manage the container host, the container networking, the container images….etc..etc. With serverless you don’t. You simply consume the core resources as needed. This can be a pro or con for each platform depending on your needs.
Platform Dependence – When you deploy serverless functions in Azure Functions or AWS Lambda, you are marrying that platform. That serverless function is dependent on said platform and any attempt to “divorce” the platform could be painful and messy depending on how integrated the workload is. One of the beautiful things about containers is they can quite literally be moved and run anywhere and across multiple platforms. Additionally, this platform dependence also puts you at the mercy of the vendor as well. For example, let’s say that you’re using AWS Lambda, and AWS decides to make a change to one of their APIs. In most cases it’s fine, but it could break your workflow as well in the worst-case scenario. Containers allows you to retain control of the entire stack.
Death by Complexity? – While some would call containerization complex and granular, serverless provides the ultimate in granular computing. This is both a pro and con of the serverless approach. Yes, you’re only consuming the core resources you need to get the job done, but it can be easy to overdo it, and by the time you’re done you have a complicated mess to manage and maintain if you’re not careful.
Longevity – Some industry experts believe that we’ll be skipping right over containers soon and going straight to serverless while containerization goes the way of the dodo. I see the allure of going straight to serverless. However, I’m not convinced that’s what is going to happen due to many of the pros and cons I’ve listed above and throughout this containers series. It also comes back to the argument of cloud vs. on-prem. Some organizations what the ability to run containers and microservices on-prem and not in the cloud. Currently there is not way to do serverless on-prem to my knowledge.
Wrap-Up
As you can see there are compelling arguments for both cases, and both options have a valid use in my opinion. If you’re trying to decide on one over the other, I don’t think that’s a necessary decision at this point because I really think both options are going to be around for the long haul. If you have a dev background maybe serverless is more enticing. However, if you want the option with the lowest learning curve for your engineers, go with Containers.
What about you? Have you looked at serverless computing? Have you had difficulty determining a use-case for your MSP? Have you found it to be useful? Would you choose one of these over the other? Let us know in the comments section below.
Thanks for reading!
Not a DOJO Member yet?
Join thousands of other IT pros and receive a weekly roundup email with the latest content & updates!
1 thoughts on "Containers vs. Serverless Architecture – Which Should Your MSP Use?"
Severless architecture is being adopted by almost all businesses these days. Great explanation about the difference between serverless and containers. Thanks for sharing this information up here.