Scaling Experiments with Hyperledger Umbra: Internship Activities - Project Plan
Overview
This document contains the roadmap of activities to accomplish the topics proposed by the 2020 internship project named Scaling Experiments with Hyperledger Umbra.
The source code and documentation of this project is going to be sent as a pull request to the main umbra repository https://github.com/hyperledger-labs/umbra.
During the development of the project a fork of such repository will be used for the activities below.
Activities
Add monitor and agent source code
Add monitor component to umbra - hosts, processes and containers can be monitored (cpu, mem, disk) and network (capture pcaps)
Monitor is triggered by broker events
Monitoring can be continuous or not
Add agent component to umbra - enables containers to run tools that can create disturbances in the network (e.g., play pcaps, iperf, ping, etc)
Agent is triggered by broker events
Different types of agent events can be called (live stream metrics to database, repetitions, etc)
Provide support for HL Fabric 2.0
Read the docs about Fabric 2.0
Implement modifications to fully support Fabric 2.0
Scale to cluster of servers
Define requirements to scale project
e.g., ssh keys, config files, docker image downloads/builds
Code needed modules/classes
Test all the architecture running with Fabric in scaled experimental scenarios
Build umbra monitoring toolset
Define monitoring interfaces for nodes and links
e.g., capture node cpu percent, link packet statistics
Add methods to capture pcaps in node interfaces
Set database interface to store monitored data (e.g., influxdb, elasticsearch)
Set visualization interface to show stored data (e.g., graphana/kibana)
Build Experimental Analysis Report
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
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, scaling techniques, analysis report
Write project demo and article describing internship activities
Extra (If time allows):
Extend architecture to other Hyperledger project(s)
Choose a HL blockchain project
Define how architecture can be extended
e.g., needed components, interfaces, modules
Create the basic architecture to extend project
Schedule
Quarterly Evaluations | Activities |
July 10: First | 1, 2 |
August 21: Second | 3 |
October 2: Third | 4, 5 |
November 13: Fourth | 6 |
Progress
1st Quarterly Evaluation (July 10):
Successfully accomplished. The source code produces is in https://github.com/raphaelvrosa/umbra defined by the commit 78ee22b5f73af70d83b8e6f671853a96274c0692.
Observations:
The support for Fabric 2.0+ is defined for the topology components, but as the events depend on the Fabric python SDK to support Fabric 2.0+ (work in progress by the internship "Add interactive examples to Fabric Python SDK").
No major changes were required in the source code to support Fabric 2.0 - but new events need to be defined to support the new defined chaincode lifecycle operations.
Two new components were added to umbra, agent and monitor. Both make use of async to monitor and probe fabric nodes in run-time topologies.
2nd Quarterly Evaluation (Aug. 21):
Delivered Fabric 2.0 implementation for nodes. Missing fabric-python-sdk (wait for the project to support 2.0+).
3rd Quarterly Evaluation (Oct. 2):
Implemented scaling mechanisms. Umbra runs with umbra-cli (new component) to automate the execution of experiments.
Talk given to Hyperledger webinar about umbra - https://www.youtube.com/watch?v=Aw3AjGiNPF8
4th Quarterly Evaluation (Nov. 13):
Makefile, Vagrant, dockerfile created/upgraded to enable full automation and easy experimentation.
Examples commented with functionalities implemented.
Using Containernet install stable for Ubuntu 20.04.
Merged fuzzing capabilities to scale to multiple environments (servers).
Communication
On weekly basis by zoom call with other umbra related projects