With Serverless architecture, your application has no virtual machines to run its code; it depends on managed services. These services can be fault tolerant and scalable, which in turn removes the burden of maintaining the resources by yourself. We all know that managing databases, load balancer and server can be very time-consuming. In fact, predicting the changes become more complex. This is why many projects tend to deploy on Serverless architecture. Not only do you not have to predict the infrastructure requirements, but you also start paying for a number of resources consumed.
What does the word ‘Serverless’ mean?
In short, Serverless means no servers to manage, provision or scale. It automatically scales out and you don’t pay for the idle time. The diagram below consists of a Serverless application which uses many managed AWS resources.
Serverless Application in Amazon Web Services
Amazon Web Services provides many services that can help you in developing a Serverless application.
- API Gateway – consider API gateway as your application router. With API gateway you can trigger Lambda events based upon a URL request.
- Lambdas (FaaS) – Lets you write functions written in C#, Python, Java, Node.js, Go and Rust. The good thing about Lambdas is that they are designed to handle millions of requests and are extremely cost-effective. A million request fees total just $ 0.0124. Lambda functions can be triggered from multiple sources such as data created in DynomoDB or files uploaded to S3 and many sources.
- DynmoDB – If you’ve been working MySQL you will be blown away by the performance of DynmoDB. DynmoDB is the NoSQL database managed by AWS. DynmoDB will let you store data at a very fast rate compared to MySQL. To query data over DynamoDB you need to use it’s own query language, it doesn’t supports MySQL query.
- Cognito: With AWS Cognito you could manage user registration or sign in regardless of the amount of traffic. Cognito also provides authentication with other services, for example: Facebook, Twitter, Google and more.
The concepts of CI/CD can be applied to a Serverless application. The key difference versus traditional architecture is the lack of server, which I personally find extremely beneficial.