SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Don’t Refactor.
Rebuild.
Kinda.
Wouter Lagerweij
@wouterla
16.5M Bikes
~1 Bike/person
● Slow, unreliable unit tests
● Slower Selenium tests
● Messy, duplicated code
● Manual deployments
● Production issues
● TDD
● BDD
● coding katas
● pairing
● training w/ Chet
● Improve test run time
● 100% coverage of new code
● refactor in the small (boy scout rule)
● refactor in the large (planned improvements)
25%1.7% -
2.1% -
Feb
May
unit-test
coverage
Rebuild?
So...
● Deliver value from day one
● Don’t rebuild the same mess
● Don’t rebuild using the same process
● Don’t rebuild the same functionality
In Practice
● Architecture: Strangler Pattern
● Process: Continuous Delivery
● The First Sprints
Architecture: before
DB
request for
website A
request for
website B
request for
website C
request for
website D
request for
website E
Legacy system
DB
request for
website A
request for
website B
request for
website C
request for
website D
request for
website E
Legacy system
DB
website A
Legacy system
Incoming request
New Page
Service
Incoming request
for new page
● 100% unit-test coverage
● TDD all the way
● All functionality defined by BDD scenarios
● Fully automated deployment
● Every push goes to production
Process
DB
website A
Legacy
system
Incoming request
for job detail page
Job Detail Page
Job Service
Incoming request
for other pages
Sprint 1
Sprint 1: Proxy
Goal:
Get a new front-end component up that proxies
all traffic to the old system but serves ‘hello
world’ if we ask nicely.
Sprint 1: Proxy
● Create a new environment, in this case on amazon’s AWS
● Create Ansible scripts to provision a basic infrastructure:
○ jenkins
○ sonar
○ docker nodes for test, acceptance and production
● Set up a VPN to the existing (hosted somewhere else) environment
● Create a new codebase for a (php, symfony) component
● Create build scripts for the new component
● Create a hello world page for the url that pointed to the job detail page
● Create a proxy so that all calls would be delegated to the old system (apache vhost.conf)
● Create a feature toggle so we could override the proxy based on a cookie (apache vhost.conf)
● Package our new component as a Docker image, and figure out how to deploy it
● Use a docker registry to store and version out deployment packages
● Create Jenkins Job Builder configuration to set-up a delivery pipeline for our new web front end
● Create a basic smoke test for the component to check successful deployment in the pipeline
● Set-up the AWS loadbalancers for all the environments
● Make sure newrelic could be configured on all our nice new Docker containers
● Route all traffic for our first website through our new infrastructure
Sprint 1: Proxy
● Create a new environment, in this case on amazon’s AWS
● Create Ansible scripts to provision a basic infrastructure:
○ jenkins
○ sonar
○ docker nodes for test, acceptance and production
● Set up a VPN to the existing (hosted somewhere else) environment
● Create a new codebase for a (php, symfony) component
● Create build scripts for the new component
● Create a hello world page for the url that pointed to the job detail page
● Create a proxy so that all calls would be delegated to the old system (apache vhost.conf)
● Create a feature toggle so we could override the proxy based on a cookie (apache vhost.conf)
● Package our new component as a Docker image, and figure out how to deploy it
● Use a docker registry to store and version out deployment packages
● Create Jenkins Job Builder configuration to set-up a delivery pipeline for our new web front end
component
● Set-up the AWS loadbalancers for all the environments
● Make sure newrelic could be configured on all our nice new Docker containers
● Route all traffic for our first website through our new infrastructure
Sprint 2: Detail Page
Goal:
Get a fully functional Job Detail Page
replacement working behind the feature toggle
Sprint 2: Detail Page
● Create Job Service component, including full pipeline
DB
website A
Legacy
system
Incoming request
for job detail page
Job Detail Page
Job Service
Incoming request
for other pages
Sprint 2: Detail Page
● Create Job Service component, including full pipeline
● Database access to old system’s DB
● Unit testing build steps for php
● Sonar (static analysis) deployment and build steps
● Contract test for Job Service
● Client library for Job Service
● Acceptance scenarios for job detail functionality
● Unit testing build steps for javascript
● Sonar setup for javascript
● Implement Just Enough to Read a Job
● Create a nice looking front-end...
Done?
In one month
● legacy system
● few tests
● manual deploys
● 1 release per week
● timid team
● decoupled services
● 100% coverage
● full automation
● 30 releases per day
● courage
Problems
@wouterla
Wouter Lagerweij
Thank You!

Más contenido relacionado

Destacado

Testing in a continuous delivery world - Lean Agile Scotland
Testing in a continuous delivery world - Lean Agile ScotlandTesting in a continuous delivery world - Lean Agile Scotland
Testing in a continuous delivery world - Lean Agile ScotlandWouter Lagerweij
 
Testing in a continuous delivery world - XP Days Ukraine
Testing in a continuous delivery world  - XP Days UkraineTesting in a continuous delivery world  - XP Days Ukraine
Testing in a continuous delivery world - XP Days UkraineWouter Lagerweij
 
Docker dev, test & production (afas)
Docker  dev, test & production (afas)Docker  dev, test & production (afas)
Docker dev, test & production (afas)Wouter Lagerweij
 
Testing in a continuous delivery world - continuous delivery Amsterdam meetup
Testing in a continuous delivery world - continuous delivery Amsterdam meetupTesting in a continuous delivery world - continuous delivery Amsterdam meetup
Testing in a continuous delivery world - continuous delivery Amsterdam meetupWouter Lagerweij
 
The sprint goal as a business test
The sprint goal as a business testThe sprint goal as a business test
The sprint goal as a business testWouter Lagerweij
 
Testing in a continuous delivery world
Testing in a continuous delivery worldTesting in a continuous delivery world
Testing in a continuous delivery worldWouter Lagerweij
 
Metrics to guide: agile fluency, continuous delivery and product teams
Metrics to guide: agile fluency, continuous delivery and product teamsMetrics to guide: agile fluency, continuous delivery and product teams
Metrics to guide: agile fluency, continuous delivery and product teamsWouter Lagerweij
 
Simple Steps to Great Web Design
Simple Steps to Great Web DesignSimple Steps to Great Web Design
Simple Steps to Great Web DesignMatthew Smith
 
Website 101: Build and Rebuild
Website 101: Build and RebuildWebsite 101: Build and Rebuild
Website 101: Build and RebuildSteve Matthews
 
TDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereTDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereDaniel Davis
 

Destacado (13)

INVEST
INVESTINVEST
INVEST
 
Why user stories
Why user storiesWhy user stories
Why user stories
 
Kanban
KanbanKanban
Kanban
 
Testing in a continuous delivery world - Lean Agile Scotland
Testing in a continuous delivery world - Lean Agile ScotlandTesting in a continuous delivery world - Lean Agile Scotland
Testing in a continuous delivery world - Lean Agile Scotland
 
Testing in a continuous delivery world - XP Days Ukraine
Testing in a continuous delivery world  - XP Days UkraineTesting in a continuous delivery world  - XP Days Ukraine
Testing in a continuous delivery world - XP Days Ukraine
 
Docker dev, test & production (afas)
Docker  dev, test & production (afas)Docker  dev, test & production (afas)
Docker dev, test & production (afas)
 
Testing in a continuous delivery world - continuous delivery Amsterdam meetup
Testing in a continuous delivery world - continuous delivery Amsterdam meetupTesting in a continuous delivery world - continuous delivery Amsterdam meetup
Testing in a continuous delivery world - continuous delivery Amsterdam meetup
 
The sprint goal as a business test
The sprint goal as a business testThe sprint goal as a business test
The sprint goal as a business test
 
Testing in a continuous delivery world
Testing in a continuous delivery worldTesting in a continuous delivery world
Testing in a continuous delivery world
 
