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

Compare with Current View Page History

« Previous Version 3 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 be focussed on the following goals:

  • ClassLoader Isolation and Class versioning
  • Dependency management 
  • Dependency injection
  • Loose Coupling of Modules with high cohesion
  • Extensibility and Plug-ability
  • Lifecycle management 
    • Bootstrapping
    • Extendible process flows
  • Configuration
  • Simplified Testing of modules
  • Support for Interceptors:
    • Operation Traceability (like Zipkin)
    • Logging
    • Security
    • Transactions
  • Event / Message driven
  • Clearly defined SPI / API / Annotations
  • Open/Close Principle 

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

Proposed Geode Modules

This section attempt to define the Geode Modules and their dependencies.

Module NameDependenciesDescription
Geode-Core

Geode-Tracing

Geode-Logging

Geode-Security

Geode-Metrics

Geode-Maintenance

This module is the core module that contains all the core frameworks for the Geode system. Bootstrapping and flow lifecycles will be managed from here
Geode-TracingN/AThis module contains the operation tracing implementation
Geode-LoggingN/A

Centralized logging module

Geode-SecurityN/ACentralized security module
Geode-TransactionsN/ACentralized transaction module
Geode-MetricsN/AMetric framework
Geode-Membership

Geode-Transport

Geode-S

 
Geode-PersistenceGeode-CoreCurrent implementation for disk-based persistence
Geode-Transport

Geode-Core

Geode-Tracing

Geode-Logging

Geode-Security

Geode-Metrics

 
Geode-Maintenance

Geode-Security

Geode-Logging

Module that controls the configuration and management of the Geode system
Geode-Serialization

Geode-Core

Geode-Security

Geode-Maintenance

Geode-Logging

Geode-Tracing

 
Geode-Collections-Base

Geode-Core

Geode-Security

Geode-Maintenance

Geode-Logging

Geode-Tracing

Geode-Persistence

Geode-Data-Replication

This module will contain the base implementation for all distributed Collections.
Geode-Collection-HashMap

Geode-Collections-Base

Geode-Core

Geode-Security

Geode-Maintenance

Geode-Logging

Geode-Tracing

Geode-Persistence

Geode-Data-Replication

 This module will contain the current Region implementation
Geode-Query

Geode-Collections-Base

Geode-Core

Geode-Security

Geode-Maintenance

Geode-Logging

Geode-Tracing

Geode-Indexing-Base

Geode-Data-Replication

This module will contain the current OQL engine
Geode-Indexing-Base

Geode-Collections-Base

Geode-Core

Geode-Security

Geode-Maintenance

Geode-Logging

Geode-Tracing

Geode-Persistence

The base implementation for query indexing. At this stage, it contains current indexing implementation.
Geode-Data-Replication

Geode-Core

Geode-Security

Geode-Maintenance

Geode-Logging

Geode-Tracing

Geode-Transport

This module will handle the replication of data to other nodes

 

 

  • No labels