Serverless vs. Containers: which is better for event-driven apps?

Developing, deploying and maintaining apps used to be a very complicated and time-consuming process.

Physical machines had to be supported. Keeping servers, hardware and software up to date were critical tasks that added a lot of time for IT staff.

But thanks to recent infrastructure innovations, developers now have the possibility to rent remote servers and virtual machines from a third party, which would be fully responsible for networking and hardware.

Infrastructure as a service eliminated the non-coding responsibilities for developers, which drove an innovation in new models, approaches and services. Two of these cloud application development methods for event-driven apps are serverless and containers.

Why do event-driven apps require one of these approaches?

An event-driven app is a program that responds to actions generated by a user or system. Events may include a mouse click, keystroke or a program loading.

The event-drive approach is different to batch processing and transactions, because an event can come from any origin, with the frequency ranging from very few events to tens of thousands per second.

Transactions often come from a specific source and in modest numbers. This difference is what’s led many developers to debate the best way to go forward between containers and serverless.

Let’s delve into each of those a little bit more now…

What are the pros and cons of containers?

A container is a piece of software that includes everything needed to run it, including the code, runtime, system tools and system libraries.

Developers can use containers to run any cloud platform or on-premises server. Because they isolate resources, software can be moved from development to production and other stages reliably, regardless of the difference within those environments.

A container’s portability means that the application can be combined with its dependencies and it can be run anywhere, giving containers great flexibility. Containers also give you full control over your event-driven app and manage all resources, security and policies.

There are also no memory or time limits, giving you the time and capacity to determine how your event-driven app behaves.

The biggest drawback with containers is the amount of time it can take to establish and maintain. Ensuring security fixes and container communication takes place when any code changes occur, will fall within your remit as well.

Other drawbacks include the fact that containers are more expensive than their serverless counterparts – plus, there are scaling issues when it comes to monitoring and storing the data within your app. For example, data can be lost when changes are made, or performance can be affected, as storage may not scale well within the app.

What are the pros and cons of serverless?

Serverless is a development approach that replaces virtual machines with power that comes into existence when demanded, and disappears after it’s been used.

A cloud service provider is run by Google Cloud Platform, Azure or AWS, and you can configure events such as API requests or file uploads that trigger your serverless function to execute. When the action is completed, the server goes idle, which means you’re not paying for that time until another action is requested.

A serverless approach provides great opportunities to scale, as concurrent users can be accommodated straightaway, before being scaled back immediately when the traffic calms down, giving you increased performance of your app.

The serverless approach provides your infrastructure, manages capacity and avoids downtime, allowing you to spend less time managing servers and more time on the actual running of your business or organisation.

Through this reduced development time, your products can go to market faster as you’re not wasting time on the infrastructure of your app – it’s already sorted for you. As a disadvantage, with servers sitting idle when traffic is low or non-existent, there can be a lag in executing tasks.

If speed is mission critical to your organisation (for example, if you have a search or e-commerce website) this may not be the ideal solution for you. You’ll also not have much control over your server; your service provider will assign you storage and decide other specifications for you, which could be a hindrance if you have large image or video files to process.

So, what’s the best approach for event-driven apps?

Containers are ideal for complex and long-running apps where you need to have a high level of control and if you have the necessary resources and time.

If you run a large e-commerce website where speed is essential, you may want to consider a container – but for event-driven apps, you might want to go down the serverless route. Given that 6B works with startups that often want to produce a market-ready product quickly, the time you’ll save with a serverless approach is likely to be the option for you.

The complexity of your app will have a large say in this, as speed can slow down with a serverless approach, but the scalability offered through a serverless approach gives your organisation the scope to grow your event-driven app as much or as little as you want.

But there is another option: you could integrate both a container and serverless approach.

A combination of both can help you minimise dependency on a single cloud service provider and increase speed, while certain back-end tasks such as data transfer and file backups using the serverless method can save money and improve scalability and performance.

More and more hybrid tools are in development, so in the future, a combination of these approaches is looking like an increasingly viable option for lots of startups.

What is in no doubt is that the debate will rage on over the pros and cons of container versus serverless. As with most things when you have two competing philosophies, the right choice for you will completely depend on the unique circumstances of your event-driven app.

What approach works best for your event-driven app?

6B has a successful track record when it comes to developing and launching mobile apps and web apps for businesses and startups of all sizes.

Our in-house development team are experienced in languages such as React Native, Angular, Python, Java and more, we are Google Partners and certified Apple Developers and we build engaging and intuitive apps that fulfil user need.

Speak to us today to find out more.

Talk to us today

Looking to accelerate your next digital project?

Do you want to work for us or do you have an idea in mind where our digital product consultancy can help?