Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
A talk from RubyConfTH 2023, held in Bangkok, Thailand on October 6-7, 2023. Find out more and register for updates for our next conference at https://rubyconfth.com/
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
In his talk at RubyConfTH 2023, Brad Urani discusses the role of event streaming patterns in Ruby services, particularly within Procore's architecture for streamlining communication between multiple services and applications. He emphasizes Procore's legacy with Ruby on Rails and the need to evolve towards a service-oriented architecture as they scale. The talk highlights several key aspects of implementing streaming technologies in a distributed system: - **Scaling and Communication**: Brad explains how Procore operates across multiple regions like Europe and North America, necessitating a robust global type system for data sharing. - **Technical Challenges**: The transition from monolithic Rails apps to microservices introduces the complexity of ensuring data consistency across different services and databases. - **Consistency**: He defines consistency in terms of data integrity, stressing that data must remain identical across services to avoid issues. Any new user record must appear in all relevant databases, exemplifying the dual-write problem where actions must succeed or fail together to maintain consistency. - **Event Bus Mechanism**: Brad advocates for using an event bus, specifically Apache Kafka, to facilitate reliable communication between services. He contrasts Kafka with other technologies like AWS Kinesis and RabbitMQ, highlighting Kafka's advantages in message durability, order, and replayability. - **Implementation Details**: The implementation of Kafka involves producers and consumers. Messages are published to topics, which supports scalable, buffered communication. By ensuring messages are processed at individual service pace, Kafka mitigates message loss despite downstream lag. - **Transactional Patterns**: To solve the dual-write problem, he introduces the transactional outbox pattern, allowing message storage before Kafka delivery to ensure synchronization. - **Future Developments**: Brad concludes with the outlook on log-driven development, suggesting a shift from direct database writes to sending messages to Kafka, thus possibly enhancing scalability for future architectures. Overall, the talk provides valuable insights into building robust, event-driven systems and emphasizes the importance of consistency, reliability, and effective communication as organizations grow their software architecture.
Suggest modifications
Cancel