Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve README and feature docs #330

Merged
merged 23 commits into from Nov 12, 2020

Conversation

Knappek
Copy link
Contributor

@Knappek Knappek commented Sep 21, 2020

Description

This PR improves the RIG feature documentation. The goal is to have a clean README that explains in short what RIG is about and its main features without going into much details.

close #284

What to look out for

Dear reviewer, I want you to

  • gain knowledge - I think it's important for you to know about the change.
  • check that the code works on your machine.
  • suggest implementation-code design/structure/readability improvements.
  • suggest test-code design/structure/readability improvements.
  • suggest documentation improvements.
  • suggest language/writing improvements.
  • help to find bugs (described below!).

Process

The goal is to improve not only the code in this PR but also our skills! The "rules":

  • The review is considered "done" as soon as all reviewers have added their review, and all their comments have been addressed.
  • For knowledge-sharing reviews, each reviewer should "approve" the PR after studying its content.
  • After the approval, the merge is concluded by the developer.

Have fun!

@Knappek Knappek force-pushed the 284-document-sync-async-http-to-kafka branch from f92bce6 to f149877 Compare October 9, 2020 09:33
@Knappek Knappek force-pushed the 284-document-sync-async-http-to-kafka branch from baac1cd to 1ca5c18 Compare October 9, 2020 10:20
@Knappek Knappek marked this pull request as ready for review October 16, 2020 11:16
Copy link
Contributor

@kevinbader kevinbader left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! I've suggested some minor edits, but other than that I'm really happy with the simpler readme file :)

docs/features.md Outdated

RIG acts as a fan-out publisher of backend events. Clients can simply subscribe to RIG in order to receive these events. This makes your frontend apps reactive and eliminates the need for polling.

Additionally clients can provide a filter during the subscription initialization and tell RIG in what type of events it is interested in. Thus, you don't have to implement this filter logic in all of your client applications, RIG takes care of it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Additionally clients can provide a filter during the subscription initialization and tell RIG in what type of events it is interested in. Thus, you don't have to implement this filter logic in all of your client applications, RIG takes care of it.
Additionally clients can provide filters during the subscription initialization and tell RIG in what type of events it is interested in. Those filters allow clients to tap into high-volume event streams without getting overwhelmed by unwanted events. In other words, filters enable bandwidth efficiency.

docs/features.md Outdated

You may ask: Why shouldn't I directly talk to the backend? What benefits does RIG provide?

RIG provides many additional features on top like session management or JWT signature verification. You don't have to implement this over and over again at the clients and backend services.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
RIG provides many additional features on top like session management or JWT signature verification. You don't have to implement this over and over again at the clients and backend services.
RIG provides many additional features on top like session management or JWT signature verification. You don't have to implement this over and over again at the clients and backend services. That said, it's perfectly fine to run RIG alongside an existing API management gateway, too.

docs/features.md Outdated

![client-to-backend-asynchronously-fireandforget](./assets/features-client-to-backend-asynchronously-fireandforget.png)

This enables an asynchonous communication between client-side applications and the backend. RIG acts as a middle-man handling authentication when communicating to queuing systems. Without RIG, it would be required to have a custom backend applications that handles client requests and forwarding them to Kafka, Nats or Kinesis. This additional backend app is a single source of failure, hence it would be necessary to harden it and make it highly available and reliable. WIth RIG, you don't have to take care of that - RIG is [scalable by design](https://accenture.github.io/reactive-interaction-gateway/docs/features.html#built-in-features).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This enables an asynchonous communication between client-side applications and the backend. RIG acts as a middle-man handling authentication when communicating to queuing systems. Without RIG, it would be required to have a custom backend applications that handles client requests and forwarding them to Kafka, Nats or Kinesis. This additional backend app is a single source of failure, hence it would be necessary to harden it and make it highly available and reliable. WIth RIG, you don't have to take care of that - RIG is [scalable by design](https://accenture.github.io/reactive-interaction-gateway/docs/features.html#built-in-features).
This enables asynchonous communication between client-side applications and the backend. RIG acts as a bridge between its clients and the messaging system. Similar to above, the authenticity of client requests are validated using JWT signature verification. RIG effectively replaces a custom backend application that would accept client requests and forward them to Kafka, Nats or Kinesis. This additional backend app is a single point of failure, hence it would be necessary to harden it and make it highly available and reliable. With RIG, you don't have to take care of that - RIG is [scalable by design](https://accenture.github.io/reactive-interaction-gateway/docs/features.html#built-in-features).

docs/features.md Outdated

![client-to-backend-synchronously-asynchronous-response](./assets/features-client-to-backend-synchronously-asynchronous-response.png)

This scenario can be quite useful which is described in more detail in the [Architecture section](https://accenture.github.io/reactive-interaction-gateway/docs/architecture.html#providing-a-synchronous-api-for-asynchronous-back-end-services). RIG correlates the corresponding answer using the correlation ID of the oRIGinal request, that will be forwarded to the backend and also being used in the response of the backend. With this ID, RIG can filter the appropriate message from the consuming topic.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oRIGinal request

Pun intended? ;D

Copy link
Contributor

@kevinbader kevinbader left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I don't know why the build fails though

@Knappek
Copy link
Contributor Author

Knappek commented Nov 11, 2020

I am not yet finished, I want to document the feature of integration with external authn/z systems... let's look into the build afterwards...

@kevinbader
Copy link
Contributor

I am not yet finished, I want to document the feature of integration with external authn/z systems... let's look into the build afterwards...

perhaps in a new PR? would like to prevent conflicts, e.g. with #338

@kevinbader kevinbader merged commit 0603642 into master Nov 12, 2020
@kevinbader kevinbader deleted the 284-document-sync-async-http-to-kafka branch November 12, 2020 14:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Make sync/async HTTP<>Kafka feature more visible
2 participants