Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
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
This presentation by Kerstin Puschke at Ruby Unconf 2018 focuses on leveraging background jobs to scale applications and maintain a clean codebase. The speaker emphasizes the importance of offloading slow tasks, such as sending welcome emails upon user registration, to improve user experience while remaining responsive. The presentation outlines the key aspects of using background jobs effectively, including: - **Introduction to Background Jobs**: Background jobs help decouple user requests from time-consuming processes, improving overall response times. - **Asynchronous Communication**: Utilizing a message queue for asynchronous communication between application servers and worker processes enhances responsiveness. - **Scaling with Background Jobs**: The speaker details how background jobs act as buffers during spikes in load, allowing additional workers to be added as needed, enhancing throughput for tasks like image uploads or processing. - **Retry and Prioritization**: Some job backends include retry functionality and support for prioritizing jobs, enabling more urgent tasks to be executed first. - **Challenges**: Consistency and data integrity issues arise due to the asynchronous nature of background jobs, necessitating data reconciliation strategies to handle any discrepancies. - **Job Ordering and Dependencies**: The speaker explains that the order in which jobs are processed cannot be guaranteed, suggesting that developers use timestamps or other methods to manage dependencies between jobs. - **Best Practices for Error Handling**: Strategies for handling job failures include using idempotency to allow for safe retries of jobs. - **Tool Recommendations**: Kerstin discusses various background job frameworks, from Delayed Job for smaller applications to Rescue and Sidekiq for larger scale needs, emphasizing that Sidekiq is efficient due to threading rather than forking processes. - **Managing Deployments and Long-running Jobs**: Techniques such as breaking jobs into smaller tasks, checkpointing, and using special abstractions for worker management facilitate frequent deployments and ensure system integrity during critical operations. In conclusion, background jobs are a powerful tool for managing application performance and scalability. They help keep codebases organized at large scales, though they require due diligence regarding data consistency and error handling. Kerstin encourages developers to explore opportunities at Shopify, where they can work on high-volume job processing systems.
Suggest modifications
Cancel