Successfully reported this slideshow.

A Ct Os Story


Published on

Robert Bor's slide's of his presentation at the RubyenRails 2007 conf in Amsterdam

Published in: Business, Technology
  • Be the first to comment

A Ct Os Story

  1. 1. a CTO’s Story why and how Ruby was introduced and what it meant for IndependentIP Robert Bor – IndependentIP
  2. 2. <ul><li>“ It’s going to change </li></ul><ul><li>the music business </li></ul><ul><li>as we know it.” </li></ul><ul><li>Morten Lund, LundKenner </li></ul>About us – IndependentIP
  3. 3. Fuga architecture Channels Labels Webclient Core Vault Delivery Reporting Content Ingestion
  4. 4. <ul><li>Why did it disintegrate? </li></ul><ul><li>Ajax enabled website with Java technology – not tested anywhere! </li></ul><ul><li>Build by just one man – did not scale for team development </li></ul><ul><li>Started as short-lived mock and lived up to its promise of short-lived ness </li></ul>The Problem... ... disintegration of webclient! young as it was – implementing new functionality was a fraught process Webclient
  5. 5. <ul><li>Why Ruby? </li></ul><ul><ul><li>Ruby potential in-house </li></ul></ul><ul><ul><li>testability of the source code </li></ul></ul><ul><ul><li>efficiency of the language </li></ul></ul><ul><ul><li>power of Rails </li></ul></ul><ul><ul><li>promise of productivity </li></ul></ul>Enter Ruby
  6. 6. How Ruby was introduced Webclient Ruby Java Java Java Webclient Webclient Ruby Ruby gradually... February 2007 - March 2007 - April 2007 - May 2007 - Webclient
  7. 7. <ul><li>Would I do a gradual introduction again? </li></ul><ul><li>No. </li></ul><ul><li>Reasons </li></ul><ul><li>we had problems with keeping two sessions in sync </li></ul><ul><li>resources were lost on building struts to support two simultaneous apps </li></ul><ul><li>introduction takes longer than it otherwise would have </li></ul><ul><li>Advantage </li></ul><ul><li>you can introduce new functionality while migrating </li></ul><ul><li>Advice </li></ul><ul><li>reserve a time window and migrate within that window. Freeze introduction of functionality. </li></ul>Introduction of Ruby
  8. 8. Another problem... ... import and export in many different formats Many custom processes had to be built with a focus on data manipulation <ul><li>Why Ruby here? </li></ul><ul><li>If there is one thing Ruby is good at, it is data manipulation </li></ul><ul><li>Extremely cheap to build custom tooling to do the job </li></ul><ul><li>There was immediate payoff for using Ruby here. </li></ul>Delivery Content Ingestion
  9. 9. How about... <ul><li>the Database? </li></ul><ul><li>runs now on trusted and well-tested Spring-Hibernate stack </li></ul><ul><li>there is no intention to migrate to Ruby here </li></ul><ul><li>however, ActiveRecord and Migrations made the Ruby proposition very tempting </li></ul><ul><li>the Vault? </li></ul><ul><li>the specialization in storing and fetching binary files stresses the need for performance – this effectively eliminates Ruby as a choice </li></ul>
  10. 10. Fuga architecture – Ruby impact Delivery Reporting Content Ingestion Channels Labels Ruby Ruby Ruby Webclient Core Vault
  11. 11. <ul><li>Did Ruby live up to the promise? </li></ul><ul><li>Productivity is indeed significantly higher </li></ul><ul><li>Quality of website has much improved </li></ul><ul><li>New functionality can be introduced with less risks </li></ul><ul><li>Unforeseen benefits </li></ul><ul><li>developers truly enjoy working with Ruby </li></ul><ul><li>there are many excellent Ruby developers looking for a job – you can cherry pick the best </li></ul><ul><li>But not all is roses... </li></ul><ul><li>Performance of the application has fallen after the migration </li></ul><ul><li>Ruby is a dangerously powerful language – total power corrupts totally! </li></ul>Evaluating the choice
  12. 12. Questions