SlideShare a Scribd company logo
1 of 25
Download to read offline
T14	
  
Test	
  Techniques	
  
5/5/16	
  13:30	
  
Continuous	
  Integration:	
  A	
  New	
  Way	
  of	
  
Life	
  
Presented	
  by:	
  
Melissa	
  Benua	
  
PlayFab,	
  Inc.	
  	
  
Brought	
  to	
  you	
  by:	
  	
  
350	
  Corporate	
  Way,	
  Suite	
  400,	
  Orange	
  Park,	
  FL	
  32073	
  	
  
888-­‐-­‐-­‐268-­‐-­‐-­‐8770	
  ·∙·∙	
  904-­‐-­‐-­‐278-­‐-­‐-­‐0524	
  -­‐	
  info@techwell.com	
  -­‐	
  http://www.stareast.techwell.com/	
  
Melissa	
  Benua	
  
PlayFab,	
  Inc.	
  
Senior	
  backend	
  engineer	
  for	
  PlayFab	
  Melissa	
  Benua	
  has	
  worked	
  in	
  nearly	
  every	
  
software	
  development	
  role: engineer,	
  test,	
  DevOps,	
  and	
  program	
  management
in	
  her	
  career.	
  Melissa	
  has	
  created	
  and	
  run	
  high-availability,	
  high-quality	
  services	
  
at	
  Boeing	
  and	
  Microsoft	
  on	
  Bing,	
  Cortana,	
  and	
  Xbox	
  One.	
  She	
  discovered	
  her	
  
love	
  of	
  massively-scaled	
  systems	
  while	
  working	
  on	
  the	
  Bing	
  backend,	
  honing	
  the	
  
art	
  of	
  keeping	
  highly-available	
  complex	
  systems	
  up	
  while	
  undergoing	
  massive	
  
code	
  churn.	
  Whether	
  working	
  with	
  classic	
  or	
  cutting-edge	
  testing	
  models,	
  
Melissa	
  isn't	
  afraid	
  to	
  mix	
  traditional	
  approaches	
  with	
  bold	
  new	
  ideas	
  to	
  make	
  
her	
  products	
  better,	
  faster,	
  and	
  more	
  reliable.	
  She	
  is	
  passionate	
  about	
  about	
  
sharing	
  best	
  practices	
  with	
  colleagues	
  and	
  the	
  tech-world.	
  
