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

Use cases page #39

Open
vietj opened this issue Jul 17, 2020 · 10 comments
Open

Use cases page #39

vietj opened this issue Jul 17, 2020 · 10 comments
Assignees

Comments

@vietj
Copy link
Contributor

vietj commented Jul 17, 2020

No description provided.

@vietj vietj changed the title Use case page Use cases page Jul 17, 2020
@aesteve
Copy link

aesteve commented Jul 17, 2020

## Why?

A lot of people are wondering what is Vert.x good at? What is it useful for? How does it stand against XXX? These are a lot of honest questions. That could be addressed as different points:

1/ "How does it compare to something I know?" / "Should I use Vert.x for...?"

Example: https://www.arewewebyet.org/ => "Should I replace my Django app with Rust?"

When I'm explaining Vert.x to other people I often tend to go with examples we have a common and start with questions like "do you know Node.js?", "have you ever worked with an event-loop, Android maybe?".
That's something that would be worth covering in a set of dedicated articles I guess.

How does it relate to Spring?
Should I refactor a huge piece of a monolithic app using event-bus service proxies extensively?
Is Vert.x good for API gateways?
Is there any example of real-time-communication systems built with Vert.x?
Is it worth using Vert.x if my app is very business oriented with small traffic?
On the other hand, is rewriting my back-for-front service with Vert.x + RxJava + Kotlin worth it? What would it look like? What would be the (honest) benefit?

2/ How do I do XXX with Vert.x

@jponge pointed out the great stuff from Apache Ignite: https://ignite.apache.org/ => "Apache Ignite as ...".

It's really great and partly addresses a few of the questions above: conferences are generally great at covering these. Blog articles, too.

@vietj
Copy link
Contributor Author

vietj commented Jul 17, 2020

People drop your suggestions for the use cases as a comment.

@slinkydeveloper
Copy link
Collaborator

We have a full document talking about use cases regarding api gateway/api facade: https://docs.google.com/document/d/1OU7JI7ty5hJ-S1DBcMyl7yXEmkvL-NG8O08i1EDdb98/edit?usp=sharing we might take inspiration to extract a couple of use cases from there

@slinkydeveloper
Copy link
Collaborator

slinkydeveloper commented Jul 17, 2020

Another use case we can talk about is the one my GSoC student @pierDipi is working on in Knative: a "messaging broker" https://github.com/knative-sandbox/eventing-kafka-broker. Vert.x fits pretty well because it's mostly I/O and pretty much 0 business logic. I think we should elaborate a couple of words for that too

@tsegismont
Copy link
Collaborator

tsegismont commented Jul 20, 2020

Use case: Vert.x as a protocol translator

When you have

1/ a system from a third-party sending you requests over a proprietary protocol
2/ an internal system that can do the job but only over HTTP or Kafka or Message broker (or a mix of them)

You can create a Vert.x system bridging the two systems.

Example: extract metric data from collectd network protocol and send data points with HTTP Web Client to a backend.

@tsegismont
Copy link
Collaborator

Use case: Vert.x has an API Gateway

When you have
1/ multiple backends exposing services over HTTP
2/ a client that needs to communicate with all of them to fulfill users needs
3/ the backends are located in the same network area but not the clients (typically, end users at home connected to your business services inside the datacenter)

You can create an API Gateway with Vert.x in order to reduce complexity and round-trips over the WAN.

@jponge
Copy link
Collaborator

jponge commented Jul 20, 2020

Use case: Vert.x for real-time web applications

Real-time web applications require both frontend and backends to exchange messages in either direction.

With Vert.x and its SockJS event bus bridge, you can use the same programming model on the backend and on the frontend and leverage the event bus.

@jponge
Copy link
Collaborator

jponge commented Jul 20, 2020

Use-case: Vert.x for continuous event processing

Event streaming middleware such as Apache Kafka produce streams of data, where some streams are the resultant of processing data from other streams.

With Vert.x and its vertx-kafka-client + an advanced reactive extension library such as RxJava2 it is possible to write continuous stream processing logic in pure Java, including with grouping and time window operators.

@bfreuden
Copy link

Use-case: Vert.x: async programming made easy

You might not agree with my use case but, really, Kotlin coroutine-related extensions of Vert.x make it super easy to write Vert.x asynchronous code like it was synchronous code. I would never ever go back to futures, promises or rx (okay, I'm still using futures and promises a bit).

@tsegismont
Copy link
Collaborator

Thanks for your feedback @bfreuden

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

No branches or pull requests

7 participants