Azure App Services vs. Function Apps vs. Kubernetes: Which is Better?
Azure App Services, Function Apps, and Kubernetes... all great platforms, in their own way. Struggling to choose between them? This guide should help you make the best decision for you.
If you’re developing a web app, selecting your hosting platform is one of the most important starting points. If you’re keen to automate a lot of the time-consuming tasks, write as little code as possible, and maintain the least amount of infrastructure, then you’ve got three main options. These are Azure App Services, Function Apps, and Kubernetes. But which one is best?
That’s what I’m going to take a closer look at throughout this article.
Introducing your options
At the end of the day, Azure App Services, Function Apps, and Kubernetes are all pretty much the same thing. They’re all hosting platforms, and they all create a foundation on which you can host and serve your applications to clients. If your goal is simply to write code and deploy it to a platform, then it doesn’t matter which one you use. They’re ultimately going to achieve the same outcome.
However, they achieve this same outcome in different ways.
As we all know, writing and deploying code isn’t all there is to it. We also need to know that our applications will perform as expected. So it does matter which platform we choose. Your choice of platform will determine how much computing power you can provide for your applications. It will determine how fast apps can run, where, and what frameworks they need to run.
So what’s the best choice? To figure this out, we need to explore the pros and cons of each option.
The argument for Azure App Services/Function Apps
To keep things a little simpler, I will bundle Azure App Services and Function apps together. They’re different platforms, with different use cases but the hosting model is similar enough for our purposes.
So, on the plus side, there’s one thing that stands out about App Services and Function Apps: their flexibility. The two platforms are hugely customisable and configurable enough to achieve almost any goal that you have in mind, which means they’re great for almost any sort of project. These platforms won't let you down if you want something that’s going to ‘do it all’.
Other advantages to using App Services or Function Apps include…
Ease of use
Even if you’re unfamiliar with either platform, you’ll find them quite intuitive and easy to learn. They’ll be simple for the development team to use. A huge benefit if you’re trying to get something to market quickly.
Both platforms are easily scalable, which means you’re able to increase or decrease capacity as needed to best handle the load and traffic at the time. You may require more CPU, memory, disk space, staging slots, or anything else. You’re in control of what you have access to.
Performance is unlikely to be an issue on either platform. Both allow for vertical and horizontal scaling. While there are fixed boundaries for each type of scaling, this is generally enough for most workloads.
Security-wise, everything is directly built in through Azure Active Directory, so there’s very little extra work that you need to do to keep your applications safe. This can be a big benefit when deploying apps rapidly, as you can save time knowing all necessary security is already in place.
The major disadvantage
There’s really only one downside to Apps Services and Function Apps worth discussing: managing sets of microservices at scale. What happens with Kubernetes is that all your applications are housed within a single Kubernetes ‘umbrella’ that sits in the cloud as its own little unit.
With Apps Services and Function Apps, however, each app forms its own unit in the cloud, which means you could have hundreds of units you need to keep an eye on and maintain. So while you can scale up easily, managing applications at scale can become a headache.
The argument for Kubernetes
Moving onto Kubernetes, the obvious advantage here is that it’s highly scalable for microservice architectures, which was the big downside of App Services and Function Apps. This is where Kubernetes has the edge, especially for businesses planning to deploy new applications at scale.
Other advantages to using Kubernetes include...
It's exclusively container-based
This in itself is a huge part of what Kubernetes is all about. I won’t delve into it right now (perhaps I’ll look at containers in a future post!), but essentially it’s a fundamental building block of Kubernetes. It means you get benefits like ease of deployment and can get rid of any dependency issues.
Just like App Services and Function Apps, Kubernetes is very scalable. It’s easy to match the performance of your website’s needs, or the needs of your application. Scalability brings with it its own set of benefits, like resource efficiency and ensuring you only pay for what you need.
Control over network security
Kubernetes provides you with complete control over almost all aspects of networking and security concerns. This means that you have very fine-grained control over how secure your network is, and your level of risk. It offers complete peace of mind that you’re approaching security in your preferred way.
It's a unified platform
Kubernetes is a unified platform for an array of enterprise applications, unlike App Services where everything is a separate component. A unified platform makes monitoring more centralised, and application configuration more accessible and achievable. This is a huge benefit to developers.
Control over network ingress
Network ingress is how traffic from the external internet reaches your applications. You can have internal traffic and external traffic, and with Kubernetes you have more control over how that external traffic reaches your application. Specific sensitive network endpoints can be hidden if needed.
Segregation of enterprise teams
Kubernetes allows for the segregation of enterprise teams. This means you can give teams the autonomy to develop hosting configurations within predetermined boundaries while operating in a universal platform. So you can find the balance between consistency and autonomy across teams.
The downside of Kubernetes
Now... is there anything not-so-great about Kubernetes? Of course. Nothing is perfect.
The biggest issue with Kubernetes is that it’s much more complex and involved than App Services and Function Apps. Developers can’t just step into it like they can with the other platforms, and there’s a bit of a learning curve. There’s also a lot more that needs to be done initially to get everything up and running, so it’s not always the best option if you need to get to market quickly.
As you can see, a lot of the benefits of Kubernetes are based on the fact that it’s customisable. You have control over security. You have control over boundaries for teams. But the other side of that coin is that there are many ways it can go wrong if you don’t know what you’re doing.
For example, when customising your security settings, you’re leaving yourself open to a potential attack if you don't get everything spot-on. If you fail to set your boundaries correctly, one team can interfere with another team’s deployment, creating a lot of confusion.
So Kubernetes takes a bit more thought in terms of the initial setup. However, once you've got your deployment model sorted, your architectural plan sorted, and your teams sorted, everything there on out should be a breeze. You just need to be prepared for the initial slog.
So-which is best? The answer (as always) is - it depends.
In the long term, it’s tricky to argue for anything other than Kubernetes. Looking to expand your enterprise and move solidly into the world of microservice architecture? Planning to scale significantly in the future? Then it’s definitely worth overcoming the initial hard work needed to get Kubernetes set up. Your upfront efforts get rewarded with a platform that’s super customisable, better for your teams and easier to manage. It puts you in the driving seat.
It’s not always about the long term. Sometimes, you just need to get something out quickly and reliably. And that’s where Azure App Services and Function Apps shine. These platforms are great options for getting to market quickly, and rolling out something simple for your devs to use.
It’s impossible to say that one platform is ‘better’ than the other. It all depends on your needs, goals, and what you want out of it. Hopefully, this guide has helped you understand the differences between the platforms and made it easier for you to decide. But if you still have any questions, then we’re here to help. Get in touch if you need help making the right choice.