Some qualities of serverless and containers resemble each other, but there are also crucial differences. Knowing these crucial differences allows developers to determine which to use for what task.
In general, containers are best for applications that run for an extended period of time. It’s also best for workloads that have complex tasks with high resource and management requirements. Very large and interconnected applications can be migrated to containers, which makes it simpler for developers to develop features piecemeal and deploy the application to the cloud.
Meanwhile, serverless executions work only as they are needed, based on inputs. The instant the job is complete, the instance running the code decommissions. This makes serverless ideal for deploying applications quickly, with little application scaling required. Event-driven applications that require only a few seconds of operation make good use of serverless.
Serverless is a great way to streamline costs and lower maintenance time. That said, long batch operations and complex applications don’t work with serverless. You may run into problems with size and memory limitations. Yet another risk is that going serverless may mean dealing with cold starts. The function may go to sleep if it hasn’t been given something to do for a while, and will need a few moments to start again.
In essence, you should choose serverless computing for automatic scaling and lower runtime expenses. Containers best apply for additional flexibility and if you need to move an older application to a new architecture.
Because of their design, IT organizations have greater control and responsibility for a container application’s operations, such as deployment, configuration, support, maintenance, and monitoring, than those of a serverless application. Serverless architectures are run on the cloud services that created them provider rather than in-house. This means developers hand over a degree of control to a third-party provider. Unlike having an onsite architecture, you are forced to rely on your vendor managing the underlying infrastructure for you. They may have set limitations on resources or services available for you to use.
Serverless computing relies on functions, procedures that execute a specific task and provides a specific result for an application. Containers tend to be larger than serverless applications and can do more than one task.
With serverless applications, you are charged not for compute capacity you bought but by the number of times the apps execute. This makes it a great way to streamline costs. On the other hand, once a container is created, you pay for the instance running it regardless if it is executing or not. Continuous operation means continuous expenses.
Can they work in tandem?
The answer, thankfully, is yes. You can create systems where an application can rely on both containers and serverless—it’s not necessarily a choice between one or the other. Developers will need to consider portability since serverless applications only work within the cloud infrastructure they are part of, but they may still blend containers or even microservices and serverless to balance off their pros and cons.
Marco is a managing partner at copebit. He got seven AWS certifications. He has spent three years in Australia and has worked with AWS and DevOps technologies for the last 6 years.