Nowadays serverless is the new buzz word and all our clients irrespective of their Maturity in the cloud are willing to invest or at least investigate in this area. There are some typical things that need to be taken into consideration
Start with something
- A UI application ( Angular/React Js ):- This is typical from where the user will submit some data and retrieve the data.
The context of the form is irrelevant its just an entry point to see how these SPAs can scale to 5000 concurret request and run in S3 without a webserver
2. API gateway: A fully managed middleware. The API Gateways are hardened with custom authentication ( There are various implementation options ) which are production-ready.
This gives how we can have different web service endpoints to be consumed with UI or any other service. Managed service and automated versioning and deployment option in DevOps ethos with SAM template bases deployment, ideal for larger team collaboration and smaller unit of deployment.
3. Bunch of Lambda(Serverless function ) written on Java/ Node js client can see the sample implementation which runs without any server and can handle 1000s of concurrent request.
The choice of language is given to the client just to see how data is handled and persisted to the choice of the database ( Nosql/ RDBMS) .
4. A configurable middleware to switch between the database of choice as per the client's need. The database design and implementation will change as per the client requirement but, the kit will help them to have implementation and will lead them towards a full-fledged implementation.
The configurable database is just a starter for the client to see how Serverless apps work in the context of the database.
We have got a future road map to bring in few features within this Kit without making it too opinionated below are some list which are on top of the list of the road maps .
- SAM template-based deployments
- Custom authorizer
- Cloudfront( any CDN ) based deployment
- Using Amplify for authorization
Conclusion: This kit is by no means production ready but the objective is to give it to the client to understand how things can yield value in terms of lesser infra management and cost, on-demand scaling. This will also help them to position their engineers towards a cloud-native mindset and take the first steps towards a serverless journey.