I like to design applications for more scale, resilience, and manageability. Here are some things to keep in mind:
- Make your applications self-healing as much as possible:
- Design for failures and handle them
- Log and monitor
- Build for scaling out:
- Offload resource intensive tasks
- Design for scale in
- Identify bottlenecks
- Partition around resource limits:
- Understand limits and use partitioning to get around them; you can find more information at the following link: https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits
- Design with DevOps in mind:
- Monitoring
- Deploying
- Escalation
- Security/auditing
- Make all thing observable
- Treat configuration as code
- Design for evolution:
- Use loose ...