- Acts as a proxy or a facade to the consumer services.
- Abstracts away internal working of the dependent service.
- Handle cross-cutting concerns (e.g. logging, authentication, caching, etc.)
- Authorization and Authentication
- Implement Serilog structured logging
- Implement rate limiting
- Implement tracing
- Implement testing