Slide 1

Slide 1 text

Reactive Cloud-Native Networking Ryland Degnan CTO, Netifi Inc.

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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.

Slide 4

Slide 4 text

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.

Slide 5

Slide 5 text

Explosion of Complexity Along Multiple Axes Deployment topologies Platforms/frameworks Protocols/interaction models

Slide 6

Slide 6 text

Axis 1: Deployment Topologies Multiple public cloud providers Datacenter/private cloud

Slide 7

Slide 7 text

Axis 2: Platforms/Frameworks Multiple orchestration platforms Multiple frameworks

Slide 8

Slide 8 text

Axis 3: Protocols/Interaction Models Request-reply Streaming RPC Peer-to-peer Real-time

Slide 9

Slide 9 text

Can We Do Something About This Mess? Request-reply Streaming Peer-to-peer Real-time RPC

Slide 10

Slide 10 text

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.

Slide 11

Slide 11 text

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!

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

RSocket Provides a Unified Messaging API public interface RSocket extends Closeable { Mono requestResponse(Payload payload); Mono fireAndForget(Payload payload); Flux requestStream(Payload payload); Flux requestChannel(Flux payloads); double availability(); }

Slide 14

Slide 14 text

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.

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Self Managing Proteus Proteus Pluggable Transport Control Center RSocket RSocket RSocket RSocket RSocket RSocket Netifi Proteus Simplifies Architecture

Slide 18

Slide 18 text

Simple setup Self-tuning No configuration files Works everywhere Netifi Proteus Simplifies Configuration

Slide 19

Slide 19 text

Identical Examples Easier Error Handling No Callback Hell Easy Fanout/Composition Netifi Proteus Simplifies Code

Slide 20

Slide 20 text

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.

Slide 21

Slide 21 text

Reactive Platform for Modern Applications info@netifi.com www.netifi.com