You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

What is it and Why....

Geode in its current form is the ultimate Monolith. Littered with God objects and tight coupling. This makes maintaining and extending the current Geode system really hard, as changing functionality in ObjectA would most inevitably cause a change in ObjectB, which then cause ObjectC having to change, etc...

The current tight coupling of code makes it harder to reason over the expected behavior of the system, as code is layered on top of code, each layer potentially influencing behavior that is unpredictable.

In order to start unwinding this ball of yarn we need refer back to some Good Design Strategies:

  1. Separation of Concerns

  2. Modularity

  3. Abstraction

  4. Anticipation of Change

  5. Incremental Development

These strategies are best described in the following links:

Proposal Goals

The proposal specifically targets the Separation of Concerns, Modularity and Abstraction strategies. The proposal will try and address the following goals:

In addition to these goals, the solution needs to support:

Additional "nice-to-have" features would be:

  • Lock-free framework for operations that require a critical section
  • Async messaging / Actor models
  • No labels