Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Extreme Makeover: Rubygems Edition

André Arko
November 07, 2013

Extreme Makeover: Rubygems Edition

Rubygems.org provides every Rubyist with an amazing service: all the libraries in the Ruby world. As amazing as that is, installing gems can be a time-consuming and even error-prone process. (Just ask the Travis guys.) In this talk, you'll learn about the recent dramatic changes in Rubygems and Bundler to improve speed and reliability by rewriting the Rubygems client/server architecture. I'll show how the new system caches more information, makes fewer requests, and takes less time to install gems. Finally, I'll cover how the changes allow worldwide mirrors of rubygems.org, improving things for Rubyists around the globe.

André Arko

November 07, 2013
Tweet

More Decks by André Arko

Other Decks in Technology

Transcript

  1. Extreme Makeover:
    Rubygems Edition

    View full-size slide

  2. André Arko
    @indirect

    View full-size slide

  3. State of the Rubygems
    Year in Review

    View full-size slide

  4. Bundler DDoS
    !
    !
    !
    ! !

    View full-size slide

  5. Bundler DDoS

    View full-size slide

  6. Security breach

    View full-size slide

  7. Rebuilt rubygems.org

    View full-size slide

  8. Travis network issues
    ☁️

    View full-size slide

  9. Travis DNS issues
    ☁️

    View full-size slide

  10. SSL failures
    ⚠️

    View full-size slide

  11. How it works today

    View full-size slide

  12. How it works today
    with a fast connection, at least

    View full-size slide

  13. How it works today
    could be better

    View full-size slide

  14. We Have A Plan

    View full-size slide

  15. We Have A Plan
    cache the metadata

    View full-size slide

  16. We Have A Plan
    put a CDN on it

    View full-size slide

  17. We Have A Plan
    allow local mirrors

    View full-size slide

  18. What we’ve done
    designed the new index
    new index from bundler-api
    new index in bundler

    View full-size slide

  19. What’s left to do
    new index from rubygems.org
    new index in rubygems
    fastly-hosted index files

    View full-size slide

  20. gem install bundler --pre
    bundle install -j8

    View full-size slide