Coder Social home page Coder Social logo

memphisdev / memphis Goto Github PK

View Code? Open in Web Editor NEW
3.1K 32.0 207.0 476.58 MB

Memphis.dev is a highly scalable and effortless data streaming platform

Home Page: https://memphis.dev

License: Other

Go 81.25% Dockerfile 0.01% Shell 0.20% JavaScript 14.64% HTML 0.05% SCSS 3.85% PowerShell 0.01%
data data-stream-processing data-streaming kubernetes messaging-queue data-engineering data-pipeline golang enrichment message-broker

memphis's People

Contributors

akarsh-jain-790 avatar alikonhz avatar avitaltrifsik avatar avrham avatar avrhamneeman avatar aydin101 avatar bazen-teklehaymanot avatar big-vi avatar bjwschaap avatar cbnsndwch avatar daniel-davidd avatar devpahuja avatar github-actions[bot] avatar idanasulinmemphis avatar idonaaman123 avatar krupalitrivedi avatar madestreel avatar ormemphis avatar otabek-memphis avatar revosw avatar rnowling avatar rnowling-memphis avatar saarryan avatar saptarshisarkar12 avatar shay23b avatar shohamroditimemphis avatar svetamemphis avatar turulix avatar valerabr avatar yanivbh1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

memphis's Issues

Factory object removal

Summary

"Factory" object not making sense and adding a layer of complexity for no good reason.
Should be removed.

Context

The initial thought was to add an extra level of management. After engaging with users, it turned out it's not being used in a way it makes sense for it to stay.

Value

Reduce complexity

Persona(s)

  • Data Engineers
  • Developers

consumer/producer ip of the same name/cg doesnt change

Describe the bug
A certain station that already exists keep saving the old IP address of a certain producers/consumers which I used their names but from an entirely different host with a different IP address.

To Reproduce
Steps to reproduce the behavior:

  1. Create a station
  2. Connect a producer with name X
  3. Disconnect the producer
  4. Connect with the same producer name and same creds to the same station from a different host

Expected behavior
IP should be updated

RBAC

Summary

Enhanced user management, including permissions per station/features, groups, roles

Context

To enable potential users and organizations with branched teams and different personas that require a higher level of security, compliance, and granularity. In most brokers, ACL (Access control list) mechanism will be found. Memphis will enable the same granularity with ease-of-use

Value

Better security features and compliance

Persona(s)

  • DevOps
  • Security teams
  • Data Engineers

Out of Scope

First login

At first login, the response from the server takes a while.

consumer example from the cli prints 'undefined'

consumer code

const memphis = require('memphis-dev');

(async function () {
    try {
        await memphis.connect({
            host: 'localhost',
            username: 'root',
            connectionToken: 'memphis'
        });

        const consumer = await memphis.consumer({
            stationName: 'benchmark',
            consumerName: 'yaniv_cons1',
            consumerGroup: ''
        });

        consumer.on('message', (message) => {
            console.log(message.getData().toString());
            message.ack();
        });

        consumer.on('error', (error) => {
            console.log(error);
        });
    } catch (ex) {
        console.log(ex);
        memphis.close();
    }
})();

NATS

I was looking through the modules and noticed NATS. Isn't NATS by itself claiming to be a better queue to kafka, how does this library add to that?

Redesign "Getting Started" model

Summary

The "Getting Started" model for new users is not attracting enough usage and should be redesigned.

Context

Help new users onboard Memphis

Value

Increase engagement and familiarity with Memphis features.

Persona(s)

  • Data Engineers
  • Developers
  • DevOps

Debezium HTTP-based integration

Summary

Enable connectivity between Debezium to Memphis to enable CDC use cases.

Context

Multiple streaming pipelines require support in CDC for different databases. Debezium gathers the most popular ones like MySQL, Postgre, and more in a single framework

Value

Faster creation of CDC-based streaming pipelines

Persona(s)

  • DevOps
  • Data Engineers
  • Developers

Asked by

  • Yehuda Korotkin

Released on v1.1 and can be found on both the integration center and detailed here as well - https://memphis.dev/blog/part-1-integrating-debezium-server-and-memphis-dev-for-streaming-change-data-capture-cdc-events/

Terraform for AWS

Summary

Create a terraform file to automatically deploy best practiced EKS with Memphis cluster

Context

Remove deployment frictions of Memphis Broker and have a faster, best-practiced deployment over the popular clouds

Value

One-click installation of Memphis

Persona(s)

  • Data Engineers
  • DevOps

Terraform for DigitalOcean

Summary

Create a terraform file to automatically deploy best practiced DO Kubernetes cluster with Memphis cluster

Context

Remove deployment frictions of Memphis Broker and have a faster, best-practiced deployment over the popular clouds

Value

One-click installation of Memphis

Persona(s)

  • Data Engineers
  • DevOps

Allow to add "-" and/or "." in station's name

Is your feature request related to a problem? Please describe.
No.

Describe the solution you'd like
To be able to create stations with names like "demo-1" / "demo.1"

Describe alternatives you've considered
Like rabbitmq routing keys

Create ready-to-use Terraform deployments

Hey Dear Contributors,
In the latest steering meeting, users raised a few requests to enable a quick deployment over AWS/GCP/DO,
including Kubernetes cluster with three nodes, Memphis cluster, and ingress for production usage.
The purpose behind it is to make Memphis even easier to deploy. Some devs or users in general are a bit backed down regarding k8s. We would love to lower that entrance barrier.

Referring Material -

