Modularization of large web applications - João de Castro Gonçalves da Silva Figueiredo (2013)
A global, fast paced modern world has led to the rising of large scale web appli- cations. These applications face particular challenges from smaller, less complex systems, namely: scalability, concurrency, complexity, and distribution. They usually evolved during the years, passed by several programmers, architects and managers, and, as every software architecture, tend to become a "Big Ball of Mud".Modularizing such systems - i. e. dividing them into smaller parts that are, indi- vidually, easier to manage, design, develop, test, maintain and extend - is key to avoid a technical debt scenario. This dissertation studies modularization of large scale distributed systems in a extensive manner, and tries to answer questions such as: which programming paradigms and models are better suited for modularization, while still addressing large web applications challenges; which technologies are currently avail- able for us to make use of those paradigms and models; which software design patterns formalize good practices for concurrency, distribution and service-orientation.This dissertation we'll use the Betfair system to empirically analyse the validity of the referred modularization concepts. Betfair is the world's largest online betting exchange and processes more transations than all european stock market combined. It constitutes a challenging, massive and mature code base with some modularity limitation. As such, we will specify a modular architecture that addresses those limitations while still handling its scaling and concurrency challenges.Finally, this dissertation analyses how we can refactor the Betfair' existing archi- tecture to the specified architecture, comparing the cost of a refactoring with the cost of a total rewrite.