You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our SDL (Stack Definition Language) processing architecture presents several inefficiencies:
Scattered Responsibilities: Manifest processing is inconsistently distributed across the Cloudmos apps and the Akasjs library.
Overloaded Classes: The SDL class handles both validation and the generation of node and provider manifests, leading to convoluted logic.
Partial Dependencies: The Cloudmos application is also partially responsible for manifest generation, which complicates the integration process.
Layer Confusion: There's a lack of clear demarcation between the SDL/manifest generation processes and the GRPC layers.
Resulting Issues
These structural problems lead to:
Complex Client Code: Clients struggle with creating proper manifests due to unclear process delineation.
Reduced Maintainability: The architecture is difficult to debug, and tracking issues is cumbersome.
Documentation Challenges: The current implementation is complex and hard to document accurately.
Reliability Concerns: Modifications in one component can inadvertently affect others, leading to fragile system integrity.
Compromised Testability: Testing is hindered by intertwined dependencies and obscured logic.
Proposal Overview
This proposal seeks to rectify the aforementioned issues by restructuring the Sdl processing architecture to ensure modularity and robustness. Key components of the proposed architecture include:
Core Components
Sdl Interface: Processes YAML strings, validates them, and provides a strict accessor method interface.
ProviderManifest and BlockchainManifest: These classes accept an Sdl object as a dependency and expose methods to extract payloads specific to either providers or blockchains.
SdlComposer: Orchestrates different versions of Sdl interfaces and manages their interactions.
GRPC Layer: Interfaces with the SdlComposer to facilitate communication with nodes and providers.
Architectural Diagram
Attached is a detailed diagram illustrating the proposed system architecture, emphasizing the interaction between the core components.
Benefits
Implementing this proposal offers multiple advantages:
Enhanced Modularity: By adhering strictly to interface dependencies, the system's robustness is improved, mitigating the risk of cross-component impact.
Clear Separation of Concerns: This simplifies maintenance and boosts testability by delineating clear responsibilities.
Improved Documentation and Usability: A logical, well-defined structure is easier for clients to understand and for developers to document.
Implementation Guidelines
To ensure the effectiveness of the proposed changes:
Interface Implementation: All concrete classes should implement the defined interfaces, promoting consistency and flexibility.
Dependency Management: Dependencies should be based solely on interfaces to avoid tight coupling and enhance modularity.
Access Restrictions: Methods should be private unless public access is justified, to minimize maintenance overhead and potential for unintended usage.
Validation: YAML parsing and validation should be conducted using JSON Schema to confirm type accuracy, complementing other validation layers.
Protobuf Integration: Except for initial Sdl input parsing, all backend implementations should utilize protobuf-generated types to ensure consistency and reliability.
Conclusion
This proposal aims to streamline SDL processing by introducing a more structured, interface-driven architecture that enhances clarity, reliability, and maintainability. With clearer boundaries and a modular design, we can achieve a more robust and understandable system.
The text was updated successfully, but these errors were encountered:
Current Challenges
Our SDL (Stack Definition Language) processing architecture presents several inefficiencies:
Resulting Issues
These structural problems lead to:
Proposal Overview
This proposal seeks to rectify the aforementioned issues by restructuring the Sdl processing architecture to ensure modularity and robustness. Key components of the proposed architecture include:
Core Components
Architectural Diagram
Attached is a detailed diagram illustrating the proposed system architecture, emphasizing the interaction between the core components.
Benefits
Implementing this proposal offers multiple advantages:
Implementation Guidelines
To ensure the effectiveness of the proposed changes:
Conclusion
This proposal aims to streamline SDL processing by introducing a more structured, interface-driven architecture that enhances clarity, reliability, and maintainability. With clearer boundaries and a modular design, we can achieve a more robust and understandable system.
The text was updated successfully, but these errors were encountered: