Presentation is loading. Please wait.

Presentation is loading. Please wait.

Www.texperts.com Intellectual Scalability Solving a Large Problem with Multiple Cooperating Rails Apps Frederick Cheung, Chief Wizard, Texperts Paul Butcher,

Similar presentations


Presentation on theme: "Www.texperts.com Intellectual Scalability Solving a Large Problem with Multiple Cooperating Rails Apps Frederick Cheung, Chief Wizard, Texperts Paul Butcher,"— Presentation transcript:

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


Download ppt "Www.texperts.com Intellectual Scalability Solving a Large Problem with Multiple Cooperating Rails Apps Frederick Cheung, Chief Wizard, Texperts Paul Butcher,"

Similar presentations


Ads by Google