Designing for Failure
When designing a workload’s architecture for a distributed environment such as the AWS cloud, you must design first to try and prevent failures, and second to handle failures. As previously mentioned in the design principles, your workload design must be able to cope with variations in the workload’s demand, detect failures, and automatically heal itself.
Before going any further, it is important to note that the AWS Well-Architected Framework, on which this book relies broadly since it is the backbone of AWS best practices, strongly recommends that you avoid building a monolithic architecture and prefer service-oriented or microservices architectures instead. Debating on monolithic versus any other style of architecture is beyond the scope of this book. However, it is noteworthy that monolithic architectures are often wrongly associated with evil big-ball-of-mud systems. It is unfair, considering that monolithic systems may have a very neat and...