With the basics out of the way, it is equally important to understand a few additional concepts about serverless computing and Lambda functions in general. Firstly, when to use what? Here is a simple breakdown of a few AWS services that offer compute capabilities, and when you should ideally use them:
Requirement | Management | Deployed as | AWS Service |
Run simple workloads or websites continuously at predictable rates. Less control required. | You control the server, its OS, and software. | Virtual private servers |
Amazon Lightsail |
Run almost any workloads at any scale. More control and flexibility required. | You control the instance, the OS and software. You can scale and manage your instances. | Instances | Amazon EC2 |
Run microservices-based application on Dockerized containers. | You control the provisioning and scaling. AWS manages cluster state and deployment of your application. | Containers | Amazon EC2 Container Service |
Run applications that are event driven and stateless. | You provide the application code. AWS manages the deployment and scaling of the infrastructure. | Code | AWS Lambda |
Secondly, the code that we are going to be using and developing in this book is predominantly going to be around Node.js, but that shouldn't stop you from using either Java or Python, or even C# for that matter. Do keep in mind however, that each of these programming languages offers a different level of performance. Dynamic languages like Python and Node.js will naturally provide slightly better performances as compared to static languages such as Java and C#. But as I always say, when in doubt, do it yourself, so write a few simple lines of code in each of the supported languages and benchmark the same.