engineering velocity @indeed eng presented on sept 24 2014 at beyond agile
DESCRIPTION
Increasing engineering velocity through architecture. This presentation was given at the Beyond Agile meetup group in Seattle on Sept 24, 2014.TRANSCRIPT
![Page 1: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/1.jpg)
Engineering Velocity
Building Great Software
Through Rapid Iteration
![Page 2: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/2.jpg)
Matt Schemmel
Engineering
Resume Products
![Page 3: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/3.jpg)
I help
people
get jobs.
![Page 4: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/4.jpg)
![Page 5: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/5.jpg)
Indeed
#1 Job Site Worldwide
More people find jobs on Indeed than anywhere
else
Over 140M monthly visitors
Over 3B monthly searches
![Page 6: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/6.jpg)
(other)
![Page 7: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/7.jpg)
Quality ProductsLate '90s
![Page 8: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/8.jpg)
High Performance
Late '90s
Early '00s
Quality Products
![Page 9: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/9.jpg)
High Performance
Late '90s
Early '00s
Quality Products
Late '00s High Scalability
![Page 10: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/10.jpg)
High Performance
Late '90s
Early '00s
Quality Products
Late '00s High Scalability
Early '10s Rapid Iteration
![Page 11: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/11.jpg)
Rapid Iteration:
Better Products
Faster
http://go.indeed.com/tdwi
http://go.indeed.com/ddpd
http://go.indeed.com/tdwi
![Page 12: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/12.jpg)
Indeed Product Development Principles
Measure Everything
Test Everything (A/B Experiments)
Iterate Quickly
![Page 13: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/13.jpg)
Build
MeasureLearn
Lean Startup Cycle
![Page 14: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/14.jpg)
Indeed Product
Development Cycle
Deliver
MeasureLearn
![Page 15: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/15.jpg)
Indeed Product
Development Cycle
Quickly!
Deliver
MeasureLearn
![Page 16: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/16.jpg)
Indeed Product
Development Cycle
MeasureLearn MeasureLearn
Deliver
![Page 17: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/17.jpg)
Engineering Velocity
MeasureLearn MeasureLearn
Deliver
![Page 18: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/18.jpg)
Engineering Velocity (n)[ˌenjəˈni(ə)riNG vəˈläsətē]
Our ability to quickly deliver implementations of
ideas to job seekers and employers
![Page 19: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/19.jpg)
Deliver Developer Productivity
![Page 20: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/20.jpg)
Software Architecture
Processes and Tools
Risk Management
Deliver
![Page 21: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/21.jpg)
Software Architecture
Processes and Tools
Risk Management
Deliver
![Page 22: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/22.jpg)
![Page 23: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/23.jpg)
![Page 24: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/24.jpg)
![Page 25: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/25.jpg)
![Page 26: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/26.jpg)
![Page 27: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/27.jpg)
Job Search
Web App
![Page 28: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/28.jpg)
STOP
EVERY
THING
![Page 29: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/29.jpg)
Job Search
Web App
![Page 30: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/30.jpg)
Job Search
Web App
![Page 31: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/31.jpg)
Service Oriented Architecture:
Technical Challenges
![Page 32: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/32.jpg)
Challenge: High Performance
● Speed is a feature
● 100ms response time
clic
ks
time-to-render
![Page 33: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/33.jpg)
Image used with permission of O Scale Trains Magazine (oscalemag.com), photo credit Don McFall of Old Line Graphics
http://go.indeed.com/boxcar
BoxcarHigh Performance SOA Framework
![Page 36: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/36.jpg)
Challenge: Compatibility over Time
● Any service can be updated at any time
● Any client can be updated at any time
● Any service or client can be rolled back
unexpectedly
Every service conversation must be forward
and backwards compatible
![Page 37: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/37.jpg)
Represent complex data types
Extremely compact and performant
Forwards and backwards compatible
Boxcar: API Compatibility
![Page 38: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/38.jpg)
Challenge: Deploy Independence
Forward/backward-compatible API is great.
But what about implementations?
![Page 39: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/39.jpg)
Hard Scenarios
New API
Old server doesn't understand new client
Same API, Different Behavior
Old client doesn't understand new server
New client doesn't understand old server
![Page 40: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/40.jpg)
ProctorEfficient A/B Experiment Management
http://indeedeng.github.io/proctor/
![Page 41: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/41.jpg)
Proctor
● Visitor segmentation
● Population filters
● Contextual allocation
http://indeedeng.github.io/proctor/
![Page 42: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/42.jpg)
Proctor: Filters
"rule" : "loggedIn"
"rule" : "smartphone &&
'JP' == country"
"rule" : "ua.os == 'ios' &&
ua.version >= '6.0'"
![Page 43: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/43.jpg)
Sign Up Activate
Proctor: Visitor Allocation
10% 10%
Sign Up Activate
25% 25%
US
UK
![Page 44: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/44.jpg)
Proctor
Manage Experiments → Manage Behavior
![Page 45: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/45.jpg)
Job Search
Web App
Boxcar!
![Page 46: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/46.jpg)
![Page 47: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/47.jpg)
Decoupling
Web Front-Ends
![Page 48: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/48.jpg)
![Page 49: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/49.jpg)
![Page 50: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/50.jpg)
![Page 51: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/51.jpg)
![Page 52: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/52.jpg)
![Page 53: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/53.jpg)
![Page 54: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/54.jpg)
![Page 55: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/55.jpg)
Each page has
different features
different data
different operational requirements
different owners
Each page should be its own deliverable
![Page 56: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/56.jpg)
![Page 57: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/57.jpg)
Trends
Company Info
Forums
Salary
Job Search
Indeed
![Page 58: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/58.jpg)
Indeed Web Properties Goals
Provide a consistent user experience
One implementation of shared functionality
Completely decoupled applications
![Page 59: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/59.jpg)
![Page 60: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/60.jpg)
Option: Shared Libraries?
Reduced flexibility of technology decisions
Requires a release of all projects
Occasional inconsistent user experience
![Page 61: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/61.jpg)
Option: Shared Resources?
http://www.indeed.com/global/nav.js
http://www.indeed.com/global/nav.css
http://www.indeed.com/global/nav
On every app, include:
![Page 62: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/62.jpg)
Option: Common Resource
Reduced flexibility of technology decisions
Requires a release of all projects
Occasional inconsistent user experience
No shared services
![Page 63: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/63.jpg)
Solution: Navshell
Application-level Rewriting HTTP Proxy
![Page 64: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/64.jpg)
Navshell
Request
Web App
HTTP
![Page 65: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/65.jpg)
![Page 66: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/66.jpg)
<head>
<title>Johnson & Johnson Careers</title>
<link type="text/css" href="common.css">
<link type="text/css" href="comp.css">
</head>
<body>
<div id="page-header">
......
</div>
<div id="page-body">
<div id="page-frame">
<div id="comp-header">
......
</div>
</div>
</div>
</body>
![Page 67: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/67.jpg)
<head>
<title>Johnson & Johnson Careers</title>
<link type="text/css" href="common.css">
<link type="text/css" href="comp.css">
</head>
<body>
<div id="page-header">
......
</div>
<div id="page-body">
<div id="page-frame">
<div id="comp-header">
......
</div>
</div>
</div>
</body>
![Page 68: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/68.jpg)
<head>
<title>Johnson & Johnson Careers</title>
<link type="text/css" href="common.css">
<link type="text/css" href="comp.css">
</head>
<body>
<div id="page-header">
......
</div>
<div id="page-body">
<div id="page-frame">
<div id="comp-header">
......
</div>
</div>
</div>
</body>
![Page 69: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/69.jpg)
REQUEST HEADERS
Cookie, User-Agent, Referer, etcX-Indeed-Shell: 1X-Indeed-Logged-In: [01]X-Indeed-Email: [email protected]: en_USX-Indeed-Geo: US
Navshell
Web App
![Page 70: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/70.jpg)
RESPONSE HEADERS
Set-CookieX-Indeed-Page-Title: Indeed CareersX-Indeed-Include-Js-Footer: /js/app.jsX-Indeed-Include-Css: /style/main.css
Navshell
Web App
![Page 71: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/71.jpg)
Navshell
No duplicate code
Centralized navigation changes
Plain HTTP with strong contract
Decoupled front-ends
![Page 72: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/72.jpg)
Navshell
Requests
Services Web Apps
![Page 73: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/73.jpg)
Web-Based Delivery of
Mobile App Features
![Page 74: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/74.jpg)
Mobile
Mobile Browser Mobile App
![Page 75: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/75.jpg)
Mobile
Mobile Browser Mobile App
![Page 76: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/76.jpg)
● One code base for mobile web, iOS, Android
● Simultaneous release of features across
platforms
● No waiting for App Store approval
● No waiting for job seekers to upgrade
Shared Code Across Platforms
![Page 77: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/77.jpg)
Easy To Reuse Infrastructure
● A/B testing in native apps challenging
● Activity tracking challenging
● Performance monitoring challenging
We have battle-hardened solutions to all these.
![Page 78: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/78.jpg)
Mobile
Browsers
Mobile
Apps
Desktop
Browsers
Job Search
App
![Page 79: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/79.jpg)
Software Architecture
Processes and Tools
Risk Management
Deliver
![Page 80: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/80.jpg)
Product
Eng QA
Continuous Collaboration
![Page 81: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/81.jpg)
Continuous Deployment Toolchain
Integration git
Verification Jenkins
JUnit, TestNG, Selenium, JaCoCo, …
Deployment Rundeck
![Page 82: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/82.jpg)
● Configuration changes
● Resource re-allocation
● Database schema updates
● Internationalization
But what about the hard stuff?
![Page 83: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/83.jpg)
● Configuration changes
● Resource re-allocation
● Database schema updates
● Internationalization
But what about the hard stuff?
http://go.indeed.com/i18n
![Page 84: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/84.jpg)
<Indeed map of the world>
![Page 85: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/85.jpg)
one search. all jobs.
una búsqueda. todos los empleos.
Jedno vyhledávání. Všechna pracovní místa.
Ein Klick. Alle Jobs.
一站搜尋,工作齊全
tek arama. bütün işler.
uma busca. todos os empregos.
één klik. alle vacatures.
あらゆる仕事まとめて検索
una ricerca. tutti i lavori.
![Page 86: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/86.jpg)
Implement Commit
Deploy to
QA
Deploy to
ProductionVerify
Before Internationalization
![Page 87: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/87.jpg)
Translate
Implement Commit
Deploy to
ProductionVerifyDeploy to
QA
Identify
Internationalization Process Overhead
Commit
![Page 88: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/88.jpg)
+1 day
![Page 89: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/89.jpg)
+1 day (20%)
![Page 90: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/90.jpg)
+1 day (minimum)
![Page 91: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/91.jpg)
<Indeed map of the world>
![Page 92: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/92.jpg)
<Indeed map of the world>
<but with only US in orange>
![Page 93: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/93.jpg)
I help [English-speaking
Americans]
get jobs?
![Page 94: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/94.jpg)
![Page 95: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/95.jpg)
http://www.gnu.org/software/gettext/
gettext utilitiesGNU Translation Project Tool Set
![Page 96: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/96.jpg)
Template
en.po
Extract
![Page 97: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/97.jpg)
✓ Many text sources: jsp, ftl, soy, js, …
✓ Dialects: en_US, en_CA, en_GB, …
✓ Variable substitution
✓ Complex plural forms
gettext utilities (with some help)
![Page 98: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/98.jpg)
Machine Translation
English
Portuguese
![Page 99: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/99.jpg)
Machine Translation
Low quality translations are better than no
translations
But we needed something better
![Page 100: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/100.jpg)
Human Translation Service
![Page 101: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/101.jpg)
Extract Improve Release
Combined Translation Service
![Page 102: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/102.jpg)
Translate
Implement Commit
Deploy to
ProductionVerifyDeploy to
QA
CommitIdentify
Localization before Translation Automation
![Page 103: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/103.jpg)
Implement Commit
Deploy to
ProductionVerifyDeploy to
QA
Extract
Localization with Translation Automation
Improve
![Page 104: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/104.jpg)
And if there just isn't enough time…
"rule" : "language != 'es'"
"rule" : "locale != 'en_GB'"
"rule" : "country != 'IT'"
![Page 105: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/105.jpg)
I help
everyone
get jobs!
![Page 106: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/106.jpg)
Software Architecture
Processes and Tools
Risk Management
Deliver
![Page 107: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/107.jpg)
Severity of issue
Probability of issue
Number of users affected
Risk
![Page 108: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/108.jpg)
![Page 109: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/109.jpg)
Smaller Releases
More releases → less functionality per release
Probability of issue
![Page 110: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/110.jpg)
Proctor Feature Toggles
Probability of issue
"rule" :
"endsWith(email,'@indeed.com')"
![Page 111: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/111.jpg)
Manage Cross-Product Releases
Deploy products then activate features
Probability of ISsue
![Page 112: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/112.jpg)
Decouple Features from Releases
Rollback features and releases independently
# of users affected
![Page 113: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/113.jpg)
Number of users affected
Incremental allocation changes
1% → 5% → 25% → 50% → 100%
![Page 114: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/114.jpg)
Embedded QA
Probability of issue
Severity of issue
![Page 115: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/115.jpg)
Monitoring
# of users affected
![Page 116: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/116.jpg)
Monitoring and Alerting
● Identify runtime issues
● Alert Ops when an issue arises
![Page 117: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/117.jpg)
Healthcheck Framework
● Applications and services self-report
internal state & health
● Divert traffic away from unhealthy instances
● Disable features for failing dependencies
![Page 118: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/118.jpg)
![Page 119: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/119.jpg)
Measure Everything
![Page 120: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/120.jpg)
Software Architecture
Processes and Tools
Risk Management
Deliver
![Page 121: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/121.jpg)
Better Product
● Emphasize goals over features
● Fail faster, cheaper
● Incremental progress live in production
![Page 122: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/122.jpg)
Better Life
● No deadline crunches
● There's always another release coming
● More transparent schedules = less stress
![Page 123: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/123.jpg)
We built all of this
incrementally, to meet
our own challenges
![Page 124: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/124.jpg)
Yours are different
![Page 125: Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile](https://reader033.vdocuments.mx/reader033/viewer/2022060121/559454921a28ab92118b4599/html5/thumbnails/125.jpg)
Q&A
Visit
http://engineering.indeed.com/
and
http://go.indeed.com/jobs