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