Building large-scale applications is a demanding process -- no matter which framework you use. The true challenge, however, lies in maintaining these applications. To guarantee maintainability, we need to focus on the following three aspects: comprehensibility, modularity, and robustness. The importance of comprehensibility, both in overall design and structure of an application, as well as, in terms of readability of individual code fragments may not be underestimated. Producing code that is easily understandable by others and your future self certainly improves the maintainability of a system. Modularity in turn is key in order to maximize reusability of individual software components. And lastly, a robust system helps us to avoid regression and further implies good test coverage and well-defined interfaces. Adhering to these principals will reduce development cost in the long run, which makes your boss happy, and more importantly improves software quality, which hopefully makes you and your teammates happy.
This talk is about building large scale applications on top of Ruby on Rails. The framework is known for getting you started quickly, but is it still a good choice when your application grows past 100,000 lines of code? I think it is because Ruby's remarkable flexibility and conciseness allows us to employ enterprise level software design strategies without leading to overly complex and bulky code. During this talk, we will mainly focus on how to model complex business processes efficiently, that is, how to extend Ruby on Rails with a modular service-layer that plays nice with ActiveRecord. You will see how to take advantage of some of Ruby's unique and more advanced language capabilities. But most importantly, you will learn how to use all these techniques to improve the design of any existing Rails application.