CONTINUOUS INTEGRATION AS A
DEVELOPER'S WAY OF LIFE
Melissa Benua
Senior Software Engineer
PlayFab, Inc
STAREAST 2016
Continuous Integration + Continuous Delivery
Continuous Integration (1999):
“The practice of merging all
developer working copies to a
shared mainline several times a
day.”
Continuous Delivery (2010):
“Every code change can be
deployed to production.”
Develop
BuildTest
Deploy
Principles of Go-Fast
Many small changes are better
than fewer big changes
Every single change gets the full
set of tests
Automate everything
Code in the master branch can
go live at any point in time
Code reviews are necessary, but
also automated
Why Go Fast?
Test automation leads to faster
development speed
Faster development speed leads
to faster turnaround times
Faster turnaround times lead to
more features
More features lead to $$$
CI + CD Strategy
Branch Strategy Deployment Strategy
Dev Build
• Build Against Staging
• Deploy to Staging
• Run Integration Tests
Live Build
• Build Against Production
• Deploy to Production Staging
• Run Integration Tests
Deploy
• Swap Production Staging into Production
• Monitor
Pipeline Overview
Self-hosting parts of the integration pipeline can be
cheap and easy!
Git
• Source
control
Phabricator
• Track
• Peer Review
Jenkins
• Build
• Test
Cloud
Compute
• Release
• Monitor
SOURCE CONTROL
Don’t lose your work!
Git!
Why git?
• Simple to start with
• Plugins for every need
• Forking allows great freedom
• Choice of hosted or self
hosted
• Distributed reliability and
safety
• Easy partial roll backs
• Ubiquitous
MASTER
The ‘GitHub’ Flow
C2
C10
C1 C3 C4
C11
Create branch
‘myfeature’
Merge ‘myfeature’
into master
CODE REVIEW + TRACKING
Do good work!
Phabricator!
• http://phabricator.org/
Runs on Linux
Written in PHP
Spun out of Facebook
Moderate plugin system
Can handle most languages
Use as many or as few Phabricator
services as you like
Supports: issue tracking, scrum
boards, source auditing, code
review, more!
Code Reviews with Phabricator
Differential: code review tool
Harbormaster: build management
tool
Manifest: issue tracking tool
Setup Process:
• https://github.com/uber/
phabricator-jenkins-plugin
• Harbormaster posts to Jenkins
every branch submit
• Jenkins runs build + test
• Jenkins posts back test results +
coverage results
Code Coverage with Phabricator
Accepts coverage as part of Jenkins test
results postback
Uses simple custom format:
• N Not executable. This is a comment
or whitespace which should be
ignored when computing test
coverage.
• C Covered. This line has test
coverage.
• U Uncovered. This line is executable
but has no test coverage.
• X Unreachable. If your coverage
analysis can detect unreachable code,
you can report it here.
‘myclass.cs’ => ‘NNCNNUNXUC’
CLOUD BUILD + TEST
Check your work!
Jenkins!
• http://jenkins-ci.org/
• Installs on Windows or
Linux
• Written in Java
• Extensive plugin system
• Can build most languages
• Jobs can be chained
together and communicate
with each other
• Uses webhooks for cross-
service communication
Build and Test with Jenkins
Develop: Diff Build
•Compile change against mainline
•Execute unit tests
Build: Continuous Integration
•Compile change as a part of mainline submit
•Execute unit tests
Deploy: Continuous Deployment
•Start staging environment
•Deploy staging environment
•Execute integration tests
Jenkins in the Wild
DEPLOY + MONITOR
See your work live!
Cloud Deployment
Each service packaged and deployed by
Jenkins:
• Staging: All builds update staging
environment services and all tests are
run
• Production: Builds are cherry pick
deployed
• Deploy to Production Staging
• Run tests against new staging environment
• Roll staged traffic over to new environment
• Roll back immediately on failures
All deployments managed via Jenkins
Packaging includes config changes
Common Pitfalls:
• In place updates
• Swap all traffic at once
• No roll back mechanism
Cloud Monitoring
How to know you’re down
• Use counters
• Count what makes sense
• Know your service KPIs
• Don’t just count, track deviation
• Page when it’s wrong, before it’s
bad
• Log
Don’t rely on being able to debug on
the server
Not sure if error spike due to
new code
Or terrible users
Cloud Monitoring
Deviation from minute to minute can
tell you a lot at high volumes
• Allows finding what would
otherwise have been lost in the
noise
• Fine grained tracking is most
useful. Per API + per error code, for
example
• Track enough data to be able to
match deviations with deployments
• Logs are important, but often aren’t
enough to know something is
wrong unless it’s broken
• Logs tell you about A request, counters
tell you about ALL requests
Integration Tests as Monitoring
Author one set of HTTP-level tests
• Same as how clients connect
• Self-contained and self-initializing
• Repeatable and reliable
Deploy tests both within build env and
within monitoring cloud
Collect data from tests into one central
location
Present data for use by devops and
customers
http://www.slideshare.net/MelissaBenua
Questions?
Melissa Benua
@queenofcode
mbenua@gmail.com
https://www.linkedin.com/in/mbenua
http://www.slideshare.net/MelissaBenua

More Related Content

More from Josiah Renaudin

Determining Business Value in Agile Development
Determining Business Value in Agile DevelopmentDetermining Business Value in Agile Development
Determining Business Value in Agile DevelopmentJosiah Renaudin
 
Three Things You MUST Know to Transform into an Agile Enterprise
Three Things You MUST Know to Transform into an Agile EnterpriseThree Things You MUST Know to Transform into an Agile Enterprise
Three Things You MUST Know to Transform into an Agile EnterpriseJosiah Renaudin
 
Internet of Things and the Wisdom of Mobile
Internet of Things and the Wisdom of MobileInternet of Things and the Wisdom of Mobile
Internet of Things and the Wisdom of MobileJosiah Renaudin
 
How to Do Kick-Ass Software Development
How to Do Kick-Ass Software DevelopmentHow to Do Kick-Ass Software Development
How to Do Kick-Ass Software DevelopmentJosiah Renaudin
 
The Power of an Agile Mindset
The Power of an Agile MindsetThe Power of an Agile Mindset
The Power of an Agile MindsetJosiah Renaudin
 
DevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software OrganizationsDevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software OrganizationsJosiah Renaudin
 
Uncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Uncover Untold Stories in Your Data: A Deep Dive on Data ProfilingUncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Uncover Untold Stories in Your Data: A Deep Dive on Data ProfilingJosiah Renaudin
 
Build a Quality Engineering and Automation Framework
Build a Quality Engineering and Automation FrameworkBuild a Quality Engineering and Automation Framework
Build a Quality Engineering and Automation FrameworkJosiah Renaudin
 
Don’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Don’t Be Another Statistic! Develop a Long-Term Test Automation StrategyDon’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Don’t Be Another Statistic! Develop a Long-Term Test Automation StrategyJosiah Renaudin
 
Testing Lessons from the Land of Make Believe
Testing Lessons from the Land of Make BelieveTesting Lessons from the Land of Make Believe
Testing Lessons from the Land of Make BelieveJosiah Renaudin
 
Finding Success with Test Process Improvement
Finding Success with Test Process ImprovementFinding Success with Test Process Improvement
Finding Success with Test Process ImprovementJosiah Renaudin
 
Git and GitHub for Testers
Git and GitHub for TestersGit and GitHub for Testers
Git and GitHub for TestersJosiah Renaudin
 
Stay Ahead of the Mobile and Web Testing Maturity Curve
Stay Ahead of the Mobile and Web Testing Maturity CurveStay Ahead of the Mobile and Web Testing Maturity Curve
Stay Ahead of the Mobile and Web Testing Maturity CurveJosiah Renaudin
 
The Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in ParallelThe Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in ParallelJosiah Renaudin
 
Testing at Startup Companies: What, When, Where, and How
Testing at Startup Companies: What, When, Where, and HowTesting at Startup Companies: What, When, Where, and How
Testing at Startup Companies: What, When, Where, and HowJosiah Renaudin
 
Boost Test Coverage with Automated Visual Testing
Boost Test Coverage with Automated Visual TestingBoost Test Coverage with Automated Visual Testing
Boost Test Coverage with Automated Visual TestingJosiah Renaudin
 
Defect Metrics for Organization and Project Health
Defect Metrics for Organization and Project HealthDefect Metrics for Organization and Project Health
Defect Metrics for Organization and Project HealthJosiah Renaudin
 
Cross-Platform Mobile Test Automation Using Appium
Cross-Platform Mobile Test Automation Using AppiumCross-Platform Mobile Test Automation Using Appium
Cross-Platform Mobile Test Automation Using AppiumJosiah Renaudin
 
Combine Test Automation Code with Product Code: The Good, the Bad, and the Le...
Combine Test Automation Code with Product Code: The Good, the Bad, and the Le...Combine Test Automation Code with Product Code: The Good, the Bad, and the Le...
Combine Test Automation Code with Product Code: The Good, the Bad, and the Le...Josiah Renaudin
 
A Tester’s Experience with User Experience Mapping
A Tester’s Experience with User Experience MappingA Tester’s Experience with User Experience Mapping
A Tester’s Experience with User Experience MappingJosiah Renaudin
 

More from Josiah Renaudin (20)

Determining Business Value in Agile Development
Determining Business Value in Agile DevelopmentDetermining Business Value in Agile Development
Determining Business Value in Agile Development
 
Three Things You MUST Know to Transform into an Agile Enterprise
Three Things You MUST Know to Transform into an Agile EnterpriseThree Things You MUST Know to Transform into an Agile Enterprise
Three Things You MUST Know to Transform into an Agile Enterprise
 
Internet of Things and the Wisdom of Mobile
Internet of Things and the Wisdom of MobileInternet of Things and the Wisdom of Mobile
Internet of Things and the Wisdom of Mobile
 
How to Do Kick-Ass Software Development
How to Do Kick-Ass Software DevelopmentHow to Do Kick-Ass Software Development
How to Do Kick-Ass Software Development
 
The Power of an Agile Mindset
The Power of an Agile MindsetThe Power of an Agile Mindset
The Power of an Agile Mindset
 
DevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software OrganizationsDevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software Organizations
 
Uncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Uncover Untold Stories in Your Data: A Deep Dive on Data ProfilingUncover Untold Stories in Your Data: A Deep Dive on Data Profiling
Uncover Untold Stories in Your Data: A Deep Dive on Data Profiling
 
Build a Quality Engineering and Automation Framework
Build a Quality Engineering and Automation FrameworkBuild a Quality Engineering and Automation Framework
Build a Quality Engineering and Automation Framework
 
