https://github.com/accenture/reactive-interaction-gateway

Create low-latency, interactive user experiences for stateless microservices.

https://github.com/accenture/reactive-interaction-gateway

Keywords

api-gateway cloudevents-schema event-driven-architecture event-driven-microservices event-subscriptions frontend kafka kinesis live-data microservices reactive server-sent-events unidirectional-data-flow

Keywords from Contributors

interactive projection archival sequences observability autograding hacking shellcodes modular network-simulation
Last synced: 6 months ago · JSON representation

Repository

Create low-latency, interactive user experiences for stateless microservices.

Basic Info
Statistics
  • Stars: 605
  • Watchers: 38
  • Forks: 70
  • Open Issues: 55
  • Releases: 25
Topics
api-gateway cloudevents-schema event-driven-architecture event-driven-microservices event-subscriptions frontend kafka kinesis live-data microservices reactive server-sent-events unidirectional-data-flow
Created over 8 years ago · Last pushed over 2 years ago
Metadata Files
Readme Changelog Contributing License Code of conduct

README.md

Logo

RIG - Reactive Interaction Gateway

Makes frontend<->backend communication reactive and event-driven.

Build Status DockerHub

About

The Reactive Interaction Gateway (RIG) is the glue between your client (frontend) and your backend. It makes communication between them easier by (click the links to learn more)

  • picking up backend events and forwarding them to clients based on subscriptions: this makes your frontend apps reactive and eliminates the need for polling. You can do this
    • asynchronously - using Kafka, Nats or Kinesis.
    • synchronously - if you don't want to manage a (potentially complex) message broker system like Kafka.
  • forwarding client requests to backend services either synchronously, asynchronously or a mix of both:
    • synchronously - if requests are being sent synchronously, RIG acts as a reverse proxy: RIG forwards the request to an HTTP endpoint of a backend service, waits for the response and sends it to the client.
    • asynchronously - fire&forget - RIG transforms a HTTP request to a message for asynchronous processing and forwards it to the backend asynchronously using either Kafka, NATS or Amazon Kinesis.
    • synchronously with asynchronous response - a pseudo-synchronous request: RIG forwards the client request to the backend synchronously via HTTP and waits for the backend response by listening to Kafka/NATS and forwarding it to the still open HTTP connection to the frontend.
    • asynchronously with asynchronous response - a pseudo-synchronous request: RIG forwards the client request to the backend asynchronously via Kafka or NATS and waits for the backend response by listening to Kafka/NATS and forwarding it to the still open HTTP connection to the frontend.

Built on open standards, RIG is very easy to integrate – and easy to replace – which means low-cost, low-risk adoption. Unlike other solutions, RIG does not leak into your application – no libraries or SDKs required. Along with handling client requests and publishing events from backend to the frontend, RIG provides many out-of-the-box features.

This is just a basic summary of what RIG can do. There is a comprehensive documentation available on our website. If you have any unanswered question, check out the FAQ section to get them answered.

Getting Started

Get Involved

License

The Reactive Interaction Gateway (patent: granted) is licensed under the Apache License 2.0 - see LICENSE for details.

Acknowledgments

The Reactive Interaction Gateway is sponsored and maintained by Accenture.

Kudos to these awesome projects:

  • Elixir
  • Erlang/OTP
  • Phoenix Framework
  • Brod
  • Distillery

Owner

  • Name: Accenture
  • Login: Accenture
  • Kind: organization

Accenture Github site

GitHub Events

Total
  • Watch event: 15
  • Fork event: 7
Last Year
  • Watch event: 15
  • Fork event: 7

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,168
  • Total Committers: 24
  • Avg Commits per committer: 48.667
  • Development Distribution Score (DDS): 0.653
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Kevin Bader k****r@a****m 405
Mario Macai m****i@a****m 362
Knappek a****k@g****m 130
Jakob Wagner j****r@g****m 106
Kevin Bader k****r@g****m 33
dependabot[bot] 4****] 32
Ariel Simulevski a****l@s****t 28
Martin Lofaj m****j@a****m 23
Pavel Struhar p****r@g****m 10
Roman Schiefer r****r@g****m 6
Sascha s****r@a****m 5
Max Glassie C****e@c****m 5
Wagner j****r@a****m 4
Michael Gloger m****r@a****m 4
Luncanu, Ionela i****u@a****m 2
Steve Oliver s****e@c****m 2
mark.rendell m****l@g****m 2
matej.krekac m****c@a****m 2
Peter Masica p****a@a****m 2
john.r.kriter j****r@a****m 1
Sahil Kariyania s****a@g****m 1
Lancaster, Matthew D m****t@g****m 1
Lacik i****k@a****m 1
ArthurJordao a****o@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 27
  • Total pull requests: 75
  • Average time to close issues: almost 2 years
  • Average time to close pull requests: 5 months
  • Total issue authors: 11
  • Total pull request authors: 6
  • Average comments per issue: 0.96
  • Average comments per pull request: 0.67
  • Merged pull requests: 28
  • Bot issues: 0
  • Bot pull requests: 61
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: about 16 hours
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • kevinbader (14)
  • patrickmedina (3)
  • mmacai (2)
  • arfl (1)
  • Lavaei (1)
  • littlesvensson (1)
  • allamsudha (1)
  • lofim (1)
  • Knappek (1)
  • actraiser (1)
  • jakobwgnr (1)
Pull Request Authors
  • dependabot[bot] (61)
  • mmacai (9)
  • steveoliver (2)
  • kevinbader (1)
  • patrickmedina (1)
  • Azer0s (1)
Top Labels
Issue Labels
bug (9) enhancement (7) good first issue (7) idea (2) java (1)
Pull Request Labels
dependencies (61) javascript (61) enhancement (1) bug (1)

Packages

  • Total packages: 1
  • Total downloads:
    • hex 300 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 1
  • Total maintainers: 2
hex.pm: rig

RIG, the Reactive Interaction Gateway, provides an easy (and scaleable) way to push messages from backend services to connected frontends (and vice versa).

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 300 Total
Rankings
Stargazers count: 2.1%
Forks count: 2.7%
Dependent packages count: 21.4%
Average: 28.1%
Dependent repos count: 34.5%
Downloads: 80.0%
Maintainers (2)
Last synced: 6 months ago

Dependencies

integration_tests/nats_tests/mix.exs hex
  • gnat ~> 1.0.0
mix.exs hex
  • brod ~> 3.9
  • cloudevents ~> 0.4.0
  • confex ~> 3.4
  • credo >= 1.3.0
  • dialyxir >= 1.0.0-rc.6
  • distillery ~> 2.1
  • erlavro ~> 2.8
  • ex2ms ~> 1.6
  • ex_aws ~> 2.0
  • ex_aws_kinesis ~> 2.0
  • ex_doc >= 0.21.0
  • ex_rated ~> 1.2
  • excoveralls >= 0.12.0
  • fake_server ~> 2.1
  • gnat ~> 1.0
  • httpoison ~> 1.6
  • jason ~> 1.2
  • jaxon ~> 1.0
  • joken ~> 1.5
  • logger_json ~> 4.0
  • memoize ~> 1.3
  • mix_test_watch ~> 1.0
  • mox ~> 0.5
  • murmur ~> 1.0
  • odgn_json_pointer ~> 2.5
  • opencensus ~> 0.9
  • opencensus_elixir ~> 0.3
  • opencensus_jaeger ~> 0.0.1
  • opencensus_plug ~> 0.3
  • opencensus_zipkin ~> 0.3
  • peerage ~> 1.0
  • phoenix ~> 1.5
  • phoenix_live_dashboard ~> 0.4
  • phoenix_pubsub ~> 2.0
  • phoenix_swagger ~> 0.8
  • plug ~> 1.9
  • plug_cowboy ~> 2.1
  • porcelain ~> 2.0
  • prometheus_ex ~> 3.0
  • prometheus_plugs ~> 1.1
  • schemex ~> 0.1.1
  • server_sent_event ~> 1.0
  • socket ~> 0.3
  • stream_data ~> 0.4
  • stubr ~> 1.5.0
  • telemetry_metrics ~> 0.6
  • telemetry_metrics_prometheus ~> 0.6
  • telemetry_poller ~> 0.5
  • timex ~> 3.6
  • typed_struct ~> 0.2.0
  • uuid ~> 1.1
  • vex ~> 0.8.0
scripts/encode_jwt/mix.exs hex
  • joken ~> 1.4
scripts/encode_jwt/mix.lock hex
  • base64url 0.0.1
  • joken 1.5.0
  • jose 1.8.4
  • poison 3.1.0
kinesis-client/pom.xml maven
  • org.erlang.otp:jinterface 1.8.1 provided
  • com.amazonaws:amazon-kinesis-client 1.9.0
  • junit:junit 4.13.1 test
examples/channels-example/frontend/package-lock.json npm
  • 1472 dependencies
examples/channels-example/frontend/package.json npm
  • react-scripts ^4.0.3 development
  • bulma ^0.7.5
  • jsonwebtoken ^8.5.1
  • proptypes ^1.1.0
  • react ^16.8.6
  • react-dom ^16.8.6
