Intellectual Scalability - PowerPoint PPT Presentation

guest193
intellectual scalability solving a large problem with multiple cooperating rails apps l.
Skip this Video
Loading SlideShow in 5 Seconds..
Intellectual Scalability PowerPoint Presentation
Download Presentation
Intellectual Scalability

play fullscreen
1 / 17
Download Presentation
Intellectual Scalability
851 Views
Download Presentation

Intellectual Scalability

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Intellectual ScalabilitySolving a Large Problem with Multiple Cooperating Rails Apps Frederick Cheung, Chief Wizard, Texperts Paul Butcher, CTO, Texperts

  2. What is the least scalable element of your project?

  3. 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

  4. Our Problem

  5. 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?

  6. 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/

  7. 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

  8. UI Framework • Integrated UI • Multiple URLs • Multiple logins • Multiple windows • Appears to be a single app • Problems • Efficient client-side communication • Single Origin Policy

  9. Architecture foo.example.com app.example.com/foo bar.example.com app.example.com/bar app.example.com/baz Load Balancer/ Rewriter baz.example.com

  10. Apache Rewrite Rules <VirtualHost *:80> 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] </VirtualHost>

  11. UI Framework • Single “portal” application • Applications implement “widgets” • Widgets loaded via AJAX Portal App1 App3 App1 App2 App2

  12. Demonstration

  13. 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

  14. Questions

  15. Support Slides

  16. 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