73
Continuous Delivery Practices for Front-End Engineers by Sergey N. Bolshchikov

Continuous Delivery for Front-End Engineers

Embed Size (px)

DESCRIPTION

How front-end engineers uses continuous delivery practices to deploy 50 times a day

Citation preview

Page 1: Continuous Delivery for Front-End Engineers

Continuous Delivery Practices for Front-End Engineers by Sergey N. Bolshchikov

Page 2: Continuous Delivery for Front-End Engineers

Continuous Delivery Practices for Front-End Engineers by Sergey N. Bolshchikov

Page 3: Continuous Delivery for Front-End Engineers

Front-End Engineering Before and After joining Wixby Sergey N. Bolshchikov

Page 4: Continuous Delivery for Front-End Engineers

Sergey N.BolshchikovDeveloper Advocate @ Wix

Page 5: Continuous Delivery for Front-End Engineers

7 years agoI wrote code inWaterfall

Page 6: Continuous Delivery for Front-End Engineers

Development Integration Testing Deployment Release

Page 7: Continuous Delivery for Front-End Engineers

3 years agoI wrote code inScrum

Page 8: Continuous Delivery for Front-End Engineers

Sprint 1 Sprint N Testing Deployment Release

Page 9: Continuous Delivery for Front-End Engineers

Long ReleaseCycle

Page 10: Continuous Delivery for Front-End Engineers

Inability ToChange

Page 11: Continuous Delivery for Front-End Engineers

Lost Time toMarket

Page 12: Continuous Delivery for Front-End Engineers

Now I write code inContinuous Delivery

Page 13: Continuous Delivery for Front-End Engineers

DevelopmentTesting

IntegrationDeployment

ReleaseDevelopmentTesting

IntegrationDeployment

DevelopmentTesting

IntegrationDeployment

DevelopmentTesting

IntegrationDeployment

Page 14: Continuous Delivery for Front-End Engineers

We deployEvery day!

50-100 deploys/day

Page 15: Continuous Delivery for Front-End Engineers

In our DevelopersWe trust

Page 16: Continuous Delivery for Front-End Engineers

Continuous Delivery isA mindset

Page 17: Continuous Delivery for Front-End Engineers

A journeyFrom developmentTo production

Page 18: Continuous Delivery for Front-End Engineers

The journey Is betterWith automation

Page 19: Continuous Delivery for Front-End Engineers

Stage 1Reuse efficiently & Bootstrap fast

Page 20: Continuous Delivery for Front-End Engineers

Stage 1Reuse efficiently & Bootstrap fast

NPM & Bower

● Node dependencies

● Browser dependencies

● Private registries

Page 21: Continuous Delivery for Front-End Engineers

Stage 1Reuse efficiently & Bootstrap fast

Yeoman

● Project skeleton generator

● Project entities generator

● wix-angular-generator

Page 22: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

We can’t check everything manually.It is expensive.

Page 23: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

Better quality code.

Page 24: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

Develop faster.

Page 25: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

Run tests first, see them fail.Write code.Run tests, see them passed.And again.

Page 26: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

All production code is covered with tests.

Page 27: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

No QA person for the server side.

Page 28: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

Tests give you confidence.

Page 29: Continuous Delivery for Front-End Engineers

Karma

● Automatic Test Runner

● Unit tests with Jasmine/Mocha

● Browser integration

Stage 2Test Driven Development

Page 30: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

Angular

● Build with tests in mind

● Dependency Injection

● Great ecosystem

Page 31: Continuous Delivery for Front-End Engineers

Stage 2Test Driven Development

Protractor

● Integration and e2e tests

● Wrapper over selenium & webdriver

● Angular-friendly

Page 32: Continuous Delivery for Front-End Engineers

Stage 3Integrate Continuously

Page 33: Continuous Delivery for Front-End Engineers

Stage 3Integrate Continuously

Page 34: Continuous Delivery for Front-End Engineers

Stage 3Integrate Continuously

Page 35: Continuous Delivery for Front-End Engineers

Stage 3Integrate Continuously

Page 36: Continuous Delivery for Front-End Engineers

