Experimenting w/the Serverless Stack

For the past few months, I've been experimenting by building a number of prototypes and worked through several tutorials documenting the Serverless stack. Serverless has become the buzziest of buzzwords of late, and with good reason - it provides developers greater scalability and flexibility and allows them to focus on the actual code of their app rather than the infrasctructure surrounding it?

You might be asking yourselves: how is this possible?

To answer this question, let's take a step back and examine the traditional monolithic web app structure. Say you build a Rails app (not knocking this in anyway, there's a reason it's still around) with basic CRUD. The app gains a steady stream of users, and you're forced to scale the app to accomodate the traffic. Eventually you want to containerize your app to scale it even more. The tricky thing w/containers is you need a human (DevOps) to properly configure and scale an app.

Serverless is essentially an alternative to the docker/containerization of apps. At a very high level, the basic idea isn't too far a departure from traditional apps: create an API + schema, create a database, and connect your front end for the views. The key difference is in the automation of the cloud. With serverless, you can spin up a model schema, push it to a serverless database, and serve via a cloud bucket/CDN of your choosing. And the beauty of serverless is there's no servers that require management. Your app scales up or down on demand.

I've experimented with a few different tech stacks for serverless, but so far my favorite is AWS Amplify/Appsync/DynamoDB/S3/Cognito/Cloudformation/React. The documentation is excellent and Amplify's CLI is very intuitive. I think now that more resources and examples are being created, it's only a matter of time before more full stack apps are being built the serverless way.