Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Netflix/mantis
A platform that makes it easy for developers to build realtime, cost-effective, operations-focused applications
https://github.com/Netflix/mantis
Last synced: 7 days ago
JSON representation
A platform that makes it easy for developers to build realtime, cost-effective, operations-focused applications
- Host: GitHub
- URL: https://github.com/Netflix/mantis
- Owner: Netflix
- License: apache-2.0
- Created: 2019-06-06T23:44:48.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-30T21:02:51.000Z (3 months ago)
- Last Synced: 2024-07-30T22:08:27.398Z (3 months ago)
- Language: Java
- Size: 27.5 MB
- Stars: 1,402
- Watchers: 218
- Forks: 200
- Open Issues: 71
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome - mantis - A platform that makes it easy for developers to build realtime, cost-effective, operations-focused applications (Java)
- awesome-streaming - mantis - Netflix's platform to build an ecosystem of realtime stream processing applications (Table of Contents / Streaming Engine)
- awesome-list - mantis - effective, operations-focused applications | Netflix | 1137 | (Java)
- awesome-streaming - mantis - Netflix's platform to build an ecosystem of realtime stream processing applications (Table of Contents / Streaming Engine)
README
# Mantis Documentation
[![Build Status](https://img.shields.io/travis/com/Netflix/mantis.svg)](https://travis-ci.com/Netflix/mantis)
[![OSS Lifecycle](https://img.shields.io/osslifecycle/Netflix/mantis.svg)](https://github.com/Netflix/mantis)
[![License](https://img.shields.io/github/license/Netflix/mantis.svg)](https://www.apache.org/licenses/LICENSE-2.0)[Official Website](https://netflix.github.io/mantis/)
---
## Development
### Setting up Intellij
Run `./gradlew idea` to (re-) generate IntelliJ project and module files from the templates in `.baseline`. The generated project is pre-configured with Baseline code style settings and support for the CheckStyle-IDEA plugin.### Install Docker
Install and run Docker to support local containers.### Building
```sh
$ ./gradlew clean build
```### Testing
```sh
$ ./gradlew clean test
```### Formatting the code
Run `./gradlew format` task which autoformats all Java files using [Spotless](https://github.com/diffplug/spotless).### Building deployment into local Maven cache
```sh
$ ./gradlew clean publishNebulaPublicationToMavenLocal
```### Releasing
We release by tagging which kicks off a CI build. The CI build will run tests, integration tests,
static analysis, checkstyle, build, and then publish to the public Bintray repo to be synced into Maven Central.Tag format:
```
vMajor.Minor.Patch
```You can tag via git or through Github's Release UI.
## Contributing
Mantis is interested in building the community. We welcome any forms of contributions through discussions on any
of our [mailing lists](https://netflix.github.io/mantis/community/#mailing-lists) or through patches.For more information on contribution, check out the contributions file [here](https://github.com/Netflix/mantis/blob/master/CONTRIBUTING.md).
### Module Structure
This excludes all connectors and examples as they are mostly leaf nodes in the dependency graph.Module | Purpose | Example Classes | Package Prefixes
----------------------------|-------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------
mantis-common-serde | Support for serializing and deserializing POJOs using Json |
mantis-discovery-proto | todo: need to fill this in |
mantis-common | Mantis common code shared across modules |
mantis-remote-observable | connection to other job,stage related code |
mantis-control-plane-core | common code between mantis-control-plane-server, mantis-control-plane-client, mantis-server-worker, mantis-server-agent |
mantis-control-plane-client | API to talk to the mantis control plane server |
mantis-network | todo: need to fill this in | |
mantis-publish-core | todo: need to fill this in | |
mantis-server-worker-client | API to interact with workers |
mantis-runtime | Runtime that the jobs need to depend upon. Job DSL should go in here along with how to talk to other jobs |
mantis-publish-netty | todo: need to fill this in | |
mantis-client | client to interact with mantis control plane |
mantis-publish-netty-guice | todo: need to fill this in | |
mantis-control-plane-server | Actual server that runs the mantis master code |
mantis-server-agent | Contains mantis-runtime agnostic code to start the task executor that runs on the agent |
mantis-server-worker | One implementation of Mantis Worker that depends on the master runtime |
### Dependency Graph
```mermaid
graph TD;
A[mantis-common-serde]-->B[mantis-common];
B-->C[mantis-control-plane-core];
B-->D[mantis-runtime];
C-->E[mantis-control-plane-client];
E-->F[mantis-server-worker-client];
F-->G[mantis-client];
E-->G;
C-->H[mantis-control-plane-server];
C-->I[mantis-server-worker];
F-->I;
D-->I;
F-->J[mantis-server-agent];
E-->J;
```