FaaS vs CaaS: Comparing Use Cases and Responsibilities

February 25, 2021

Yann Léger

Yann Léger
@yann_eu

Alisdair Broshar

Alisdair Broshar
@alisdairbroshar

5 min read

Function as a Service (FaaS) and Container as a Service (CaaS) are two deployment solutions for cloud-native applications. Knowing what distinguishes these two deployment strategies can help when deciding how to build and deploy your web apps. We covered their unique advantages and challenges in our previous blog post Cloud Computing and Serverless Architectures: What are FaaS and CaaS?.

This time we are diving into the details about the differences in the managed responsibilities between developers and the cloud service providers of these solutions. Additionally, we're going to look at their ideal use cases all in order to best understand when to use these solutions.

Responsibility Comparison between CaaS and FaaS

We created this table to display the difference in managed responsibilities between cloud service providers and the developers who use them. As this table demonstrates, the differences in managed responsibilities arise at the container and runtime levels.

As the name implies, containers are used in CaaS solutions. The reason containers are optional for FaaS solutions is because it is the responsibility of the cloud service provider to determine how to run your functions. Some cloud service providers use containers to deploy their FaaS offerings while others do not.

The same logic follows for runtimes. Runtimes are the software that manages the complete lifecycle of a container. With CaaS, the container and runtime are the developer's responsibilities whereas they are the cloud service provider's responsibility with FaaS.

Table: Managed by Cloud Service Provider or User

FaaS and CaaS: All Things Considered Comparison

We prepared a table to compare the FaaS and CaaS options on these various key points:

  • Portability: Can the app deployed using this strategy be easily moved between cloud providers?
  • Lift and shift: Can I easily deploy existing apps and projects using this solution?
  • Granularity: What is the size of the deployment? Will my application be split?
  • Runtime: Who manages the language runtime (i.e. the version of the Python or Node.js interpreter) and system dependencies?
  • Flexibility: Can you deploy advanced applications with specific system-level requirements?
  • Frameworks: Can you use the framework you know and love?
  • Use cases: What are the main use cases?
  • Challenges: What are the main challenges you will need to overcome?
  • When: When should you select this option?

FaaSCaaS
PortabilityPoor standardization, implementation is mostly vendor-specificContainers are a standardized unit of software and easy to move between providers
Lift and shiftNot possible, existing applications need to be adapted if not rewrittenYes, existing applications are easy to containerize if not already containerized
GranularityDesigned to breakdown your application into really small deployment units aka functionsComponent/service level deployment by design but can also deploy specialized functions
RuntimeManaged by cloud service providerManaged by developer
FlexibilityLimited control of the runtimeHigh flexibility
FrameworksSpecialized Frameworks (Jets, Zappa)Standard frameworks (Rails, Django, Next.js, Vue.js, Symfony...)
Use casesSpecialized functions, asynchronous processing, event-driven processingFull web apps, Micro-services, data-processing
ChallengesDependency management, amplified challenge of managing multiple micro-servicesRequires an understanding of containerization
WhenBest for greenfield development or spin-off parts of your core applicationEfficient to host all your core services

FaaS and CaaS on the Koyeb Serverless Platform

Koyeb is a developer-friendly serverless platform to deploy container-based or function-based applications globally that lets you enjoy fast startup times and minimal overhead for each application you deploy.

The Koyeb serverless platform enables native and effortless scalability all while combining the flexibility of PaaS with the performance and security of MicroVMs. Get the security and isolation features required for data-sensitive applications without compromising on speed, security, and performance.

Koyeb users can connect their GitHub accounts to Koyeb to streamline and bolster the development of their applications. See the benefits of going serverless, get started with a free account today!

Here are some useful resources to get you started:

  • Koyeb Documentation: Learn everything you need to know about using Koyeb.
  • Koyeb Tutorials: Discover guides and tutorials on common Koyeb use cases and get inspired to create your own!
  • Koyeb Community Slack Channel: Join the community chat to stay in the loop about our latest feature announcements, exchange ideas with other developers, and ask our engineering teams whatever questions you may have about going serverless.

Additional Reading

If you enjoyed learning about FaaS and CaaS, you may enjoy reading about: