Ruby Video
Talks
Speakers
Events
Topics
Leaderboard
Sign in
Talks
Speakers
Events
Topics
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
By, Michel Weksler Payments applications typically require a strong audit trail, very predictable failure behavior and strong transactional integrity. In Ruby/Rails, ActiveRecord allows any part of the code to modify anything in the database, failures are often silently ignored, and database transactions are hidden for convenience by default. In this talk I'll explore how to solve those problems and use RoR to build a large scale payments system.
Date
Summary
Markdown supported
In this presentation at RailsConf 2015, Michel Weksler addresses the complexities and considerations of building a large-scale payments system using Ruby on Rails (RoR). He acknowledges that while Rails has some limitations and trade-offs, it is, in fact, a viable tool for developing payment applications, given certain precautions. Key points in his talk emphasize the critical needs for audit trails, error handling, parameter validation, and structured testing within payments systems, which require high levels of reliability and accountability due to their direct impact on customer finances. **Key Points:** - **Audit Trails:** Payments systems must maintain thorough documentation of transactions, detailing changes comprehensively to meet legal and business standards. Weksler discusses the challenges of relying solely on ActiveRecord callbacks for auditing and explains the use of database triggers as part of the solution, albeit acknowledging their complexity. - **Error Prediction and Handling:** He advocates for proactive error management to avoid letting issues escalate in production systems. Implementing clear parameter validations is essential to prevent unexpected situations from affecting operations. - **Code Quality and Maintainability:** The importance of maintainable code is stressed, particularly for payment systems where quality is paramount. Weksler introduces the law of least knowledge to guide developers in structuring their code, reducing dependencies, and preventing unexpected behavior changes from affecting payment functionality. - **Testing Strategies:** He encourages the use of smaller, focused classes and methods to enhance test coverage and clarify functionality. Service objects are highlighted as useful tools for encapsulating functionality and promoting clear input-output interactions. - **Straightforward Design Principles:** Applying principles like DRY (Don't Repeat Yourself) aids in maintaining clarity and flexibility in the codebase. Weksler encourages well-defined methods that centralize access to data, facilitating easier maintenance and scalability. In conclusion, while the challenges posed by developing a large-scale payments system are significant, leveraging structured practices around auditing, error handling, code quality, and testing can greatly enhance the robustness and reliability of such systems. Weksler's insights are drawn from his experience working in the payments sector, emphasizing the vital role of thoughtful software design in these sensitive applications.
Suggest modifications
Cancel