Transcript
Page 1: DevCon-Shikhar Slides

Deploying Node applications at scale

Shikhar Kapoor (@kapoorshikhar)

UI Engineer @ Flipkart

Page 2: DevCon-Shikhar Slides

A modern front-end engineers job

Webpack

React

Redux

GulpNodeAngular

Express

GraphQL

NPMMongoDB

Grunt

Jest

Mocha

Page 3: DevCon-Shikhar Slides

• Branching Strategies

• Continuous Integration

• Accelerating build times

• Packaging

• Deployments

• Monitoring

• Testing

Page 4: DevCon-Shikhar Slides

Branching strategies

• Decide upfront and enforce them.

• Master is sacred!

• Feature flags are your friends.

Page 5: DevCon-Shikhar Slides

Mainline/Master

Future

Feature1

Feature2

Feature3

Long release cycles

Page 6: DevCon-Shikhar Slides

Shorter but fixed release cyclesMainline/Master

Release - week 1

Fix

Feature

Fix

Release - week 2

Feature

Feature

Fix

Page 7: DevCon-Shikhar Slides

Short cycles/ Daily deploymentsMainline/Master

Fix

Feature 1 *

Fix

Feature1 *

Feature 2 *

Feature 2 *

* Features get pushed to master daily, with feature flags

Page 8: DevCon-Shikhar Slides

Continuous Integration

• Tools

• Automate mundane tasks like linting, unit test ..

• Build on merge

• Store artifacts

Page 9: DevCon-Shikhar Slides

Pull request

Run tests

Tests passing?

Merge/Rebase

Build

FixNo

Yes

Page 10: DevCon-Shikhar Slides

Accelerate build times

• Build once, promote everywhere

• BUT be careful of the gotchas

• Freeze dependencies (Yarn, Shrinkwrap)

• Offload mundane tasks to orchestrators

Page 11: DevCon-Shikhar Slides

Get playbook Get hosts

Start

Run tasks

EndA typical orchestration workflow

Page 12: DevCon-Shikhar Slides

Packaging

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

• Git clone

• Archive and copy

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

Page 13: DevCon-Shikhar Slides

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!

Page 14: DevCon-Shikhar Slides

Production Cluster

Blue green deployment strategy

Stage Cluster

Load Balancer

Production Cluster

Load Balancer

Page 15: DevCon-Shikhar Slides

Rolling deployment strategy

Load balancer

Page 16: DevCon-Shikhar Slides

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

Page 17: DevCon-Shikhar Slides

Image: http://grafana.org

Page 18: DevCon-Shikhar Slides

Testing• What to test?

• Functional - Automate critical flows.

• Unit tests

• Non-functional

• Capacity testing and API Fanout

• Performance

• RUM / Synthetic - SpeedCurve, Dareboost

Page 19: DevCon-Shikhar Slides

Key takeaways

Page 20: DevCon-Shikhar Slides

Thank you!@kapoorshikhar


Top Related