Andrew Atkinson took a Rails web application that was struggling with load, and optimized it to handle over 9000 HTTP requests per second with an average latency of 35ms end to end. Handling a much higher load, on a smaller RDS instance, with lower latencies. He then shared his expertise by writing a book: "High-Performance Postgres with Rails."
Andrew and I discussed Postgres performance, scalability, design patterns, valuable tools, his career, and some Rails. I tackled Andrew with many of the biggest challenges SaaS developers encounter with Postgres, and Andrew had an answer to everything.
For me, the highlights were his explanation of the N+1 problem, sharding patterns, the use of pgcopydb project to move a noisy neighbor to another DB, and the secret for scaling on a single instance.
Useful links:
- The book: https://pgrailsbook.com
- SaaS Developer Slack - where Andrew answers Postgres questions and will share a discount for his book: http://launchpass.com/all-about-saas
Tools we mentioned:
- Easier multi-tenancy for Rails: https://github.com/ErwinM/acts_as_tenant
- For read replicas prior to Rails 6.0: https://github.com/OutOfOrder/multidb
- The fastest way to copy a DB or part of: https://github.com/dimitri/pgcopydb