Metrics to guide: agile fluency, continuous delivery and product teams
Metrics to guide: agile fluency, continuous delivery and product teamsMetrics to guide: agile fluency, continuous delivery and product teams
Metrics to guide: agile fluency, continuous delivery and product teams
 
Simple Steps to Great Web Design
Simple Steps to Great Web DesignSimple Steps to Great Web Design
Simple Steps to Great Web Design
 
Website 101: Build and Rebuild
Website 101: Build and RebuildWebsite 101: Build and Rebuild
Website 101: Build and Rebuild
 
TDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereTDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & Where
 

Más de Wouter Lagerweij

Transparency is a slippery slope
Transparency is a slippery slopeTransparency is a slippery slope
Transparency is a slippery slopeWouter Lagerweij
 
Cash to concept - Bringing a legacy system under test
Cash to concept - Bringing a legacy system under testCash to concept - Bringing a legacy system under test
Cash to concept - Bringing a legacy system under testWouter Lagerweij
 
Measuring continuous delivery
Measuring continuous deliveryMeasuring continuous delivery
Measuring continuous deliveryWouter Lagerweij
 
XP2017: Metrics to guide agile fluency, continuous delivery and product teams
XP2017: Metrics to guide  agile fluency, continuous delivery and product teamsXP2017: Metrics to guide  agile fluency, continuous delivery and product teams
XP2017: Metrics to guide agile fluency, continuous delivery and product teamsWouter Lagerweij
 
Xp2017 agile fluency choose your own adventure
Xp2017 agile fluency   choose your own adventureXp2017 agile fluency   choose your own adventure
Xp2017 agile fluency choose your own adventureWouter Lagerweij
 
Technical excellence 20120119
Technical excellence 20120119Technical excellence 20120119
Technical excellence 20120119Wouter Lagerweij
 

Más de Wouter Lagerweij (8)

Transparency is a slippery slope
Transparency is a slippery slopeTransparency is a slippery slope
Transparency is a slippery slope
 
Testing 1, 2, 3, ...
Testing 1, 2, 3, ... Testing 1, 2, 3, ...
Testing 1, 2, 3, ...
 
Cash to concept - Bringing a legacy system under test
Cash to concept - Bringing a legacy system under testCash to concept - Bringing a legacy system under test
Cash to concept - Bringing a legacy system under test
 
Measuring continuous delivery
Measuring continuous deliveryMeasuring continuous delivery
Measuring continuous delivery
 
XP2017: Metrics to guide agile fluency, continuous delivery and product teams
XP2017: Metrics to guide  agile fluency, continuous delivery and product teamsXP2017: Metrics to guide  agile fluency, continuous delivery and product teams
XP2017: Metrics to guide agile fluency, continuous delivery and product teams
 
Xp2017 agile fluency choose your own adventure
Xp2017 agile fluency   choose your own adventureXp2017 agile fluency   choose your own adventure
Xp2017 agile fluency choose your own adventure
 
Technical excellence 20120119
Technical excellence 20120119Technical excellence 20120119
Technical excellence 20120119
 
Coding Dojo In 5 minutes
Coding Dojo In 5 minutesCoding Dojo In 5 minutes
Coding Dojo In 5 minutes
 

Último

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...Nitya salvi
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyAnusha Are
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456KiaraTiradoMicha
 