Stage 3Integrate Continuously

Page 37: Continuous Delivery for Front-End Engineers

Stage 4Deploy

Deploy often.

Page 38: Continuous Delivery for Front-End Engineers

Risk = # of deployments × Pgoes wrong × $$wrong

Stage 4Risk management

Page 39: Continuous Delivery for Front-End Engineers

Risk = × ×

Deploys % $

Stage 4Waterfall Risk

Page 40: Continuous Delivery for Front-End Engineers

Risk = × ×

Deploys % $

Stage 4Waterfall Risk

1280 = 20 × 0.8 × 80

Page 41: Continuous Delivery for Front-End Engineers

Risk = × ×

Deploys % $

Stage 4Continuous Delivery Risk

Page 42: Continuous Delivery for Front-End Engineers

Risk = × ×

Deploys % $

Stage 4Continuous Delivery Risk

320 = 80 × 0.2 × 20

Page 43: Continuous Delivery for Front-End Engineers

Risk = × ×

Deploys % $

Stage 4Continuous Delivery Risk

320 = 80 × 0.2 × 20

4 timesless risk

Page 44: Continuous Delivery for Front-End Engineers

Stage 4Deploy

Conscious decision to click a button to deploy.

Page 45: Continuous Delivery for Front-End Engineers
Page 46: Continuous Delivery for Front-End Engineers

Projects Versions

Page 47: Continuous Delivery for Front-End Engineers
Page 48: Continuous Delivery for Front-End Engineers
Page 49: Continuous Delivery for Front-End Engineers
Page 50: Continuous Delivery for Front-End Engineers

Monitoring

Page 51: Continuous Delivery for Front-End Engineers

Stage 5Monitor Everything

Page 52: Continuous Delivery for Front-End Engineers

Stage 5Monitor Everything

Business Intelligence

● Analytics tools (user)

● Report every action

● Alerts

Page 53: Continuous Delivery for Front-End Engineers

Stage 5Monitor Everything

New Relic

● Analytics tools (server & browser)

● Tracing errors

● Alerts

Page 54: Continuous Delivery for Front-End Engineers

Browser loading performance

Page 55: Continuous Delivery for Front-End Engineers

Pages view per minute

Page 56: Continuous Delivery for Front-End Engineers

JavaScript Errors

Page 57: Continuous Delivery for Front-End Engineers
Page 58: Continuous Delivery for Front-End Engineers

Stage 6Feature Toggles

Developing feature might take time.

Page 59: Continuous Delivery for Front-End Engineers

Stage 6Feature Toggles

If else statement in your code.

Page 60: Continuous Delivery for Front-End Engineers

Stage 6Feature Toggles

Commit unfinished code into production.

Page 61: Continuous Delivery for Front-End Engineers

Stage 6Feature Toggles

Allows code rewrites and refactoring.

Page 62: Continuous Delivery for Front-End Engineers

Stage 6Feature Toggles

Feature Toggle override.

Page 63: Continuous Delivery for Front-End Engineers

Stage 6Feature Toggles

Test features internally.

Page 64: Continuous Delivery for Front-End Engineers

Stage 7A/B Tests

Test features internally.

Page 65: Continuous Delivery for Front-End Engineers

Stage 7A/B Tests

A/B tests are almost like Feature Toggles.

Page 66: Continuous Delivery for Front-End Engineers

Stage 7A/B Tests

Divide and conquer measure

Page 67: Continuous Delivery for Front-End Engineers

Stage 7A/B Tests

Gradual release

Language

Internally → Country → 50/50 → All

New users

Page 68: Continuous Delivery for Front-End Engineers

Stage 7A/B Tests

Must provide consistent user behavior

Page 69: Continuous Delivery for Front-End Engineers

Stage 7A/B Tests

http://github.com/wix/petri

Page 70: Continuous Delivery for Front-End Engineers

1. Scaffolding2. TDD3. Deploy4. Monitor5. Experiment

Page 71: Continuous Delivery for Front-End Engineers

Deploy From 4 times/yearTo 50 times/day

Page 72: Continuous Delivery for Front-End Engineers

Culture ofContinuous Delivery