Continuous Delivery 
Practices for 
Front-End Engineers 
by Sergey N. Bolshchikov
Continuous Delivery 
Practices for 
Front-End Engineers 
by Sergey N. Bolshchikov
Front-End Engineering 
Before and 
After joining Wix 
by Sergey N. Bolshchikov
Sergey N. 
Bolshchikov 
Developer Advocate @ Wix
7 years ago 
I wrote code in 
Waterfall
Development Integration Testing Deployment Release
3 years ago 
I wrote code in 
Scrum
Sprint 1 Sprint N Testing Deployment Release
Long 
Release 
Cycle
Inability 
To 
Change
Lost 
Time to 
Market
Now 
I write code in 
Continuous 
Delivery
Development 
Testing 
Integration 
Deployment 
Release Development 
Testing 
Integration 
Deployment 
Development 
Testing 
Integration 
Deployment 
Development 
Testing 
Integration 
Deployment
We deploy 
Every day! 
50-100 deploys/day
In our 
Developers 
We trust
Continuous 
Delivery is 
A mindset
A journey 
From development 
To production
The journey 
Is better 
With automation
Stage 1 
Reuse efficiently & Bootstrap fast
Stage 1 
Reuse efficiently & Bootstrap fast 
NPM & Bower 
● Node dependencies 
● Browser dependencies 
● Private registries
Stage 1 
Reuse efficiently & Bootstrap fast 
Yeoman 
● Project skeleton generator 
● Project entities generator 
● wix-angular-generator
Stage 2 
Test Driven Development 
We can’t check everything manually. 
It is expensive.
Stage 2 
Test Driven Development 
Better quality code.
Stage 2 
Test Driven Development 
Develop faster.
Stage 2 
Test Driven Development 
Run tests first, see them fail. 
Write code. 
Run tests, see them passed. 
And again.
Stage 2 
Test Driven Development 
All production code is covered with tests.
Stage 2 
Test Driven Development 
No QA person for the server side.
Stage 2 
Test Driven Development 
Tests give you confidence.
Stage 2 
Test Driven Development 
Karma 
● Automatic Test Runner 
● Unit tests with Jasmine/Mocha 
● Browser integration
Stage 2 
Test Driven Development 
Angular 
● Build with tests in mind 
● Dependency Injection 
● Great ecosystem
Stage 2 
Test Driven Development 
Protractor 
● Integration and e2e tests 
● Wrapper over selenium & webdriver 
● Angular-friendly
Stage 3 
Integrate Continuously
Stage 3 
Integrate Continuously
Stage 3 
Integrate Continuously
Stage 3 
Integrate Continuously
Stage 3 
Integrate Continuously
Stage 4 
Deploy 
Deploy often.
Stage 4 
Risk management 
Risk = # of deployments × Pgoes wrong × $$wrong
Stage 4 
Waterfall Risk 
Risk = × × 
Deploys % $
Stage 4 
Waterfall Risk 
Risk = × × 
Deploys % $ 
1280 = 20 × 0.8 × 80
Stage 4 
Continuous Delivery Risk 
Risk = × × 
Deploys % $
Stage 4 
Continuous Delivery Risk 
Risk = × × 
Deploys % $ 
320 = 80 × 0.2 × 20
Stage 4 
Continuous Delivery Risk 
Risk = × × 
Deploys % $ 
320 = 80 × 0.2 × 20 
4 times 
less risk
Stage 4 
Deploy 
Conscious decision 
to click a button to deploy.
Projects Versions
Monitoring
Stage 5 
Monitor Everything
Stage 5 
Monitor Everything 
Business Intelligence 
● Analytics tools (user) 
● Report every action 
● Alerts
Stage 5 
Monitor Everything 
New Relic 
● Analytics tools (server & browser) 
● Tracing errors 
● Alerts
Browser loading performance
Pages view per minute
JavaScript Errors
Stage 6 
Feature Toggles 
Developing feature might take time.
Stage 6 
Feature Toggles 
If else statement in your code.
Stage 6 
Feature Toggles 
Commit unfinished code into production.
Stage 6 
Feature Toggles 
Allows code rewrites and refactoring.
Stage 6 
Feature Toggles 
Feature Toggle override.
Stage 6 
Feature Toggles 
Test features internally.
Stage 7 
A/B Tests 
Test features internally.
Stage 7 
A/B Tests 
A/B tests are almost like Feature Toggles.
Stage 7 
A/B Tests 
Divide and conquer measure
Stage 7 
A/B Tests 
Gradual release 
Language 
Internally → Country → 50/50 → All 
New users
Stage 7 
A/B Tests 
Must provide consistent user behavior
Stage 7 
A/B Tests 
http://github.com/wix/petri
1. Scaffolding 
2. TDD 
3. Deploy 
4. Monitor 
5. Experiment
Deploy 
From 4 times/year 
To 50 times/day
Culture of 
Continuous 
Delivery
Thanks! 
http://bolshchikov.net 
http://blog.bolshchikov.net 
http://il.linkedin.com/in/bolshchikov 
http://github.com/bolshchikov

Continuous Delivery for Front-End Engineers