Complexity warning signs
- Declining feature velocity
- Frequent escalations
- Time-consuming debugging
- Excessive codebase growth
- Inconsistent patterns
- Dependencies everywhere
- Undifferentiated work
Lessons in Simplexity
- Make evolvability a requirement - Evolvability is a precondition for managing complexity
- Break complexity into pieces - Disaggregate into building blocks with high cohesion and well-defined APIs
- Align organization to architecture - Build small teams, challenge the status quo, and encourage ownership
- Organize into cells - In a complex system, you must reduce the scope of impact
- Design predictable systems - Reduce the impact of uncertainty
- Automate complexity - Automate everything that does not require high judgment
Building evolvable systems
- Modeled on business concepts
- Hidden internal details
- Fine-grained interfaces
- Smart endpoints
- Decentralized
- Independently deployable
- Automated
- Cloud-native design principles
- Isolate failures
- Highly observable
- Multiple paradigms
Constant Work
https://aws.amazon.com/blogs/architecture/doing-constant-work-to-avoid-failures/
https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_prevent_interaction_failure_constant_work.html
Amazon Bedrock Serverless Prompt Chaining
https://github.com/aws-samples/amazon-bedrock-serverless-prompt-chaining
Serverless Agentic Workflows with Amazon Bedrock
https://www.deeplearning.ai/short-courses/serverless-agentic-workflows-with-amazon-bedrock/
Clock Bound
https://github.com/aws/clock-bound
Tech to the Rescue
https://www.techtotherescue.org/
About the author
Eyal Estrin is a cloud and information security architect, an AWS Community Builder, and the author of the books Cloud Security Handbook and Security for Cloud Native Applications, with more than 20 years in the IT industry.
You can connect with him on social media (https://linktr.ee/eyalestrin).
Opinions are his own and not the views of his employer.