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 Slide

  2. André Arko
    @indirect

    View Slide

  3. View Slide

  4. State of the Rubygems
    Year in Review

    View Slide

  5. Bundler DDoS
    !
    !
    !
    ! !

    View Slide

  6. Bundler DDoS

    View Slide

  7. Security breach

    View Slide

  8. Rebuilt rubygems.org

    View Slide

  9. Travis network issues
    ☁️

    View Slide

  10. Travis DNS issues
    ☁️

    View Slide

  11. SSL failures
    ⚠️

    View Slide

  12. SSL fixes

    View Slide

  13. How it works today

    View Slide

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

    View Slide

  15. How it works today
    could be better

    View Slide

  16. We Have A Plan

    View Slide

  17. We Have A Plan
    cache the metadata

    View Slide

  18. We Have A Plan
    put a CDN on it

    View Slide

  19. We Have A Plan
    allow local mirrors

    View Slide

  20. !
    +

    View Slide

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

    View Slide

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

    View Slide

  23. The Future

    View Slide

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

    View Slide

  25. you can help!
    [email protected]
    @indirect

    View Slide