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

Product idea #1

Open
AndrewDryga opened this issue Mar 31, 2018 · 0 comments
Open

Product idea #1

AndrewDryga opened this issue Mar 31, 2018 · 0 comments

Comments

@AndrewDryga
Copy link
Member

AndrewDryga commented Mar 31, 2018

The Idea

I've seen few companies that build in-house solutions to receive webhooks in a resilient and highly available fashion. This can be archived by buffering all incoming webhooks into queue (:dets, :disc_log, Kafka, RabbitMQ or Faktory) and retrying their delivery to the upstream.

Core concepts

  • Business source - free with OS if you want to deploy it to your infrastructure with more features for paid version and access to PRO version source;
  • Easy deployment scripts (Docker Container, Heroku, Kubernetes);
  • Minimalistic;
  • Reliable.

Business model

We can follow https://sidekiq.org/.

Features

Free

  • Persistence (must have);
  • Delivery retries;
  • Web UI;
  • Probably debugging tool to investigate what's wrong;

SMB

  • Stats (msg Q len and others, check RabbitMQ);
  • Debouncing on header/body attribute;
  • Ability to collect events and sending them to upstream. (By timeout + messages len.)

Enterprise

  • LIFO guarantees (enterprise);
  • Rate limiting
  • Encryption

Use cases:

  • Twilio - it doesn't provide a way to retry failed deliveries, but it's able to redeliver to a secondary endpoint. Simple buffering would solve this issue a lot.
  • Events from browsers - when site tracks events which are persisted into internal DB, it's not always available to handle a write-intensive load spike.

Name ideas: buffer, retry it, request me, callbacker

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

1 participant