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

Am I already using CBA? #21

Closed
jbonnett92 opened this issue Jan 28, 2023 · 2 comments
Closed

Am I already using CBA? #21

jbonnett92 opened this issue Jan 28, 2023 · 2 comments

Comments

@jbonnett92
Copy link

jbonnett92 commented Jan 28, 2023

Description:
Hi,
I think what I have been calling Microservices, actually is Cell Based Architecture. Because I split my "services"(lets call this a boundry) into a set of smaller runnable services e.g. HTTP API (client based communication), GRPC API (internal based communication other than anything on the broker, using service discovery on a scaled service to send the message to), business logic worker, projections worker and a service for testing the boundary.
These smaller services are all deployed typically in one go, seperate deployables, as a boundary / version.

The query flow of this would be something like:

  • user requests products to the products HTTP API
  • products HTTP API validates the request and then from the read database and sends the data back.

The command flow is more like this:

  • User requests to create a product to the products HTTP API
  • Products HTTP API validates the query, does extra validation with the read database to see if the product already exists or not. Then fires a command (with the data) over the bus for any services that consume it. Sends a no content response to the user (to create a non blocking HTTP request)
  • The business logic worker picks up the command adds the data to the event store, and fires off an event (can be many services consuming again) to the bus saying that it is successful in storing
  • Both the HTTP API and Projections pick this message up
    -- The HTTP API says that the request was successful via websocket with data that is needed from the event
    -- The Projections worker adds the data to the read models.

Without going into much more detail, do you think this is the case?

Also please may I ask what you are using to create your diagrams? it looks clean and clear!

Thanks,
Jamie

@asankaa
Copy link
Contributor

asankaa commented Feb 1, 2023

Hi Jamie,

Based on your explanation, you are following the Cell-based Architecture principles. So why don't you publish a paper/blog about your implementation? That way, I can add the same to the specification as a reference implementation.

I'm using OmniGraffle (https://www.omnigroup.com/omnigraffle) for diagraming. However, IMHO, the tool does not matter. It is about visual thinking and organizing the components in your diagrams. I'm writing more about this topic at https://blog.architect2architect.com/ and https://blog.infodoodler.com/.

Cheers
Asanka

@asankaa asankaa closed this as completed Feb 1, 2023
@jbonnett92
Copy link
Author

Hi,
I haven't actually finished! Maybe I will when I have completed it somewhat!

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

2 participants