Chaos Engineering is a practice where an organization tries to predict the unpredictable. It can be used to achieve resilience against infrastructure failures, network failures, and application failures.
Typically test driven development is testing for mishaps that can be predicted, such as testing that 2 + 2 = 4 or testing that a database is available before writing to it.
With chaos engineering, we introduce failures on purpose on production systems to see how they withstand the chaos.
Disruptions can be of different nature:
These disruptions can cause applications to respond in unpredictable ways.
In case of disruption the application needs to be improved to withstand the specific failure scenario.
Chaos Mesh is a chaos engineering platform for Kubernetes.
Chaos Monkey randomly terminates instances in production
Chaos Blade is a cloud-native chaos engineering platform that supports multiple environments, clusters, and languages.
Check out these great links which can help you dive a little deeper into running the Chaos Engineering practice with your team, customers or stakeholders.