Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Streaming Technology as Event-Driven Infrastructure When Done Precisely

DZone's Guide to

Streaming Technology as Event-Driven Infrastructure When Done Precisely

Let's take a look at how streaming APIs needs to be more event-driven as long as it's done correctly and precisely.

· Integration Zone ·
Free Resource

SnapLogic is the leading self-service enterprise-grade integration platform. Download the 2018 GartnerMagic Quadrant for Enterprise iPaaS or play around on the platform, risk free, for 30 days.

Streaming APIs have an image problem. Because of the dominance of Websockets when it comes to delivering real-time APIs, many people have a view of streaming APIs as being all about high volume data flows and not something that is precise or event-driven. Because of the popularity of streaming APIs like the Twitter firehose, and financial or news APIs delivered via on or off Websocket streams, people associate what we do with a pretty narrow view of the data landscape. This is something we are working to correct, as we position streaming technology as more of an event-driven approach when done precisely.

First, Streamdata.io uses Server-Sent Events (SSE) to deliver our streams. It is a one-way streaming standard that uses HTTP, where Websockets is a two-way streaming standard using TCP. The technology we use is more precise and reflects the world of web APIs more than WebSockets does. Next, we use JSON PATCH to deliver incremental updates to our consumers, pushing updates whenever something has changed with a feed. By default, we aren't just about turning on and off streams, we are about establishing sustained connections with existing web APIs, and getting streams of data pushed whenever something changes. The streaming is just one variable in an event-driven equation. Nothing is streamed unless an event occurs, which depends on how broad or precise you define the query you are sending to an API being proxied by Streamdata.io.

Proxying APIs with Streamdata.io isn't just about streaming, and turning on the data fire hose, as many people assume. Streamdata.io is about turning on precise streams of data that push updates when things have changed, and some meaningful event has occurred. You can proxy the Twitter API for a specific Twitter account and establish streams of data whenever someone tweets, or maybe when they like, follow or perform some other relevant action. You can proxy a subreddit on the popular Reddit site, and establish a stream that only pushes updates when someone mentions a specific keyword or topic. Establishing streams on top of existing APIs, but making sure they are more precise, event-driven streams of data, not just fire hose streams of data that you simply turn on or off. Making streaming more about event-driven infrastructure, than it is ever about just real-time infrastructure.

We are working hard to differentiate what Streamdata.io does from other streaming providers. Demonstrating that we aren't just a real-time company and are more about delivering event-driven infrastructure on top of existing web APIs. Helping companies begin to understand how they can evolve beyond just being request and response driven, and get more efficient about how they deliver information to their consumers. Leveraging their existing infrastructure, but making sure they are moving it forward in a way that is keeping pace with where the rest of the API landscape is headed. Providing webhooks, streams, subscriptions, and other event-driven approaches to orchestrating data and content using low-cost web infrastructure.

With SnapLogic’s integration platform you can save millions of dollars, increase integrator productivity by 5X, and reduce integration time to value by 90%. Sign up for our risk-free 30-day trial!

Topics:
integration ,api ,json patch ,streaming technology ,event-driven infrastructure ,websockets ,streaming apis

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}