Don’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Don’t Be Another Statistic! Develop a Long-Term Test Automation StrategyDon’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
Don’t Be Another Statistic! Develop a Long-Term Test Automation Strategy
 
Testing Lessons from the Land of Make Believe
Testing Lessons from the Land of Make BelieveTesting Lessons from the Land of Make Believe
Testing Lessons from the Land of Make Believe
 
Finding Success with Test Process Improvement
Finding Success with Test Process ImprovementFinding Success with Test Process Improvement
Finding Success with Test Process Improvement
 
Git and GitHub for Testers
Git and GitHub for TestersGit and GitHub for Testers
Git and GitHub for Testers
 
Stay Ahead of the Mobile and Web Testing Maturity Curve
Stay Ahead of the Mobile and Web Testing Maturity CurveStay Ahead of the Mobile and Web Testing Maturity Curve
Stay Ahead of the Mobile and Web Testing Maturity Curve
 
The Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in ParallelThe Selenium Grid: Run Multiple Automated Tests in Parallel
The Selenium Grid: Run Multiple Automated Tests in Parallel
 
Testing at Startup Companies: What, When, Where, and How
Testing at Startup Companies: What, When, Where, and HowTesting at Startup Companies: What, When, Where, and How
Testing at Startup Companies: What, When, Where, and How
 
Boost Test Coverage with Automated Visual Testing
Boost Test Coverage with Automated Visual TestingBoost Test Coverage with Automated Visual Testing
Boost Test Coverage with Automated Visual Testing
 
Defect Metrics for Organization and Project Health
Defect Metrics for Organization and Project HealthDefect Metrics for Organization and Project Health
Defect Metrics for Organization and Project Health
 
Cross-Platform Mobile Test Automation Using Appium
Cross-Platform Mobile Test Automation Using AppiumCross-Platform Mobile Test Automation Using Appium
Cross-Platform Mobile Test Automation Using Appium
 
Combine Test Automation Code with Product Code: The Good, the Bad, and the Le...
Combine Test Automation Code with Product Code: The Good, the Bad, and the Le...Combine Test Automation Code with Product Code: The Good, the Bad, and the Le...
Combine Test Automation Code with Product Code: The Good, the Bad, and the Le...
 
A Tester’s Experience with User Experience Mapping
A Tester’s Experience with User Experience MappingA Tester’s Experience with User Experience Mapping
A Tester’s Experience with User Experience Mapping
 

Recently uploaded

%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
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
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
%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
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 

Recently uploaded (20)

%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
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...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%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
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 

