Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RSocket: Reactive Cloud-Native Networking

Ryland Degnan
September 14, 2018

RSocket: Reactive Cloud-Native Networking

The vast majority of enterprises are moving to the cloud, but few are prepared for networking implications of cloud-native architectures. For developers, handling service discovery, fault tolerance, load balancing, caching and coordination over the network and across many services is the stuff of nightmares. For businesses, getting this wrong can be the cause of astronomical cloud costs and high-profile outages.

RSocket is an open-source network protocol developed in collaboration with Netflix, Facebook, Pivotal and others that was designed to handle the challenges of communication between complex networks of services both within the datacenter and over the internet – extending to mobile devices and browsers. In addition to ultra-low latency RPC and flexibility in the underlying transport layer, RSocket provides session resumption, application flow control and predictive load balancing to protect both client and server resources from being overwhelmed.

Netifi is leveraging RSocket to simplify the way enterprises build and operate cloud-native applications, dramatically reducing operational overhead and speeding development velocity by allowing developers to focus on their product instead of their network infrastructure.

Ryland Degnan

September 14, 2018
Tweet

More Decks by Ryland Degnan

Other Decks in Programming

Transcript

  1. Communication in the Cloud is a Challenge “A standard approach

    to connecting and communicating with microservices is needed. Standardization and uniformity simplifies management.” -Tony Lock, distinguished analyst at Freeform Dynamics “The network is the unsolved problem of cloud, and open source. We need the network to be a first-class citizen of a cloud system.” -Daniel Berg, distinguished engineer at IBM Cloud
  2. RSocket Was Built to Simplify Communication Built for modern cloud

    applications In addition to flexibility in the underlying transport layer, RSocket provides session resumption, fragmentation and reassembly, application-layer flow control and predictive load balancing to protect both client and server resources from being overwhelmed. Designed to simplify communication between services RSocket operates via async message passing over a single connection. It is transport agnostic, providing a single, unified API for sending and receiving messages across all protocols. Open-source application-layer network protocol Developed by leaders in microservices and cloud computing, contributors include Netflix, Facebook, Pivotal and Netifi.
  3. What is a Modern Cloud application? Distributed, heterogeneous and interactive

    A common mistake is to think of applications just in terms in the backend infrastructure. Today’s applications are distributed both geographically and in terms of where compute is run. The distinction between client and server is increasingly disappearing. Multiple types of clients, platforms, languages Browsers, mobile phones, gaming consoles, set-top boxes, IoT devices, laptops, servers.
  4. Things We Can’t Do Anything About Proliferation of development frameworks

    Frameworks and languages have their place, we want to be open to new technologies and allow developers the freedom to choose the right tools for the job. Deployment topology It’s tempting to address complexity by imposing uniformity of infrastructure. This is costly and constraining, and doesn’t address any of the difficulties in building reliable distributed applications.
  5. Things We Can Do Something About Define a standard protocol

    that enables us to use this small finite set of interactions across any combination of infrastructure, language, framework, so they don’t have to be implemented, reimplemented and implemented again!
  6. RSocket Provides a Unified Messaging API public interface RSocket extends

    Closeable { Mono<Payload> requestResponse(Payload payload); Mono<Void> fireAndForget(Payload payload); Flux<Payload> requestStream(Payload payload); Flux<Payload> requestChannel(Flux<Payload> payloads); double availability(); }
  7. RSocket Simplifies Communication Without making any assumptions about the infrastructure,

    language or framework you are using Standardizing on a common network abstraction means everything is pluggable.
 You can switch cloud providers, orchestration platforms, transports, metrics backends, with no code changes. RSocket gives you the ability to solve problems you care about in a consistent way across your application Every application the same concerns: flow control, session resumption, security, metrics/insights, tracing, service discovery, load balancing, fault injection, etc.
  8. RSocket foo = RSocketFactory.connect() .transport(TcpClientTransport.create("1.2.3.4", 80)) .start() .block(); Proteus proteus

    = Proteus.builder() .host("edge.netifi.io") .group("my group") .build(); RSocket foo = proteus.group("foo"); Netifi Proteus Builds on RSocket
  9. No Agents or Sidecars Extremely low latency Built-in Flow Control

    Built-in Monitoring Predictive Load Balancing Netifi Proteus Simplifies Applications Easy Routing to Services and Devices
  10. Self Managing Proteus Proteus Pluggable Transport Control Center RSocket RSocket

    RSocket RSocket RSocket RSocket Netifi Proteus Simplifies Architecture
  11. Built to make cloud applications simple Works everywhere Proteus leverages

    RSocket to provide a platform for modern cloud applications A New Standard for Cloud-Native Networking Makes no assumptions about the infrastructure, language or frameworks you are using. You can switch cloud providers, orchestration platforms, transports, metrics backends, with no code changes. Solves common problems such as flow control, metrics/insights, tracing, security, session resumption, service discovery, load balancing, fault injection, etc. Dramatically reduces operational overhead and speeds development by allowing developers to focus on their product instead of their network infrastructure.