Paul Done brought together a set of techniques he has identified to effectively deliver resilient yet evolvable data-driven applications.
In the talk, he identifies the resulting best practices as a set of six key principles, which he refers to as “resilient evolvability.” Below is a summary of the six principles:
- Support optional fields. Field absence conveys meaning
- For Finds, only ask for fields that are your concern, to support variability and to reduce change dependency
- For Updates, always use in-place operators, changing targeted fields only. Replacing whole documents blows away changes made by other applications
- For the rare data model Mutative Changes, adopt “Interim Duplication” to reduce delaying high priority business requirements
- Facilitate entity variance, because real-world entities do vary, especially when a business evolves and diversifies
- Only use Document Mappers if they are NOT “all or nothing,” and only if they play nicely with the other five principles
He also shared, on Github, a sample Rust application he built that highlights some of the patterns described. Nice read!
[Read More]