Overview

This document contains the roadmap to accomplish the topics proposed by the 2019 internship project named Hyperledger Umbra. Mostly important, this document defines the activities planned to realize the internship project. The source code and documentation of this project is going to be uploaded on https://github.com/hyperledger-labs/umbra. Currently this github repository stores the detailed project plan as described below.


Activities

  1. Build reference architecture (Logical View and Process View)
    1. Define modules and their components (initial directory structure)
    2. Define basic structure of classes and their relationship
    3. Define interactions among test components (events and interfaces)
      1. e.g., Json messages via RPC interfaces?
    4. Code basic structure of modules
    5. Define installation requirements and scripts for the reference architecture
  2. Evaluate Fabric project with reference architecture
    1. Define requirements to run Fabric
      1. e.g., configuration files, roles of components, number of channels, number of organizations, chaincode model, etc
    2. Build modular scenario with Fabric over reference architecture
      1. Check how classes can be as modular as possible to be adapted for other Hyperledger projects
  3. Build Stimulus
    1. Define interfaces and events needed to interact with Fabric components
      1. e.g., REST APIs?
    2. Code pluggable interface with programmable parameters
      1. e.g., # transactions per second
    3. Run tests with stimulus in different nodes
  4. Build Monitoring
    1. Define monitoring interfaces for nodes and links
      1. e.g., capture node cpu percent, link packet statistics
    2. Set database interface to store monitored data (e.g., influxdb, elasticsearch)
    3. Set visualization interface to show stored data (e.g., graphana)
  5. Build Dynamics
    1. Define needed dynamicity in test execution
      1. e.g., possible event types, schedule, duration (i.e., what, where, when)
    2. Code basic set of events for topology events
      1. e.g., node/link failures and resource modification
    3. Code basic set of events for hyperledger components
      1. e.g., transaction calls, parameter configuration
    4. Test dynamics with Fabric scenario
  6. Build Analysis
    1. Define possible analysis of results to generate test report
    2. Define test report format
    3. Code modules/classes to report test results
    4. Test modules and output report
  7. Scale to cluster of servers
    1. Define requirements to scale project
      1. e.g., ssh keys, config files, docker images
    2. Code needed modules/classes
    3. Test all the architecture running with Fabric in scaled experimental scenarios
  8. Extend architecture to other Hyperledger project(s)
    1. Define how architecture can be extended
      1. e.g., needed components, interfaces, modules
    2. Create the basic architecture to extend project
  9. Document the project
    1. Iterate documentation of source code during project
    2. Refine documentation by the end of project
    3. Publish readthedocs documentation for the whole project
      1. Containing multiple test cases exploring: basic architecture, monitoring, dynamics, analysis, extensibility   


Evaluation Criteria

  • 1st Quarter Evaluation (end of week 6): Define architecture view,  process view, flow view, directory structure and logical view. Have  coded an initial skeleton (operational) of the platform.

  • Midterm Quarter Evaluation (end of week 12): Have a Hyperledger project executed in the Umbra platform and have that fully reproducible (Get real time statistics/metrics and run some unit-tests on the system).

  • 3rd Quarter Evaluation (end of week 18): Have Umbra platform scaled to multiple servers (i.e., run project with 100 and/or 1000 nodes). Have other Hyperledger projects supported.

  • Final Evaluation: Extract how consensus round works based on network statistics and analyzed (payload) traffic


  • No labels