1

I have a question around which is preferred and seen as more right approach.

Out company's messaging solution of choice is Kafka. We have a task to build a service that would provide events in cloud environment via HTTP(no port opening, widely used - easy to get clients onboarded). Events originate from company's own datacenters.

Now the performance requirement is small as we will be delivering around 5000 events a day.

To implement that there are few options:

1) Define simple Rest API we think is best, abstract underlying messaging mechanism so that other teams can integrate without depending on our implementation details. Then we can start for example with relational DB in cloud to store events.

Pros:

  • Other services do not know about our implementation
  • We can choose how we implement it and change later
  • Simple API - just enough to provide what is needed
  • By not reusing alredy build Kafka cluster we do not have single point of failure within a team - if kafka fails for some reason that was build for other project - we are not affected.

Cons:

  • Could be (we not 100% sure) Slightly longer than Option 2
  • We are reimplementing messaging

2) Reuse already build kafka cluster by other subteam in cloud and put Kafka rest proxy on top and expose events. That results in our consumers talking in Kafka language.

Pros:

  • Possibly it will be delivered faster
  • We have already Kafka cluster

Cons:

  • Learning of Kafka
  • Coupling clients to our internal mechanisms
  • Kafka as a single point of failure

Now the question is - what do you think is right thing to do?

4
  • 2
    How do you define "right?" Commented Jan 18, 2018 at 21:15
  • Doesn't matter about internal stuff, but to external world, expose a protocol that's simple and expected to stay mainstream for considerable time. And there, I see HTTP beating Kafka language.
    – S.D.
    Commented Jan 19, 2018 at 6:06
  • @RobertHarvey "right" is what would you feel would be right given your experience and knowledge of systems design and architecture best practices. Happy to answer any specific question that would help you have better understanding before you can tell what you think.
    – Eds
    Commented Jan 19, 2018 at 14:51
  • I feel like you've already adequately identified the pros and cons, and you now need to make a choice based on those pros and cons. See If there are two ways of approaching a task, how should one choose between them? Commented Jan 19, 2018 at 15:38

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.