devcon-shikhar slides

Download DevCon-Shikhar Slides

Post on 25-Jan-2017

27 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

  • Deploying Node applications at scale

    Shikhar Kapoor (@kapoorshikhar)

    UI Engineer @ Flipkart

  • A modern front-end engineers job

    Webpack

    React

    Redux

    GulpNodeAngular

    Express

    GraphQL

    NPMMongoDB

    Grunt

    Jest

    Mocha

  • Branching Strategies

    Continuous Integration

    Accelerating build times

    Packaging

    Deployments

    Monitoring

    Testing

  • Branching strategies

    Decide upfront and enforce them.

    Master is sacred!

    Feature flags are your friends.

  • Mainline/Master

    Future

    Feature1

    Feature2

    Feature3

    Long release cycles

  • Shorter but fixed release cyclesMainline/Master

    Release - week 1

    Fix

    Feature

    Fix

    Release - week 2

    Feature

    Feature

    Fix

  • Short cycles/ Daily deploymentsMainline/Master

    Fix

    Feature 1 *

    Fix

    Feature1 *

    Feature 2 *

    Feature 2 *

    * Features get pushed to master daily, with feature flags

  • Continuous Integration

    Tools

    Automate mundane tasks like linting, unit test ..

    Build on merge

    Store artifacts

  • Pull request

    Run tests

    Tests passing?

    Merge/Rebase

    Build

    FixNo

    Yes

  • Accelerate build times

    Build once, promote everywhere

    BUT be careful of the gotchas

    Freeze dependencies (Yarn, Shrinkwrap)

    Offload mundane tasks to orchestrators

  • Get playbook Get hosts

    Start

    Run tasks

    EndA typical orchestration workflow

  • Packaging

    How do you package and send your code to the server?

    Git clone

    Archive and copy

    Debian (FPM, Post Install, Versioning, easy reverts)

  • Deployment

    Manage your environments, keep them as similar to production as possible.

    Blue-Green? Rolling?

    Keep your deployment scripts close and your rollback scripts closer!

  • Production Cluster

    Blue green deployment strategy

    Stage Cluster

    Load Balancer

    Production Cluster

    Load Balancer

  • Rolling deployment strategy

    Load balancer

  • Monitoring What should you monitor?

    Trends

    Stack traces/ deep dives

    How do you monitor?

    OpenTSDB based tools like Grafana for trends

    Sentry/ NewRelic for deep dives and stack traces

  • Image: http://grafana.org

    http://grafana.org

  • Testing What to test?

    Functional - Automate critical flows.

    Unit tests

    Non-functional

    Capacity testing and API Fanout

    Performance

    RUM / Synthetic - SpeedCurve, Dareboost

  • Key takeaways

  • Thank you!@kapoorshikhar