Need advice about which tool to choose?Ask the StackShare community!
Fission vs Serverless: What are the differences?
Introduction
Fission and Serverless are two popular serverless computing platforms that allow developers to write and deploy code without worrying about infrastructure management. While they have similar objectives, there are key differences that set them apart. Let's explore these differences in detail:
Scaling: When it comes to scaling, Fission operates on a smaller scale compared to Serverless. Fission allows for granular function-level scaling, meaning only the specific functions that need scaling will be automatically allocated additional resources. In contrast, Serverless operates at a service level, scaling the entire service based on the overall demand.
Resource Allocation: Fission follows an on-demand resource allocation model. It spins up containers only when a function is triggered, ensuring optimal utilization of resources. On the other hand, Serverless maintains a pool of resources, ready to handle requests, resulting in potentially higher costs when resources are underutilized.
Architecture: Fission primarily uses Kubernetes as its underlying infrastructure, making it suitable for environments already leveraging Kubernetes. On the other hand, Serverless utilizes a range of different infrastructure providers, allowing it to be more flexible and compatible with various cloud and on-premises environments.
Programming Languages Support: Fission provides support for multiple programming languages, including Python, Node.js, and Go. It offers a broader range of language options for developers. Serverless, on the other hand, is more focused on JavaScript and Node.js, with limited support for other languages.
Cold Start Performance: Fission generally boasts faster cold start performance compared to Serverless. It achieves this by leveraging a pool of pre-warmed containers for faster function execution. Serverless, though improved, may still experience slightly longer cold start times due to its architecture.
Function Deployment: When it comes to deploying functions, Fission offers the ability to directly deploy code as a source file, making it easier to develop and iterate on code quickly. Serverless, on the other hand, typically requires packaging code and dependencies into a deployment package before deployment, which can add additional complexity to the workflow.
In Summary, Fission and Serverless differ in scaling models, resource allocation, architecture, programming language support, cold start performance, and function deployment methods. These differences make them suitable for different use cases and development preferences.
When adding a new feature to Checkly rearchitecting some older piece, I tend to pick Heroku for rolling it out. But not always, because sometimes I pick AWS Lambda . The short story:
- Developer Experience trumps everything.
- AWS Lambda is cheap. Up to a limit though. This impact not only your wallet.
- If you need geographic spread, AWS is lonely at the top.
Recently, I was doing a brainstorm at a startup here in Berlin on the future of their infrastructure. They were ready to move on from their initial, almost 100% Ec2 + Chef based setup. Everything was on the table. But we crossed out a lot quite quickly:
- Pure, uncut, self hosted Kubernetes — way too much complexity
- Managed Kubernetes in various flavors — still too much complexity
- Zeit — Maybe, but no Docker support
- Elastic Beanstalk — Maybe, bit old but does the job
- Heroku
- Lambda
It became clear a mix of PaaS and FaaS was the way to go. What a surprise! That is exactly what I use for Checkly! But when do you pick which model?
I chopped that question up into the following categories:
- Developer Experience / DX 🤓
- Ops Experience / OX 🐂 (?)
- Cost 💵
- Lock in 🔐
Read the full post linked below for all details
Pros of Fission
- Any language1
- Portability1
- Open source1
Pros of Serverless
- API integration14
- Supports cloud functions for Google, Azure, and IBM7
- Lower cost3
- Auto scale1
- Openwhisk1