Skip to main content

Konveyor Tackle Data Gravity Insights

Project description

Tackle Data Gravity Insights

Build Status PyPI version License

Tackle Data Gravity Insights is a new way to gain insights into your monolithic application code so that you can better refactor it into domain driven microservices. It takes a wholistic approach to application modernization and refactoring by triangulating between code, and, data, and transactional boundaries.

Application modernization is a complex topic with refactoring being the most complicated undertaking. Current tools only look at the application source code or only at the runtime traces when refactoring. This, however, yields a myopic view that doesn't take into account data relationships and transactional scopes. This project hopes to join the three views of application, data, and transactions into a 3D view of the all of the application relationships so that you can easily discover application domains of interest and refactor them into microservices. Accordingly, DGI consists of three key components:

1. Call-/Control-/Data-dependency Analysis (code2graph): This is a source code analysis component that extracts various static code interaction features pertaining to object/dataflow dependencies and their respective lifecycle information. It presents this information in a graphical format with Classes as nodes and their dataflow, call-return, and heap-dependency interactions edges.

2. Schema: This component of DGI infers the schema of the underlying databases used in the application. It presents this information in a graphical format with database tables and columns as nodes and their relationships (e.g., foreign key, etc.) as edges.

3. Transactions to graph (tx2graph): This component of DGI leverages Tackle-DiVA to perform a data-centric application analysis. It imports a set of target application source files (*.java/xml) and provides following analysis result files. It presents this information in a graphical format with database tables and classes as nodes and their transactional relationships as edges.

Installation

Tackle Data Gravity Insights is written in Python and can be installed using the Python package manager pip.

pip install -U tackle-dgi

Usage

You will need an instance of Neo4j to store the graphs that dgi creates. You can start one up in a docker container and set an environment variable to let dgi know where to find it.

docker run -d --name neo4j \
    -p 7474:7474 \
    -p 7687:7687 \
    -e NEO4J_AUTH="neo4j:konveyor" \
    neo4j:4.4.17

Save the bolt url for further use:

export NEO4J_BOLT_URL="neo4j://neo4j:konveyor@localhost:7687"

You can now use the dgi command to load information about your application into the graph database.

 Usage: dgi [OPTIONS] COMMAND [ARGS]...

 Tackle Data Gravity Insights

╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --neo4j-bolt  -n  TEXT  Neo4j Bolt URL                                                                               │
│ --quiet       -q        Be more quiet                                                                                │
│ --validate    -v        Validate but don't populate graph                                                            │
│ --clear       -c        Clear graph before loading                                                                   │
│ --help                  Show this message and exit.                                                                  │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ c2g         Code2Graph add various program dependencies (i.e., call return, heap, and data) into the graph           │
│ partition   Partition is a command runs the CARGO algorithm to (re-)partition a monolith into microservices          │
│ s2g         Schema2Graph parses SQL schema (*.DDL file) into the graph                                               │
│ tx2g        Transaction2Graph add edges denoting CRUD operations to the graph.                                       │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Demo

This is a demonstration of the usage of DGI

  1. Demonstration

Running DGI

To run this project please refer to the steps in the getting started guide

  1. Getting Started

Contributing

To contribute to this project you will need to set up your development environment and set up some files. The steps are in the following file:

  1. Set up your Developer Environment

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

tackle-dgi-1.0.0.tar.gz (31.8 kB view details)

Uploaded Source

Built Distribution

tackle_dgi-1.0.0-py3-none-any.whl (44.6 kB view details)

Uploaded Python 3

File details

Details for the file tackle-dgi-1.0.0.tar.gz.

File metadata

  • Download URL: tackle-dgi-1.0.0.tar.gz
  • Upload date:
  • Size: 31.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.14

File hashes

Hashes for tackle-dgi-1.0.0.tar.gz
Algorithm Hash digest
SHA256 838af52c4e530cfa44443d105147673f9efb462f4089a9243371fbf74f06d9e2
MD5 d0c23e23af7ac434cbaac75125674a41
BLAKE2b-256 1c734863188c412806490936836f9dc4159523c3e25a35735bc2bfe02fc2b1c3

See more details on using hashes here.

File details

Details for the file tackle_dgi-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: tackle_dgi-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 44.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.14

File hashes

Hashes for tackle_dgi-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77bbd15a5a2e24981a393a7de1ed20dd36aabe456957ff3aee221b20d90e072d
MD5 d0be6c6a0f4c3f2afb0320670e0bf91d
BLAKE2b-256 942629eb2ead8becc440fc2778ec4f3026045b969e19150a86a8b320f77a4d3a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page