Download presentation
Presentation is loading. Please wait.
Published byRobyn Smith Modified over 9 years ago
1
www.texperts.com Intellectual Scalability Solving a Large Problem with Multiple Cooperating Rails Apps Frederick Cheung, Chief Wizard, Texperts Paul Butcher, CTO, Texperts
2
www.texperts.com What is the least scalable element of your project?
3
www.texperts.com
4
Our Problem +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 7435 | 6169 | 116 | 687 | 5 | 6 | | Helpers | 1726 | 1504 | 0 | 167 | 0 | 7 | | Models | 18030 | 14598 | 359 | 1428 | 3 | 8 | | Libraries | 4357 | 2934 | 38 | 227 | 5 | 10 | | APIs | 91 | 74 | 11 | 0 | 0 | 0 | | Components | 0 | 0 | 0 | 0 | 0 | 0 | | Functional tests | 12808 | 10286 | 178 | 1177 | 6 | 6 | | Unit tests | 24099 | 18762 | 237 | 1514 | 6 | 10 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 68546 | 54327 | 939 | 5200 | 5 | 8 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 25279 Test LOC: 29048 Code to Test Ratio: 1:1.1
5
www.texperts.com Our Problem
6
www.texperts.com The Solution Multiple Apps! … but … How do they talk to each other? How do they share code? How do we roll them out? How do we test them? … and most importantly … How do we make it all appear seamless?
7
www.texperts.com Headlines Apps developed and rolled out in “lock-step” Simple directory structure All apps under a single root directory Code sharing through shared plugins* Hacked version of Capistrano All applications rolled out simultaneously Cross-application testing with Selenium * http://www.texperts.com/2007/06/21/on-sharing-code-between-rails-apps/http://www.texperts.com/2007/06/21/on-sharing-code-between-rails-apps/
8
www.texperts.com Inter-App Communication Each app has its own database No communication via the database Apps could run on separate machines Hybrid server- and client-side communication Server-side communication via RESTful APIs Client-side communication via UI framework
9
www.texperts.com UI Framework Integrated UI ✘ Multiple URLs ✘ Multiple logins ✘ Multiple windows ✔ Appears to be a single app Problems Efficient client-side communication Single Origin Policy
10
www.texperts.com Architecture foo.example.com bar.example.com baz.example.com app.example.com/foo app.example.com/bar app.example.com/baz Load Balancer/ Rewriter
11
www.texperts.com Apache Rewrite Rules ServerName app.example.com... RewriteEngine On RewriteRule ^/foo/(.*)$ http://foo.example.com/$1 [P,QSA,L] RewriteRule ^/bar/(.*)$ http://bar.example.com/$1 [P,QSA,L] RewriteRule ^/baz/(.*)$ http://baz.example.com/$1 [P,QSA,L]
12
www.texperts.com UI Framework Single “portal” application Applications implement “widgets” Widgets loaded via AJAX Portal App1 App2 App3 App2
13
www.texperts.com Demonstration
14
www.texperts.com Status In production since June 2008 5 applications integrated (and counting) Texperts report: ✔ Better UI responsiveness ✔ Higher productivity ✘ Doesn’t work well on high-latency connections
15
www.texperts.com Questions
16
www.texperts.com Support Slides
17
www.texperts.com Why IFRAMEs Don’t Work Each IFRAME is its own independent HTML document Difficult to resize Difficult to communicate between Difficult to style consistently Makes Darren (our web-standards guy) cry
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.