Continuous Integration: A New Way of Life

  • 1. T14   Test  Techniques   5/5/16  13:30   Continuous  Integration:  A  New  Way  of   Life   Presented  by:   Melissa  Benua   PlayFab,  Inc.     Brought  to  you  by:     350  Corporate  Way,  Suite  400,  Orange  Park,  FL  32073     888-­‐-­‐-­‐268-­‐-­‐-­‐8770  ·∙·∙  904-­‐-­‐-­‐278-­‐-­‐-­‐0524  -­‐  info@techwell.com  -­‐  http://www.stareast.techwell.com/  
  • 2. Melissa  Benua   PlayFab,  Inc.   Senior  backend  engineer  for  PlayFab  Melissa  Benua  has  worked  in  nearly  every   software  development  role: engineer,  test,  DevOps,  and  program  management in  her  career.  Melissa  has  created  and  run  high-availability,  high-quality  services   at  Boeing  and  Microsoft  on  Bing,  Cortana,  and  Xbox  One.  She  discovered  her   love  of  massively-scaled  systems  while  working  on  the  Bing  backend,  honing  the   art  of  keeping  highly-available  complex  systems  up  while  undergoing  massive   code  churn.  Whether  working  with  classic  or  cutting-edge  testing  models,   Melissa  isn't  afraid  to  mix  traditional  approaches  with  bold  new  ideas  to  make   her  products  better,  faster,  and  more  reliable.  She  is  passionate  about  about   sharing  best  practices  with  colleagues  and  the  tech-world.  
  • 3. CONTINUOUS INTEGRATION AS A DEVELOPER'S WAY OF LIFE Melissa Benua Senior Software Engineer PlayFab, Inc STAREAST 2016
  • 4. Continuous Integration + Continuous Delivery Continuous Integration (1999): “The practice of merging all developer working copies to a shared mainline several times a day.” Continuous Delivery (2010): “Every code change can be deployed to production.” Develop BuildTest Deploy
  • 5. Principles of Go-Fast Many small changes are better than fewer big changes Every single change gets the full set of tests Automate everything Code in the master branch can go live at any point in time Code reviews are necessary, but also automated
  • 6. Why Go Fast? Test automation leads to faster development speed Faster development speed leads to faster turnaround times Faster turnaround times lead to more features More features lead to $$$
  • 7. CI + CD Strategy Branch Strategy Deployment Strategy Dev Build • Build Against Staging • Deploy to Staging • Run Integration Tests Live Build • Build Against Production • Deploy to Production Staging • Run Integration Tests Deploy • Swap Production Staging into Production • Monitor
  • 8. Pipeline Overview Self-hosting parts of the integration pipeline can be cheap and easy! Git • Source control Phabricator • Track • Peer Review Jenkins • Build • Test Cloud Compute • Release • Monitor
  • 10. Git! Why git? • Simple to start with • Plugins for every need • Forking allows great freedom • Choice of hosted or self hosted • Distributed reliability and safety • Easy partial roll backs • Ubiquitous
  • 11. MASTER The ‘GitHub’ Flow C2 C10 C1 C3 C4 C11 Create branch ‘myfeature’ Merge ‘myfeature’ into master
  • 12. CODE REVIEW + TRACKING Do good work!
  • 13. Phabricator! • http://phabricator.org/ Runs on Linux Written in PHP Spun out of Facebook Moderate plugin system Can handle most languages Use as many or as few Phabricator services as you like Supports: issue tracking, scrum boards, source auditing, code review, more!
  • 14. Code Reviews with Phabricator Differential: code review tool Harbormaster: build management tool Manifest: issue tracking tool Setup Process: • https://github.com/uber/ phabricator-jenkins-plugin • Harbormaster posts to Jenkins every branch submit • Jenkins runs build + test • Jenkins posts back test results + coverage results
  • 15. Code Coverage with Phabricator Accepts coverage as part of Jenkins test results postback Uses simple custom format: • N Not executable. This is a comment or whitespace which should be ignored when computing test coverage. • C Covered. This line has test coverage. • U Uncovered. This line is executable but has no test coverage. • X Unreachable. If your coverage analysis can detect unreachable code, you can report it here. ‘myclass.cs’ => ‘NNCNNUNXUC’
  • 16. CLOUD BUILD + TEST Check your work!
  • 17. Jenkins! • http://jenkins-ci.org/ • Installs on Windows or Linux • Written in Java • Extensive plugin system • Can build most languages • Jobs can be chained together and communicate with each other • Uses webhooks for cross- service communication
  • 18. Build and Test with Jenkins Develop: Diff Build •Compile change against mainline •Execute unit tests Build: Continuous Integration •Compile change as a part of mainline submit •Execute unit tests Deploy: Continuous Deployment •Start staging environment •Deploy staging environment •Execute integration tests
  • 20. DEPLOY + MONITOR See your work live!
  • 21. Cloud Deployment Each service packaged and deployed by Jenkins: • Staging: All builds update staging environment services and all tests are run • Production: Builds are cherry pick deployed • Deploy to Production Staging • Run tests against new staging environment • Roll staged traffic over to new environment • Roll back immediately on failures All deployments managed via Jenkins Packaging includes config changes Common Pitfalls: • In place updates • Swap all traffic at once • No roll back mechanism
  • 22. Cloud Monitoring How to know you’re down • Use counters • Count what makes sense • Know your service KPIs • Don’t just count, track deviation • Page when it’s wrong, before it’s bad • Log Don’t rely on being able to debug on the server Not sure if error spike due to new code Or terrible users
  • 23. Cloud Monitoring Deviation from minute to minute can tell you a lot at high volumes • Allows finding what would otherwise have been lost in the noise • Fine grained tracking is most useful. Per API + per error code, for example • Track enough data to be able to match deviations with deployments • Logs are important, but often aren’t enough to know something is wrong unless it’s broken • Logs tell you about A request, counters tell you about ALL requests
  • 24. Integration Tests as Monitoring Author one set of HTTP-level tests • Same as how clients connect • Self-contained and self-initializing • Repeatable and reliable Deploy tests both within build env and within monitoring cloud Collect data from tests into one central location Present data for use by devops and customers http://www.slideshare.net/MelissaBenua