Enabling real time collaboration with RSocket

In many web applications, the majority of client-server interactions can be expressed with the request-response paradigm, which maps pretty well to HTTP. However, in an application that is highly collaborative, where users can interact with each other, the request-response paradigm hits its limits. Users expect to see each other’s actions reflected as soon as possible and have become accustomed to real time collaborative experiences.

In the request-response world, requests for data will typically be initiated from the client, however, in the real time world, it is useful to facilitate the ability for backends to push data to the clients before it’s requested. Building such a system is difficult when the number of clients is large, because every client must maintain a connection to the backend service. The scaling and reliability considerations are significantly more complex than a request-response based system. At Canva, we enabled our users to collaborate with each other by introducing services that support bidirectional streaming with RSocket. This talk discusses the challenges that we faced building these services, and the solutions we used to ensure our reliability requirements were met.


Sergey Tselovalnikov,

Canva

@SerCeMan
Enabling real time collaboration with RSocket
Sergey Tselovalnikov,
Canva
@SerCeMan
In many web applications, the majority of client-server interactions can be expressed with the request-response paradigm, which maps pretty well to HTTP. However, in an application that is highly collaborative, where users can interact with each other, the request-response paradigm hits its limits. Users expect to see each other’s actions reflected as soon as possible and have become accustomed to real time collaborative experiences.

In the request-response world, requests for data will typically be initiated from the client, however, in the real time world, it is useful to facilitate the ability for backends to push data to the clients before it’s requested. Building such a system is difficult when the number of clients is large, because every client must maintain a connection to the backend service. The scaling and reliability considerations are significantly more complex than a request-response based system. At Canva, we enabled our users to collaborate with each other by introducing services that support bidirectional streaming with RSocket. This talk discusses the challenges that we faced building these services, and the solutions we used to ensure our reliability requirements were met.
About speaker
About speaker
Software engineer. A big fan of the JVM platform, distributed systems, and functional programming. Previously worked at Naumen, JetBrains. Sergey joined the infrastructure team at Canva in 2016 and helped Canva services scale to the state where they can reliably serve tens of millions of users.
Other speakers
Other speakers
Show more
Our partners
Drop us a line to figure out about format, platform, tickets, [anything]
Looking forward to your talk submissions. Choose any submission template you like – it's the topic and story logic that matters most
Will be happy to meet new partner companies who can help with making the conference more useful and interesting
Drop us a line to figure out about format, platform, tickets, [anything]
Looking forward to your talk submissions. Choose any submission template you like – it's the topic and story logic that matters most
Will be happy to meet new partner companies who can help with making the conference more useful and interesting