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

Deploying node applications at scale

Deploying node applications at scale

shikharkapoor

December 01, 2016
Tweet

Other Decks in Technology

Transcript

  1. A modern front-end engineers job Webpack React Redux Gulp Node

    Angular Express GraphQL NPM MongoDB Grunt Jest Mocha
  2. • Branching Strategies • Continuous Integration • Accelerating build times

    • Packaging • Deployments • Monitoring • Testing
  3. Branching strategies • Decide upfront and enforce them. • Master

    is sacred! • Feature flags are your friends.
  4. Shorter but fixed release cycles Mainline/Master Release - week 1

    Fix Feature Fix Release - week 2 Feature Feature Fix
  5. Short cycles/ Daily deployments Mainline/Master Fix Feature 1 * Fix

    Feature1 * Feature 2 * Feature 2 * * Features get pushed to master daily, with feature flags
  6. Continuous Integration • Tools • Automate mundane tasks like linting,

    unit test .. • Build on merge • Store artifacts
  7. Accelerate build times • Build once, promote everywhere • BUT

    be careful of the gotchas • Freeze dependencies (Yarn, Shrinkwrap) • Offload mundane tasks to orchestrators
  8. Packaging • How do you package and send your code

    to the server? • Git clone • Archive and copy • Debian (FPM, Post Install, Versioning, easy reverts)
  9. 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!
  10. 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
  11. Testing • What to test? • Functional - Automate critical

    flows. • Unit tests • Non-functional • Capacity testing and API Fanout • Performance • RUM / Synthetic - SpeedCurve, Dareboost