examples/channels-example/service/package-lock.json npm
  • @hapi/accept 5.0.2
  • @hapi/ammo 5.0.1
  • @hapi/b64 5.0.0
  • @hapi/boom 9.1.4
  • @hapi/bounce 2.0.0
  • @hapi/bourne 2.1.0
  • @hapi/call 8.0.1
  • @hapi/catbox 11.1.1
  • @hapi/catbox-memory 5.0.1
  • @hapi/content 5.0.2
  • @hapi/cryptiles 5.1.0
  • @hapi/file 2.0.0
  • @hapi/hapi 20.2.2
  • @hapi/heavy 7.0.1
  • @hapi/hoek 9.3.0
  • @hapi/iron 6.0.0
  • @hapi/mimos 6.0.0
  • @hapi/nigel 4.0.2
  • @hapi/pez 5.0.3
  • @hapi/podium 4.1.3
  • @hapi/shot 5.0.5
  • @hapi/somever 3.0.1
  • @hapi/statehood 7.0.4
  • @hapi/subtext 7.0.4
  • @hapi/teamwork 5.1.1
  • @hapi/topo 5.1.0
  • @hapi/validate 1.1.3
  • @hapi/vise 4.0.0
  • @hapi/wreck 17.2.0
  • kafkajs 1.16.0
  • mime-db 1.52.0
examples/channels-example/service/package.json npm
  • @hapi/hapi ^20.1.2
  • kafkajs ^1.15.0
examples/tests/package-lock.json npm
  • 209 dependencies
examples/tests/package.json npm
  • cypress ^5.5.0 development
performance_tests/artillery/package-lock.json npm
  • 202 dependencies
performance_tests/artillery/package.json npm
  • artillery ^1.5.6
  • eventsource ^2.0.2
smoke_tests/rest-api/package-lock.json npm
  • 123 dependencies
smoke_tests/rest-api/package.json npm
  • body-parser ^1.19.0
  • express ^4.17.1
  • morgan ^1.9.1
  • multer ^1.4.2
  • no-kafka ^3.4.3
  • winston ^3.2.1
website/package.json npm
  • docusaurus ^1.14.4 development
website/yarn.lock npm
  • 983 dependencies
.github/workflows/on_change_elixir.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/setup-elixir v1 composite
.github/workflows/on_change_examples.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/setup-node v2.1.3 composite
  • ryankurte/action-apt v0.2.0 composite
.github/workflows/on_change_helm_charts.yaml actions
  • actions/checkout v2 composite
  • helm/chart-releaser-action v1.0.0 composite
  • helm/chart-testing-action v1.0.0 composite
  • helm/kind-action v1.0.0 composite
.github/workflows/on_release_published.yml actions
  • actions/checkout v2 composite
Dockerfile docker
  • elixir 1.11.3-alpine build
  • erlang 23-alpine build
examples/api-gateway/kafka/kafka.docker-compose.yml docker
  • wurstmeister/kafka 0.10.0.1-2
  • wurstmeister/zookeeper 3.4.6
examples/channels-example/app.docker-compose.yml docker
  • accenture/reactive-interaction-gateway latest
  • channels-external-service latest
  • channels-ui latest
  • jaegertracing/all-in-one 1.18
  • wurstmeister/kafka 0.10.0.1-2
  • wurstmeister/zookeeper 3.4.6
examples/channels-example/frontend/Dockerfile docker
  • nginx latest build
examples/channels-example/kafka.docker-compose.yml docker
  • wurstmeister/kafka 1.0.0
  • wurstmeister/zookeeper 3.4.6
examples/channels-example/service/Dockerfile docker
  • node 14-alpine build
examples/kinesis-localstack/docker-compose.yml docker
  • jaegertracing/all-in-one 1.18
  • localstack/localstack latest
integration_tests/kafka_tests/docker-compose.yml docker
  • confluentinc/cp-kafka 5.0.0
  • confluentinc/cp-schema-registry 5.0.0
  • confluentinc/cp-zookeeper 5.0.0
monitoring/metrics/docker-compose.yml docker
  • accenture/reactive-interaction-gateway latest
  • confluentinc/cp-kafka 5.0.0
  • confluentinc/cp-kafkacat 5.0.0
  • confluentinc/cp-zookeeper 5.0.0
  • grafana/grafana 7.3.4
  • localstack/localstack 0.12.2
  • prom/prometheus v2.23.0
smoke_tests/rest-api/Dockerfile docker
  • node 14-alpine build
smoke_tests/smoke_tests.docker-compose.yml docker
  • rig smoke_test
  • wurstmeister/kafka 1.1.0
  • wurstmeister/zookeeper 3.4.6
integration_tests/nats_tests/mix.lock hex
mix.lock hex