10

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.

Michael Ramos
  • 5,523
  • 8
  • 36
  • 51

1 Answers1

13

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.

wolframhempel
  • 1,094
  • 10
  • 12
  • _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._ -- So this meaning, without an external data store integrated, `Data-Sync` storage is volatile? – Michael Ramos Sep 22 '16 at 18:17
  • 1
    That's correct. For many use cases such as financial price streaming, multiplayer gaming or Iot metric collection data is transient and expires after a short time. Here the internal cache is sufficient to give users the current state until the very next update. For e.g. collaboration apps on the other hand you'd want to connect a db or disk-backed cache for long term storage. – wolframhempel Sep 22 '16 at 19:41
  • 1
    Actually,really valid question. I've added a more detailed summary here: https://deepstream.io/tutorials/guides/what-is-deepstream/ – wolframhempel Sep 23 '16 at 10:29
  • @wolframhempel - When i try to download deepstream for windows, download link is missing URL - https://deepstreamhub.com/open-source/install/windows/. In the debugger i found that anchor tag url and text is missing – Mohan Ram Dec 19 '17 at 13:32