Giter Site home page Giter Site logo

differentialhq / differential Goto Github PK

View Code? Open in Web Editor NEW
103.0 1.0 3.0 14.46 MB

Typescript-first background services platform with durable functions.

Home Page: https://www.differential.dev

License: Apache License 2.0

Makefile 0.07% JavaScript 2.89% TypeScript 96.05% Dockerfile 0.20% Shell 0.18% CSS 0.33% Starlark 0.28%
background-jobs rpc service-bus service-orchestration service-to-service typescipt nodejs typescript

differential's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

differential's Issues

A small critic on the license

In 2024 it's not hard to create a E2E system with Node, TS and some client-side fetch. Elysia and Hono, the newest frameworks, already support this use case. I think your monetization approach by giving the open source project a viral license is flawed, as it will just make people look the integrations you did with background queues and other extra batteries and they will do it by hand on the newer frameworks.

Decision: Websockets and persistent connections

Differential implements a very chatty protocol. This will get to be a problem as and when we scale.

However, implementing websockets and persistent connections has it's own challenges. Whenever you say the connection is persistent, you run into the problem of the server maintaining state of that connection. And that adds extra complexity, because you can't make the same assumptions as you'd have made when the server was stateless.

For example, you can't scale down (easily) without kicking off clients. And you can't scale up (easily) and rebalance as you wish. You can implement/buy a proxy that handles these concerns for you, but that's additional complexity.

Instead, we will stick with the tried and true long polling for most of our chatty workloads with keep-alives and HTTP2 support.

We may visit going fully websockets in the future, but I've a feeling we don't need to.

Handling client abort

In certain circumstances, the polling agent might close the connection before getting the request, but after the atomic UPDATE has marked the job as running. In these cases, we should try to walk back the update by listening to the abort.

Some Fastify references:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.