An Incremental Migration from "Monolithic" to SOA on Heroku w/Barrister RPC

An intermediate talk proposed by Erin Swenson-Healey

As our Rails applications grow in size, developers struggle to maintain the velocity experienced in the early stages of a project. As increases in build time, test time, and the mental demands of understanding a large codebase all conspire to grind feature development to a standstill - good developers start looking for a way out. By cleaving functional portions of your application into standalone services, test times decrease, developer specialization is enabled, and performance can be controlled with a high degree of granularity not easily achieved in the traditional "monolithic" Rails application. In this presentation, I'll demonstrate how to build a simple, multi-service architecture using Rails, Barrister RPC and a single Heroku dyno. I'll explain the role of Barrister RPC in enforcing client / service contracts, and demonstrate how it reduces boilerplate client creation-code, avoids transport lock-in and increases API legibility and portability. Finally, I'll show how this architecture scales across multiple dynos or Heroku applications with minimal code changes - so you can grow up fast if you need to, or keep it trimmed-down if you don't.

Back to talks