Exploring the Future of Serverless with Sheen Brisals: Why It's Becoming the New Norm
“Serverless” is not a buzz term anymore which you might have in your conversations. Let’s get the concept defined and cleared out before we get into our Open Source projects to get started with Serverless Applications.
Serverless or FaaS (Functions-as-a-Service) - as the term might indicate, it’s not really “server-less”. Instead, a public cloud provider provides the servers that will help you deploy, run, and manage your application.
The core focus is not to pull any heavy-weights and leverage services being used as efficiently as possible.
Now let’s dive into some of the best open-source serverless projects which will enable you to get started with serverless.
Zappa - Serverless Python
Zappa makes it super easy to build and deploy server-less, event-driven Python applications (including, but not limited to, WSGI web apps) on AWS Lambda + API Gateway. Think of it as “serverless” web hosting for your Python apps. That means infinite scaling, zero downtime, zero maintenance - and at a fraction of the cost of your current deployments!
License: MIT License
https://github.com/Miserlou/Zappa
Dapr - Any Language, Any Framework, Anywhere
Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embrace the diversity of languages and developer frameworks.
Dapr codifies the best practices for building microservice applications into open, independent, building blocks that enable you to make portable applications with your chosen language and framework of your choice. Each building block is separate, and you can use one, some, or all of them in your application.
Note: Dapr is currently under community development in the alpha phase. Dapr is not recommended for production workloads until the 1.0 stable release.
License: MIT License
Up - Deploy in seconds
Up deploys infinitely scalable serverless apps, APIs, and static websites in seconds, so you can get back to working on what makes your product unique.
When it comes to Up, there’s no need to worry about managing or scaling machines, paying for idle servers, worrying about logging infrastructure or alerting. Just deploy your app with $ up, and you’re done!
Up focuses on deploying “vanilla” HTTP servers, so there’s nothing new to learn, develop with your favourite existing frameworks such as Express, Koa, Django, Golang net/HTTP or others.
Up currently supports Node.js, Golang, Python, Java, Crystal, Clojure and static sites out of the box. Up is platform-agnostic, supporting AWS Lambda and API Gateway as the first targets. You can think of Up as self-hosted Heroku style user experience for a fraction of the price, with the security, isolation, flexibility, and scalability of AWS.
License: MIT License
Webiny - The easiest way to adopt serverless
When it comes to API? A React app? A complete administration app for your product, website or mobile app? With Webiny you can do all that and then so much more. Your project will be bootstrapped and prepared to develop your next project in just a few moments. With the tools that come out of the box, you’ll be able to immediately deploy your project to the cloud (for now only AWS).
Our plugin-based approach to the whole system will make it easy for you to override, upgrade and tweak the system to fit your needs.
GraphQL API
Webiny’s API layer works as a collection of plugins that process your GraphQL queries. Apps provided by Webiny are deployed as a monolith Lambda function. But that does not prevent you from deploying new Lambda functions with custom code. It’s easy to extend our default setup, add handlers for REST API, or anything you might need.
Frontend layer (SPA)
Webiny’s frontend (SPA) layer is powered by React and Apollo Client. If you ever developed using those tools - you would already know Webiny as their UI library uses Material Components and RMWC to get going with Material faster. You can see all the currently available components in their storybook.
They also provide a pre-rendering service out of the box. It takes care of generating static snapshots of your pages for maximum delivery speed. This service is also powered by Lambda.
Admin app
Webiny provides you with an administration app to kickstart your projects much faster and begin developing features for your clients right away. The entire admin app is based on plugins, and you can customise everything.
Deployment to the Cloud
Use Pulumi IaaC to reliably deploy infrastructure and your code to the cloud. You can also deploy Webiny using native CloudFormation if you will, AWS SAM, or any other tool. Guides on those particular tools will come at a later stage, but it IS possible.
License: MIT License
https://github.com/webiny/webiny-js
Fission: Serverless Functions for Kubernetes
Fission is a fast serverless framework for Kubernetes with a focus on developer productivity and high performance.
Fission operates on just the code: Docker and Kubernetes are abstracted away under regular operation, though you can use both to extend Fission if you want to.
Fission is extensible to any language; the core is written in Go, and language-specific parts are isolated in something called environments (more below). Fission currently supports NodeJS, Python, Ruby, Go, PHP, Bash, and Linux executable, with more languages coming soon.
License: Apache-2.0 License
https://github.com/fission/fission
Serverless Offline - Emulate AWS λ and API Gateway locally when developing your Serverless project
This Serverless plugin emulates AWS λ and API Gateway on your local machine to speed up your development cycles. To do so, it starts an HTTP server that handles the request’s lifecycle like APIG does and invokes your handlers.
Features:
- Node.js, Python, Ruby λ runtimes.
- Includes Velocity templates support.
- Lazy loading of your handler files.
- And more: integrations, authorisers, proxies, timeouts, responseParameters, HTTPS, CORS, and so on.
License: MIT License
https://github.com/dherault/serverless-offline
Serverless Express
Serverless Express helps you run REST APIs and other web applications using your existing Node.js application framework (Express, Koa, Hapi, Sails, etc.), on top of AWS Lambda and Amazon API Gateway.
License: Apache-2.0 License