- Contract First (supports "trashing")
- No Framework *
- Full Business Logic Separation
- Minimal Templates and Code Gen
- Functional
- Portable Code
- AWS Lambda / Azure Functions
- Goal to stay compatible with Azure
- Functions are independent
- Consistent interface
- Strongly Typed
- No information about request source
- Context
- Query, path, payload input come in through args
- Contract change breaks functions at design time
- No need to validate input or authentication
- Do not format results
- Freedom from frameworks
- No templates that get stale
- Language independent design
- Easy to unit test
- Recomposable microservices
- Business logic separation