Último (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 

Don't refactor. rebuild. kinda. (Agile 2015, Washington DC)

  • 2.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. ● Slow, unreliable unit tests ● Slower Selenium tests ● Messy, duplicated code ● Manual deployments ● Production issues
  • 12.
  • 13. ● TDD ● BDD ● coding katas ● pairing ● training w/ Chet ● Improve test run time ● 100% coverage of new code ● refactor in the small (boy scout rule) ● refactor in the large (planned improvements)
  • 15.
  • 16.
  • 18. So... ● Deliver value from day one ● Don’t rebuild the same mess ● Don’t rebuild using the same process ● Don’t rebuild the same functionality
  • 19. In Practice ● Architecture: Strangler Pattern ● Process: Continuous Delivery ● The First Sprints
  • 20. Architecture: before DB request for website A request for website B request for website C request for website D request for website E Legacy system
  • 21. DB request for website A request for website B request for website C request for website D request for website E Legacy system
  • 22. DB website A Legacy system Incoming request New Page Service Incoming request for new page
  • 23. ● 100% unit-test coverage ● TDD all the way ● All functionality defined by BDD scenarios ● Fully automated deployment ● Every push goes to production Process
  • 24.
  • 25.
  • 26. DB website A Legacy system Incoming request for job detail page Job Detail Page Job Service Incoming request for other pages
  • 28. Sprint 1: Proxy Goal: Get a new front-end component up that proxies all traffic to the old system but serves ‘hello world’ if we ask nicely.
  • 29. Sprint 1: Proxy ● Create a new environment, in this case on amazon’s AWS ● Create Ansible scripts to provision a basic infrastructure: ○ jenkins ○ sonar ○ docker nodes for test, acceptance and production ● Set up a VPN to the existing (hosted somewhere else) environment ● Create a new codebase for a (php, symfony) component ● Create build scripts for the new component ● Create a hello world page for the url that pointed to the job detail page ● Create a proxy so that all calls would be delegated to the old system (apache vhost.conf) ● Create a feature toggle so we could override the proxy based on a cookie (apache vhost.conf) ● Package our new component as a Docker image, and figure out how to deploy it ● Use a docker registry to store and version out deployment packages ● Create Jenkins Job Builder configuration to set-up a delivery pipeline for our new web front end ● Create a basic smoke test for the component to check successful deployment in the pipeline ● Set-up the AWS loadbalancers for all the environments ● Make sure newrelic could be configured on all our nice new Docker containers ● Route all traffic for our first website through our new infrastructure
  • 30. Sprint 1: Proxy ● Create a new environment, in this case on amazon’s AWS ● Create Ansible scripts to provision a basic infrastructure: ○ jenkins ○ sonar ○ docker nodes for test, acceptance and production ● Set up a VPN to the existing (hosted somewhere else) environment ● Create a new codebase for a (php, symfony) component ● Create build scripts for the new component ● Create a hello world page for the url that pointed to the job detail page ● Create a proxy so that all calls would be delegated to the old system (apache vhost.conf) ● Create a feature toggle so we could override the proxy based on a cookie (apache vhost.conf) ● Package our new component as a Docker image, and figure out how to deploy it ● Use a docker registry to store and version out deployment packages ● Create Jenkins Job Builder configuration to set-up a delivery pipeline for our new web front end component ● Set-up the AWS loadbalancers for all the environments ● Make sure newrelic could be configured on all our nice new Docker containers ● Route all traffic for our first website through our new infrastructure
  • 31.
  • 32. Sprint 2: Detail Page Goal: Get a fully functional Job Detail Page replacement working behind the feature toggle
  • 33. Sprint 2: Detail Page ● Create Job Service component, including full pipeline
  • 34. DB website A Legacy system Incoming request for job detail page Job Detail Page Job Service Incoming request for other pages
  • 35. Sprint 2: Detail Page ● Create Job Service component, including full pipeline ● Database access to old system’s DB ● Unit testing build steps for php ● Sonar (static analysis) deployment and build steps ● Contract test for Job Service ● Client library for Job Service ● Acceptance scenarios for job detail functionality ● Unit testing build steps for javascript ● Sonar setup for javascript ● Implement Just Enough to Read a Job ● Create a nice looking front-end...
  • 36. Done?
  • 37. In one month ● legacy system ● few tests ● manual deploys ● 1 release per week ● timid team ● decoupled services ● 100% coverage ● full automation ● 30 releases per day ● courage
  • 38.