SAND: System Architecture as a Network of Dependencies
Project description
SAND
Python code and notebooks to model System Architecture as a Network of Dependencies
SAND uses Python and Jupyter Notebooks to explore applications of representing system architecture as a directed graph, or network, of engineered artifacts and their relationships to one another.
Engineered artifacts are vertices in the graph. For a software library, the artifacts are functions and the dependencies are function calls. For RESTful microservices, an artifact is a service and the dependencies are API calls.
Directed edges represent the dependencies and their transpose, impact.
Imagine we have two microservices, A and B.
If B calls A, then B has a dependency on A. The creator of A might not know that B is a client, so the dependency relationship is directed.
The transpose of this relationship is that A impacts or influences B: Non backwards-compatible changes in A’s interface that B calls can break B. Changes in B do not impact A, so once again, the edge is directed.
This simple model proves to be extremely powerful in describing arbitrarily complicated system architectures. The SAND library and accompanying Jupyter Notebooks provide working examples of visualization and analysis.
Installation
pip install sand
You might also want to clone this git repo to follow along with the examples below:
git clone git@github.com:testedminds/sand.git
cd sand
Getting Started
SAND is documented with a series of Jupyter Notebooks:
Running in Docker
You can run these notebooks via Docker to experiment. Assuming you have a docker-machine running and you’ve cloned the sand repo:
git clone git@github.com:testedminds/sand.git
docker pull testedminds/sand
make docker-docs
# And after the container starts...
make docker-open
When the notebook opens in your browser, you will see the Notebook Dashboard, which will show a list of the notebooks and data in the docs directory.
These commands translate to:
docker run -d -p 80:8888 -v `pwd`/docs:/opt/sand --rm --name sand testedminds/sand:latest \ jupyter notebook --allow-root --ip 0.0.0.0 --no-browser --NotebookApp.token='' open http://192.168.99.100
This is a useful technique to quickly explore network data anywhere on your local filesystem.
Running locally
To run the notebooks locally without Docker:
pip install -r requirements.txt
cd docs
jupyter notebook
Install Cytoscape to run the optional Cytoscape examples. Start Cytoscape up and close the welcome screen. You probably want to check “Don’t show again” in the lower left.
Learn More
See a presentation from Bobby Norton at Windy City GraphDB for a more detailed introduction to the concept.
The Notebooks leverage Cytoscape’s RESTful API and python-igraph.
License
Copyright © Bobby Norton and Tested Minds, LLC.
Released under the Apache License, Version 2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sand-0.2.1.tar.gz
.
File metadata
- Download URL: sand-0.2.1.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05fb2c7d653ee8010b42adb3140247bce43a16bbfe286ad0f6a95a2e175846db |
|
MD5 | 9ca2940d5974f90b07c6288f6add7d41 |
|
BLAKE2b-256 | feca1081f6d78e2c86e88fa875a15c3a3eb1b6a11a0aaed2fe199ae884917c41 |
File details
Details for the file sand-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: sand-0.2.1-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/42.0.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f64f07651bc054a5cabc338415cee9f8ddc7231d9238b13de05ac76c4c11175b |
|
MD5 | fd5e90bece7adef8f76af4abca673eb5 |
|
BLAKE2b-256 | 347d581cfdf7b587e5a66fbc8c4af67abc44b858581108aaca53ae4fa81b0ed3 |