Logic layer
Application code is likely the area of most interest and the layer that has the most changes from a traditional web application hosted on a managed server, so let's start with that.
Application code and function layout
Let's differentiate two classifications of our organization for the logical layer:
- Organization of the Lambda functions themselves, within AWS
- Organization of the application code
Lambda functions are the unit of work in Lambda and other FaaS providers (for simplicity and clarity, I will refer to these as Lambda functions from here on out). A single Lambda function may be updated or deployed in isolation without affecting other Lambda functions.
Organization of the Lambda functions
With a REST API, there are a few options you have as to how each API endpoint maps to a function. The primary options in this design are whether to have a single Lambda function handle a single HTTP verb/resource combination, or whether to have a single lambda function handle all HTTP verbs...