Micro Services architecture
- We want to switch to a [[micro-service architecture]]
- Many services interact with each other directly using a [[REST API]]
- Each architecture for each micro service may vary in form and shape
- We want a [[micro-service architecture]] so we can have a leaner [[development lifecycle]] for each service.

Discussions on Micro Services
- You are free to design each [[micro-service]] the way you want
- Synchronous patterns: AWS API Gateway, [[Load Balancer]]s
- Asynchronous patterns: AWS SQS, Kinesis, AWS SNS, [[Lambda Triggers]] (S3)
- Challenges with micro-services:
- Repeated [[overhead for creating each new microservice]]
- Issues with [[optimizing server density, utilizaion]]
- Complexity of [[running multiple versions of multiple micro-services simultaneously]]
- [[proliferation of client-side code requirements to integrate with many seperate services]].
- Some of the challenges are solved by Serverless patterns:
- AWS API Gateway, AWS Lambda scale automatically and you pay per usage
- You can easily clone [[API]], [[reproduce environments]]
- [[Generate client SDK through Swagger integration for the API Gateway]]