Serverless computing is actually a misnomer because a physical server still exists in the system. But since the servers are completely managed by cloud providers, developers get the feeling that a server doesn’t exist at all. Hence the name, serverless. That said, the experience is nothing short of pampering, and the terms “serverless” is an apt description of what it’s like to run applications on these platforms. Serverless computing is growing faster than any other cloud service with a growth rate of 75 percent. Its ability to make software development efficient (in terms of effort, time, and cost) has been one of the biggest reasons for its popularity.
Serverless computing has led to a significant increase in the number of Function as a Service (FaaS) and Backend as a Service (BaaS) providers. Some of the most popular ones are:
- AWS Lambda Functions
- Google Cloud Functions
- Microsoft Azure functions
- Amazon API gateway
- IBM Cloud functions
Though the development process is simplified by FaaS and BaaS, a few tools and platforms have been developed to simplify it even more. These tools reduce the effort developers need to put in to configure infrastructure. This means developers can get more time to focus on writing code. Here is a list of seven such tools (or platforms) to use when working with serverless computing:
LambCI is a package that can be uploaded to AWS Lambda to bring CI to serverless. It is triggered whenever you push new code or existing requests on GitHub. With LambCI, developers can easily launch and keep things up-to-date as a Cloud Formation Stack. They can even create different resources themselves. With conventional systems like Travis and CircleCI developers had to pay a lot. They still had options for reducing costs by using systems like Jenkins, Strider, etc. but, configuration and server management took a lot of time.
Michael Hart, the developer of LambCI, said in a Medium post that he began building the tool to find a way to overcome these limitations of conventional systems.
So, how does LambCI solve the problem?
- Since the entire system and capacities are managed by Amazon, LambCI is really easy to handle. It is far simpler than systems like Jenkins and Strider.
- The cost is far less as developers have to pay only for what they use (utility computing). Additionally, the first 4,444 minutes per month are free.
- Talking about operations, LambCI has the ability to run 1,000 concurrent builds. This dramatically increases the time efficiency when compared to tools like Travis.
One of its coolest features is its ability to integrate with Slack and update developers on the statuses in GitHub.
But, there are some downsides to this tool such as no root access, and its support is limited to Linux. Also, the build time and memory are limited to a maximum of five minutes and 1.5GB, respectively.
But developers can work around many of these limitations by configuring LambCI tool to send tasks to an ECS cluster.
Clay is a registry for microservices (little pieces of reusable code). It can be used to instantly create an HTTPS function. Developers can either start from scratch or fork an existing code and customize it.
How does Clay ensure an amazing developer experience?
- Clay securely stores private keys and accesses all NPM packages.
- With Clay, you can get your backend code running at a secure HTTPS URL.
- Clay is best suited for processing webhooks (a method of altering a web app’s behavior with custom callbacks).
- Clay can help in pre- and post-processing when working with third-party SaaS APIs and inserting code as a living content in blog posts.
Clay has not become very popular perhaps due to its limited support (only Node 6.10), less disk space (500MB) or time limit (30 sec/service call). However, developers can extend the time limit by making another HTTP call.
Why do developers prefer Node.js for Lambda?
- Node.js is capable of processing thousands of requests (depending on the workload) simultaneously.
- Developers prefer Node.js for Lambda as it has a good number of node package modules.
- Node.js developers can create a Lambda function and deploy it in their AWS account using a single command, without even having to open their AWS console.
- Node.js is a lightweight server and is fast at handling requests.
Having said all that, a few developers still prefer Python perhaps because of the ease of use it renders.
Gordon is an open source platform. Gordon can help you to create, wire and deploy AWS Lambda functions using CloudFormation.
How does Gordon simplify serverless?
To understand how Gordon can help developers, one should first understand what it takes to run functions on AWS Lambda. Here is a list of things that you should do to get your function ready to run on Lambda:
- Download external requirements from Lambda functions.
- Bundle your lambda function, packages, and libraries into a zip file.
- Upload this zip file to S3.
- Create a new version of a lambda function with your code.
- Publish the new version.
- Create an alias.
- Create a new IAM Role for this lambda function and attach it.
But this is a bit too much to do every time when you have to deploy a new change. This is where Gordan comes into play. With just two commands, “build” and “apply,” you will be able to easily deploy your changes as many times as you want.
Kappa is an open source project that helps developers deploy, update, and test functions for Amazon Lambda. Kappa is a command line tool.
How does Kappa simplify the app development process?
Kappa basically assists with some of the steps involved in developing Lambda functions. Here are a few things that Kappa can do:
- Create IAM policies based on the resources you need to access. It can also create the IAM execution role and associate the policies with it.
- Zip up the function and dependencies and upload it to AWS Lambda.
- Send test data to the uploaded function
- Find the CloudWatch log stream related to the uploaded function and show log events.
- Add the event source to turn the function on.
- Enable developers to easily update their Lambda function with new code or edit event sources.
The Lambda-uploader package was specifically written to help in packaging and uploading Python AWS Lambda functions.
What’s special about Lambda uploader?
Lambda-uploader helps with Lambda package creation by handling the following:
- Virtual environment creation.
- Installation of dependencies to the virtual environment.
- Zip packaging a copy of the dependencies out of the virtual environment with the original Lambda function code.
- Interfacing the package with AWS CLI (or UI).
Since Lambda uploader takes care of all these time-consuming tasks, developers can focus more on writing better functions.
OpenLambda is an open source serverless computing platform. It is an Apache-licensed project. OpenLambda is written in Go and is based on Linux containers.
What does OpenLamba do?
The primary objective of Open Lambda is to enhance the exploration of new approaches to serverless technology. Serverless computing introduces many challenges in the areas of sandboxing, session management, load balancing, and databases. Open Lambda facilitates these areas.
Thundra.io is basically a monitoring tool. It is a one-stop solution for monitoring needs such as metrics, logs, traces etc.
What does Thundra.io do?
- It helps developers trace their lambda functions.
- It monitors metrics such as CPU, memory, GC, and manages logs.
- It provides automatic instrumentation of AWS lambda function. The best thing about this feature is that developers can instrument with no code change.
- It does not affect memory usage as it leverages Amazon CloudWatch for asynchronous execution. This helps in getting rid of request timeouts and unnecessary delays.
IOPipe, Stackery, and Dashbird are the other popular tools used for serverless monitoring.
Serverless computing: Saving you time and money
Besides saving time, serverless architecture also saves money. This is because you pay only for what you use. This is much more efficient compared to the conventional method of buying units of capacity and leaving most of them unused. With the efficiency delivered by serverless architecture and the convenience provided by the tools mentioned, the future of serverless computing looks promising.
Featured image: Shutterstock