Intellectual scalability solving a large problem with multiple cooperating rails apps l.jpg
Advertisement
This presentation is the property of its rightful owner.
1 / 17

Intellectual Scalability PowerPoint PPT Presentation

Intellectual Scalability - Solving a Large Problem With Multiple Cooperating Rails Apps

Download Presentation

Intellectual Scalability

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Intellectual scalability solving a large problem with multiple cooperating rails apps l.jpg

Intellectual ScalabilitySolving a Large Problem with Multiple Cooperating Rails Apps

Frederick Cheung, Chief Wizard, Texperts

Paul Butcher, CTO, Texperts


Slide2 l.jpg

What is the least scalable element of your project?


Our problem l.jpg

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


Our problem5 l.jpg

Our Problem


The solution l.jpg

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?


Headlines l.jpg

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/


Inter app communication l.jpg

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


Ui framework l.jpg

UI Framework

  • Integrated UI

    • Multiple URLs

    • Multiple logins

    • Multiple windows

    • Appears to be a single app

  • Problems

    • Efficient client-side communication

    • Single Origin Policy


Architecture l.jpg

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


Apache rewrite rules l.jpg

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>


Ui framework12 l.jpg

UI Framework

  • Single “portal” application

  • Applications implement “widgets”

  • Widgets loaded via AJAX

Portal

App1

App3

App1

App2

App2


Slide13 l.jpg

Demonstration


Status l.jpg

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


Slide15 l.jpg

Questions


Slide16 l.jpg

Support Slides


Why iframes don t work l.jpg

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


  • Login