> I don’t have data-intensive applications or problems of scale, but rather policy-intensive applications.
As I understand it, this problem - "policy-intensive" - is a lot of changes of requests from the customers of the system. In other words, customers don't know fully what they need and produce a stream of requests. This stream or requests may converge on some stable "global" requirements, or, alternatively, may represent "moving target" (not converge).
Additionally, some of those requests are caused by different (supposedly better) understanding of the nature of data - the object of the system. That is, with evolution of the system customers (with the help of developers) understand more and more specific details about the data - missing parts, ambiguous parts, alternative sets of attributes etc.
The approach for such problems, which so far is most promising, is to organize the system as a set of independent, composable as much as possible operations. When another request comes from a customer, or another detail about the data becomes known, the system built from such composable components better allows incremental modifications towards processing such a change.
A good set of operations sometimes develops with time. This approach requires constant reflection on what a particular change mean to the existing process, uncovering assumptions and making them explicit and changeable...
As I understand it, this problem - "policy-intensive" - is a lot of changes of requests from the customers of the system. In other words, customers don't know fully what they need and produce a stream of requests. This stream or requests may converge on some stable "global" requirements, or, alternatively, may represent "moving target" (not converge).
Additionally, some of those requests are caused by different (supposedly better) understanding of the nature of data - the object of the system. That is, with evolution of the system customers (with the help of developers) understand more and more specific details about the data - missing parts, ambiguous parts, alternative sets of attributes etc.
The approach for such problems, which so far is most promising, is to organize the system as a set of independent, composable as much as possible operations. When another request comes from a customer, or another detail about the data becomes known, the system built from such composable components better allows incremental modifications towards processing such a change.
A good set of operations sometimes develops with time. This approach requires constant reflection on what a particular change mean to the existing process, uncovering assumptions and making them explicit and changeable...