$30 off During Our Annual Pro Sale. View Details »

Crónica de una escala anunciada

Crónica de una escala anunciada

Damian Schenkelman

June 23, 2016
Tweet

More Decks by Damian Schenkelman

Other Decks in Programming

Transcript

  1. Crónica de una escala
    anunciada
    npm i dschenkelman

    View Slide

  2. Building a product

    View Slide

  3. Demand

    View Slide

  4. Stabilize

    View Slide

  5. Auth API Identity provider
    DB
    Scenario
    Client

    View Slide

  6. Expected response times

    View Slide

  7. Actual response times

    View Slide

  8. Admit the problem

    View Slide

  9. The problem

    View Slide

  10. Flame graphs

    View Slide

  11. T-shirt time

    View Slide

  12. Password Hashing
    app.post('/authenticate', (req, res) => {
    // fetch the user by req.username from db
    db.users.findOne({ email: req.body.email }, (err, user) =>
    {
    ...
    // compare bcrypt for req.password to db hash
    const success = bcrypt.compare(req.body.password,
    user.passwordHash);
    res.send(success ? 200 : 401);
    });
    });

    View Slide

  13. Scale

    View Slide

  14. Faster Hash

    View Slide

  15. Caching

    View Slide

  16. Scale up

    View Slide

  17. Multiple IdP instances
    ELB
    IdP
    IdP
    IdP
    IdP

    View Slide

  18. BaaS
    app.use('/login', (req, res) => {
    // fetch the user by req.username from db
    db.users.findOne({ email: req.body.email }, (err, user) =>
    {
    ...
    // compare bcrypt for req.password to db hash
    baas.compare(req.body.password, user.passwordHash).then((e
    success) => {
    res.send(err || !success ? 401 : 200);
    });
    });
    });

    View Slide

  19. Auto Scaling
    Identity
    provider
    ELB
    BaaS
    BaaS
    BaaS
    BaaS

    View Slide

  20. Cost comparison
    Price / (1M req)
    #req per sec /
    vCPU
    t2-micro $0.36 10.00
    t2-medium $0.76 9.50
    c4-large $1.53 10.00
    c3-8xlarge $1.64 8.88

    View Slide

  21. Fail gracefully

    View Slide

  22. Bye

    View Slide

  23. Links
    • http://security.stackexchange.com/a/83382
    • http://www.brendangregg.com/FlameGraphs/
    cpuflamegraphs.html
    • https://github.com/thlorenz/v8-perf/issues/4
    • https://github.com/auth0/node-baas
    • http://docs.aws.amazon.com/AutoScaling/latest/
    DeveloperGuide/US_SetUpASLBApp.html
    • https://gist.github.com/trevnorris/9616784

    View Slide

  24. Thanks
    https://github.com/dschenkelman/bcrypt-sample
    @dschenkelman
    npm i dschenkelman

    View Slide