Search code examples
deepstream.io

What is Deepstream.io


I've been reading about Deepstream & it seems like an awesome solution for real-time applications. I am confused however, in what Deepstream's actual role is.

The documentation for the core features (data-sync, records, auth, permissions, events, rpc, ...) is really well written, except that it is low level. I think a through high-level explantation of what Deepstream should be used as is missing.

My question is:

  • Is Deepstream a full-fledged/stand-alone backend framework for any real-time based application?
  • or is Deepstream a server platform used for directing (auth,routing,caching, load balancing) communication from microservices (and/or principal application layers) to clients?
  • or is it something quite different?

Would appreciate a detailed explanation of how developers should distinguish Deepstream and possibly any direction on how Deepstream should be incorporated in our applications.

Thanks.


Solution

  • Deepstream is a standalone server that’s installed like e.g. Nginx or any database. It’s available via yum/apt for most Linux distros as well as Windows and MacOS executable.

    A deepstream server accepts client connections via TCP and WebSocket. Clients can connect to it via SDKs that are currently fully available for JS/Node & Java/Android and partially/soon available for IOs(Obj C/Swift), Python and .NET.

    Deepstream provides three core concepts:

    • Data-sync: stateful and persistent JSON objects that can be manipulated in whole or in parts and are synchronized across all connected clients

    • Pub-Sub: many-to-many messaging based on subscriptions to topics

    • Request-Response: Question/Answer workflows

    The server itself is configurable and uses permission files to validate incoming messages, but doesn’t hold any logic other than that. All logic is provided by “clients” which can be backend processes as well as end-users. Deepstream provides numerous features such as listening and active subscriptions to hook into what users request and provide/transform data accordingly as well as integrate and retrieve data from third party components or APIs.

    This makes deepstream useful as both a realtime server for mobile/browser and desktop clients as well as a backbone for a microservice architecture

    Deepstream can optionally be integrated with three types of systems:

    • Databases can be used for long-term data storage and querying
    • Caches can be used for fast short-term data access
    • Message Busses can be used for multiple deepstream nodes to communicate with each other

    Connectors are available for many popular systems, e.g. RethinkDB, MongoDB, Redis, AMQP, Kafka or ElasticSearch and can also easily be written yourself. This animation aims to provide an impression of how deepstream interacts with other systems

    integration

    If no external system is specified, deepstream will run as a single node and store data in internal memory, but won't persist it to disk.