https://www.digitalocean.com/community/tutorials/how-to-use-terraform-with-digitalocean
https://registry.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/kubernetes_cluster
https://registry.terraform.io/providers/hashicorp/aws/latest
https://registry.terraform.io/providers/hashicorp/google/latest

Terraform files should be able to -

  • Create a K8S cluster over DO / AWS / GCP
  • Enable dynamic insertion of API keys / IAM users
  • Enable dynamic insertion of cluster name, region, and number of nodes (default 3)
  • Ability to deploy nginx ingress as well
  • Deploy Memphis when the cluster configuration is finished

If anything is missing or should be added, please comment.

Thank you ๐Ÿ’›

Please change error text

From:
08-05-2022 01:46:46 PM - fatal: Memphis - You have to connect with application type user
To:
Memphis - Please use a user of type "Application" and not "Management"

Ability to disable/enable DLS (Dead-letter-station) per station

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
At the moment, the DLS feature is enabled by default for every station and cannot be disabled.
We want to add the ability to enable/disable DLS in a certain station.

Schema Transformation

Motivation

Different schemas often occur when working with multiple data sources / different services / different pipelines that produce data on the same topic, while the consumers on the other side expect specific structure.
Usually, that job is distributed across different teams and business units and requires expensive sync in time and effort.
Upstream changes are often impossible.
For example, AWS Lambda cannot ingest JSON-based payload with a boolean value, but rather should be converted into string before.

Summary

Ability to perform deep, inline transformation of events structure at the broker level while in transit.
Functions like: Concat / trim / regex / sum / and more...
Would be great to get comments about expected functions

Value

Reduce logic from producers and consumers, increase data quality, reduce downtime and crashes, and enable complex streaming pipelines for in-app purposes.

Persona(s)

  • Data Engineers
  • Developers
  • Data Analysts

Clarification of volumes name

We need to replace the name of volumes with a meaningful name.
From '89d900b16b4e9cf527b6e6e10dae96ff266ebea390cb208392a335717f191e3c...' To 'Memphis_data' for example.

test

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

DB and broker discrepancies are not handled

When using Stations with the Memory storage type and with a single replica, if we kill the broker and start it again the Station(stream) will perish. although the DB still holds metadata as if the Station exists.

Expected behavior
We should carefully design a solution here,
we can update the DB in this case, or not allow the Memory storage type at all...

Why not using the generated connectionToken?

Hey,
I have installed Memphis over k8s, the connection token should be unique and based on the generated connection token per installation

Screen Shot 2022-05-20 at 16 08 17

The current behavior should only be on Docker installation

Connectors Framework

Summary

Memphis's core value is to build streaming use cases faster, with a low amount of code.
This feature is a milestone - building a modular framework, easy-to-modify, adjust, and scale connectors framework
that will eliminate the need to create consumers/producers that only collect and push data from/to popular sources.

Context

Based on multiple requests by our users asking to have ready-to-use connectors to pull and push data from and directly to Memphis or out. The number of connectors cannot lean on Memphis team resources and should be built to enable users to quickly implement their type of connector in case they can't find the connector they need in the Hub.

Value

Build fully operational streaming pipelines in a low-code manner

Persona(s)

  • Data Engineers
  • Developers

Create station

Get 500 when I try to create a new station.
details for recovery:
factory name: melvis factory
user: root

Producer error

Screen Shot 2022-06-19 at 20 43 24

Sending 100000 messages to a 2-node memphis cluster receives a timeout after a certain point.
We need to check how to make an automatic throttling and notify the user for it

Schema Store - Protobuf

Summary

Unique, robust, dynamic, and easy-to-use schema store for Protobufs, Avro, and JSON based data formats.
Will be available to manage via the GUI, SDKs, and REST and with dedicated resources embedded in the broker itself without the need to deploy dedicated tools/system and add extra dependencies and management overhead.

Context

A schema defines how a message or event should look and in which format, creating a contract between producer and consumer that the broker will enforce or be aware of.

  • We want to redesign how schema management and serialization work compared to other platforms such Schema Registry and AWS GLUE. Memphis will let the user the option to choose if your broker will enforce the schema or will be able to update dynamically with default values.
  • Auto schema creator based on message existing schema.
  • Ability to import schemas from git repo with CI/CD integrations to update the schema dynamically using DataOps Methodologies.
  • Self-service for personas such as product/other devs/BIs/Analysts

Value

  1. Enrich Memphis use cases
  2. Help users to decouple business logic from consumers and producers
  3. Recude code at the producers/consumers level
  4. Reduce management overhead compared to other solution
  5. Provide self-service for other persona to work with schemas

Persona(s)

  • Active users
  • Kafka/SQS/Redis/GCP users
  • Data Engineers for building complex pipelines

Out of Scope

  • Avro
  • JSON Schema
    Will be available in Q4

test

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

typo in "old SDK" message in main stations view

Describe the bug
See title

To Reproduce

  1. Bring a memphis cluster/server up
  2. Create a station
  3. Send a message without a header using nats cli nats pub stationName.final message
  4. Open UI, get into the station view, click on the message
  5. the warning message should appear at the top of the page

Expected behavior
the "SDk" should be "SDK"

Screenshots
image

Terraform for GCP

Summary

Create a terraform file to automatically deploy best practiced GKE with Memphis cluster

Context

Remove deployment frictions of Memphis Broker and have a faster, best-practiced deployment over the popular clouds

Value

One-click installation of Memphis

Persona(s)

  • Data Engineers
  • DevOps

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.