Ruby At Scale – Developing Ruby Applications In A Fast Growing Environment - Questers
Questers & Funding Circle present
Ruby At Scale – Developing Ruby Applications In A Fast Growing Environment
3 FEBRUARY 2015 (TUESDAY) | 18:30 – 21:00 BG TIME

Ruby on Rails offers the potential of an “open source framework that’s optimised for programmer happiness and sustainable productivity”. However, what happens when your Rails application becomes a monolith and the team working on it grows? Your test suite takes over half an hour to run, you have hundreds of classes and feature development slows to a crawl. Is it possible to maintain rapid development when multiple teams are changing the same application?

In these talks, we’ll explain how we approach large scale development of Ruby web applications at Funding Circle and enabled teams working on separate features to work concurrently on the platform, often deploying code changes multiple times per day.

At Funding Circle, an interesting issue we encountered resulted from divergent conceptual software models and domain models. We solved this through implementing the Repository pattern. This has enabled us to simplify and optimise existing business critical applications in many ways, such as:

  • reducing complexity
  • keeping code ignorant of persistence
  • migrating integration tests masquerading as unit tests to actual unit tests
18:00 - 18:30 REGISTRATION

Supporting growth of tech teams

  • Problems
    • - Why monolithic Rails apps (Monorails) grow out of control
    • - Concurrent development for large teams
    • - Running massive test suites
    • - Testing multiple layers (unit, functional, integration, etc)
    • - Code stagnation
    • - Internationalisation
  • The journey out
    • - Adequate test coverage
    • - Functional separation
    • - Interface contracts
    • - Logging
    • - Commonality where possible
  • Different approaches
    • - JavaScript clients
    • - Mobile clients
    • - Service­to­service clients
    • - Authentication and authorisation
    • - Minimal viable caching

Renewing while evolving

  • Problems
    • - Domain logic and data coupling
    • - Migrating and BAU/New Products
    • - Step­by­step migration
    • - Why not Active Record
  • How to
    • - Moving away from Rails
    • - Abstracting away from data sources
    • - Creating versatility in data sources
    • - AR as pattern and framework
    • - Task driven systems
  • Examples
    • - Practical code examples
20:30 – 21:00 TALKS & DRINKS

Sasha Gerrand is a Development Lead Engineer at Funding Circle. He has worked in technology prior to the internet existing and is still coming back for more. He mainly writes Ruby and JavaScript, but has a fondness for functional languages and highly distributed systems. He claims to understand the Paxos and Raft consensus protocols, but tends to yell a lot after they get brought up.

Github: sgerrand


Arturs Meisters is a Senior Ruby Engineer at Funding Circle. He has 8 years of professional experience of Ruby and Rails. Arturs discovered with evented systems before it was cool and also has also worked extensivley with JavaScript and other web technologies. He has a strong interest in systems design, architecture and refactoring.

Github: kalifs

  • Ruby enthusiasts
  • Everyone that is curious and/or a true geek

Getting Off The Monorail

by Sasha Gerrand, Development Lead Engineer at Funding Circle

Moving to repositiories

by Arturs Meisters, Senior Ruby Engineer at Funding Circle