Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
Modern web applications actively use real-time features. Unfortunately, nowadays Ruby is rarely considered as a technology to implement yet another chat – Ruby performance leaves much to be desired when dealing with concurrency and high-loads. Does this mean that we should betray our favorite language, which brings us happiness, in favor of others? My answer is NO, and I want to show you, how we can combine the elegance of Ruby with the power of other languages to improve the performance of real-time applications. RubyKaigi 2018 https://rubykaigi.org/2018/presentations/palkan_tula
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
Vladimir Dementyev's presentation at RubyKaigi 2018 titled "One Cable to Rule Them All" introduces AnyCable as a solution to address performance issues in real-time web applications developed with Ruby. The talk begins with a discussion about the limitations of Ruby in handling concurrency and high-load situations due to the Global Interpreter Lock (GIL). Key points of the talk include: - **Introduction to Real-Time Applications**: Dmitry explains that real-time applications, like messaging or online games, require efficient synchronous communication between clients and servers, typically facilitated by "cables" (libraries or frameworks). - **Challenges with Action Cable**: Action Cable, while popular due to its integration within Rails, struggles with scalability and performance. Dmitry references benchmarks showing its inadequacies, particularly with high numbers of connections, leading to latency issues and significant resource consumption. - **Specific Performance Issues**: The high memory usage noted during actual production deployments, such as a case study where Action Cable required 20 GB of RAM for 5,000 connections, is detailed. Furthermore, the JSON encoding during broadcasts adds to computational overhead. - **Introduction to AnyCable**: AnyCable is presented as a solution that moves low-level messaging and connection management away from Ruby to a language like Go, while still allowing developers to use Ruby for application logic. This design aims to reduce memory overhead and improve performance. AnyCable operates using gRPC for efficient communication between different programming languages. - **Implementation and Benefits of AnyCable**: Dmitry illustrates how AnyCable can lead to significant cost-saving results for production environments by reducing the number of dynos required. The system retains low-level management and optimizes performance by eliminating unnecessary RPC calls through M Ruby. - **Future Enhancements**: The talk concludes with a discussion on upcoming features in Ruby and improvements to the Rack API, which can further boost WebSocket performance. Overall, the main takeaway is that it is possible to harness the elegance of Ruby while enhancing performance through integration with other languages, demonstrating that Ruby can still be a viable choice for building high-performance real-time applications. Dmitry emphasizes the importance of combining Ruby with more performant technologies to adequately support modern web demands, holding promise for the future of Ruby development while addressing its current shortcomings.
Suggest modifications
Cancel