Skip to content

Commit 24cdc82

Browse files
Merge pull request #1 from filipecosta90/arch.diagram
Included simplified arch diagram
2 parents 5c60ffa + d66b4f2 commit 24cdc82

File tree

2 files changed

+76
-18
lines changed

2 files changed

+76
-18
lines changed

Readme.md

Lines changed: 76 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,7 @@ Members from both industry and academia, including organizations and individuals
66

77
Currently, the following members actively support this project:
88

9-
- [Redis Labs](https://redislabs.com/): providing steady-stable infrastructure platform to run the benchmark suite. Supporting the active development of this project with the company.
10-
11-
12-
## Directory layout
13-
14-
* `setups`
15-
* [`platforms`](./setups/platforms/): contains the standard platforms considered to provide steady stable results, and to represent common deployment targets.
16-
* [`topologies`](./setups/topologies/): contains the standard deployment topologies definition with the associated minimum specs to enable the topology definition.
17-
* [`test_suites`](./test-suites/): contains the benchmark suites definitions, specifying the target redis topology, the tested commands, the benchmark utility to use (the client), and if required the preloading dataset steps.
18-
* [`validator`](./validator/): contains the benchmark specifications validator utility
19-
* [`build_agent`](./build_agent/): contains the benchmark build agent utility that receives an event indicating a new build variant, generates the required redis binaries to test, and triggers the benchmark run on the listening agents.
20-
* [`benchmark_coordinator`](./benchmark_coordinator/): contains the coordinator utility that listens for benchmark suite run requests and setups the required steps to spin the actual benchmark topologies and to trigger the actual benchmarks.
9+
- [Redis Labs](https://redislabs.com/): providing steady-stable infrastructure platform to run the benchmark suite. Supporting the active development of this project within the company.
2110

2211

2312
## Scope
@@ -39,23 +28,92 @@ Current supported benchmark tools:
3928
- [redis-benchmark](https://github.com/redis/redis)
4029
- [SOON][memtier_benchmark](https://github.com/RedisLabs/memtier_benchmark)
4130
- [SOON][redis-benchmark-go](https://github.com/filipecosta90/redis-benchmark-go)
42-
- [SOON][redis-benchmark-go](https://github.com/filipecosta90/redis-benchmark-go)
31+
32+
## Architecture diagram
33+
34+
```
35+
┌──────────────────────────────────────┐
36+
│1) gh.com/redis/redis update │
37+
│ - git_repo: github.com/redis/redis │
38+
│ - git_hash: 459c3a │
39+
│ - git_branch: unstable │
40+
└─────────────────┬────────────────────┘
41+
42+
│ ┌───────────────────────────────────┐
43+
│ │HTTP POST │
44+
└──────┤<domain>/api/gh/redis/redis/commit │────┐
45+
└───────────────────────────────────┘ │
46+
47+
48+
┌─────────────────────────────────────────────────┐
49+
│2) api │
50+
│ - Converts the HTTP info into an stream entry │
51+
│ - XADD stream:redis:redis:commit <...> │
52+
└────────────────────────┬────────────────────────┘
53+
54+
│ ┌────┐
55+
.─────────────────────────────────────. │ │push│
56+
┌─────┐ ┌ ▶( 2.1 ) stream of build events )◀───┘ └────┘
57+
│pull │ `─────────────────────────────────────'
58+
└─────┘ │
59+
60+
│ ┌────────────────────────────────────────────────┐
61+
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│2.2) build_agent │
62+
│ - based on ./setups/platforms │
63+
│ - build different required redis artifacts │
64+
└───────────────────────┬────────────────────────┘
65+
66+
67+
68+
│ ┌────┐
69+
.─────────────────────────────────────. │ │push│
70+
┌─────┐ ─▶( 2.3 ) stream of artifact benchmarks )◀────┘ └────┘
71+
│pull ││ `─────────────────────────────────────'
72+
└─────┘
73+
74+
┌───────────────────────────────────────────────┐
75+
│ │ │
76+
│3) benchmark_coordinator │
77+
│ │ - based on ./test-suites and ./setups: │
78+
│ - Trigger env setup │
79+
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ - 3.1 ) Trigger topology setup │
80+
│ - 3.2 ) Run benchmarks │
81+
│ - Record results │
82+
│ │
83+
└───────────────────────────────────────────────┘
84+
```
85+
86+
In a very brief description, gh.com/redis/redis upstream changes trigger an HTTP API call containing the
87+
relevant git information.
88+
89+
The HTTP request is then converted into an event ( tracked within redis ) that will trigger multiple build variants requests based upon the distinct platforms described in [`platforms`](./setups/platforms/).
90+
91+
As soon as a new build variant request is received, the build agent ([`build_agent`](./build_agent/)) prepares the artifact(s) and proceeds into adding an artifact benchmark event so that the benchmark coordinator ([`benchmark_coordinator`](./benchmark_coordinator/)) can deploy/manage the required infrastructure and DB topologies, run the benchmark, and export the performance results.
92+
## Directory layout
93+
94+
* `setups`
95+
* [`platforms`](./setups/platforms/): contains the standard platforms considered to provide steady stable results, and to represent common deployment targets.
96+
* [`topologies`](./setups/topologies/): contains the standard deployment topologies definition with the associated minimum specs to enable the topology definition.
97+
* [`test_suites`](./test-suites/): contains the benchmark suites definitions, specifying the target redis topology, the tested commands, the benchmark utility to use (the client), and if required the preloading dataset steps.
98+
* [`validator`](./validator/): contains the benchmark specifications validator utility
99+
* [`build_agent`](./build_agent/): contains the benchmark build agent utility that receives an event indicating a new build variant, generates the required redis binaries to test, and triggers the benchmark run on the listening agents.
100+
* [`benchmark_coordinator`](./benchmark_coordinator/): contains the coordinator utility that listens for benchmark suite run requests and setups the required steps to spin the actual benchmark topologies and to trigger the actual benchmarks.
43101

44102

45-
# Contributing guidelines
103+
## Contributing guidelines
46104

47-
## Adding new test suites
105+
### Adding new test suites
48106

49107
TBD
50108

51-
## Adding new topologies
109+
### Adding new topologies
52110

53111
TBD
54112

55-
## Adding new test platforms
113+
### Adding new test platforms
56114

57115
TBD
58116

59-
# License
117+
## License
60118

61119
redis-benchmark-specifications is distributed under the Apache 2 license - see [LICENSE](LICENSE)

0 commit comments

Comments
 (0)