Building Scalable Systems Safely in Ruby with Samuel Williams

Release Date:

Samuel is a member of the Ruby core team. He's working on making it safer and easier to write scalable applications in Ruby.Conference Talks:Fibers are the Right SolutionThe Journey to One MillionPosts:Asynchronous RubyFibers Are the Right SolutionEarly Hints and HTTP/2 Push with Falcon2019 Ruby Association GrantSource with comments on why the Global VM Lock existsRuby gems:AsyncFalconContact:@ioquatixSamuel's websiteTimestamps:0:51 - What's concurrency? What's parallelism?5:49 - Piping commands between Unix processes provides easy parallelism6:58 - Some types of applications abstract out threads/processes,9:27 - Many Ruby gems have thread safety issues10:44 - The CRuby Global VM Lock hides thread safety issues11:24 - The problems with threads and shared mutable state13:58 - Examples of mutexes causing problems in Ruby gems.19:09 - What a deadlock is and how it causes problems19:51 - Running separate processes to get parallelism and using an external database to communicate21:01 - Lightweight process model used by Go and Erlang vs threads in Ruby23:50 - Why async was created24:38 - What is Celluloid? (Actor based concurrency for Ruby)26:29 - Problems with shared global state in Celluloid27:12 - Lifecycle management problems (getting and cleaning up objects)28:19 - Maintaining Celluloid IO, issues with the library29:43 - What's async?32:00 - What's an event loop?35:20 - How tasks execute in an event loop37:29 - How IO tasks are scheduled with IO.select39:41 - The importance of predictable and sequential code41:48 - Comparing async library to async/await45:23 - What node got right with its worker model47:10 - How async/await works48:35 - Fibers as an alternative to callbacks51:10 - How async uses fibers, minimizes need to change code56:19 - Libraries don't have to know they're using async1:04:55 - Reasons for the CRuby Global VM Lock1:07:13 - Guilds as a solution1:09:14 - Sharing state across threads1:11:33 - Limitations of Ruby GC at 10-20K connections1:12:00 - Sharing state across processes1:13:12 - Handling CPU bound tasks with threads and processes1:17:42 - Which dependencies are messing with state? (Check memory allocations, sockets closed)1:25:00 - Async in production1:27:17 - Wrap up

Building Scalable Systems Safely in Ruby with Samuel Williams

Title
Building Scalable Systems Safely in Ruby with Samuel Williams
Copyright
Release Date

flashback