SlideShare a Scribd company logo
RaaS
REGRESSION AS A
SERVICE
RAAS
Self-aware
automation
Ragavan Ambighananthan
@ragsambi
Expedia
London Test Automation In Devops Meetup - July 2018
SOLVING MICRO-
SERVICES AND ONE SITE
PROBLEM USING RAAS
Part I
Part II
On-boarding a whitelist partner takes few man-weeks of testing
Slow automation development for new Partners/Partner POS
Custom feature requirements from different partners
This sometimes varies even among the same partner POSes
PROBLEM DESCRIPTION
RaaS design driven by json based meta data
Single git repo and no code duplicity
Self-aware automation design and code re-use
This RaaS framework itself is re-usable
no need to change automation code for new partners
SOLUTION(S)
DEFINITION OF RAAS 1/5
RaaS Automation Self-Aware Design
• Complex pattern of feature requirements captured as blue print
in json file
• New partner sites can be on-boarded just by adding them to json
file, without having to change any code
• Intelligent tagging and meta data allows tests to be run only if its
applicable for a POS and at an individual test case level
HOLISTIC TEST AUTOMATION
THAT IS SELF-AWARE
BIG PICTURE
RAAS API
PARTNER
AUTOMATI
ON TESTS
DEFINITION OF RAAS 2/5
Self Service
• Allows teams to create pre-configured CI/CD pipeline
• Allows users to view the blue print, update and add new
Partners
SELF-SERVICE PORTAL FOR CREATING CI/CD
PIPELINE AND MANAGING THE RAAS
BLUEPRINT
SELF SERVICE CI PIPELINE
DEFINITION OF RAAS 3/5
EWE Scalatest Framework
• Provides reusable, necessary nuts and bolts to write UI test
• Integrated with other RaaS tools
TEST FRAMEWORK WHICH PROVIDES CORE
TEST AUTOMATION FUNCTIONALITY WITH
REUSABLE COMPONENTS
DEFINITION OF RAAS 4/5
Distributed Automation
• Provides cloud based test automation infrastructure which
provides scalable and concurrent automation execution
system
ABILITY TO STORE AUTOMATION ARTIFACTS
LIKE AND MAKE THEM AVAILABLE VIA A UI
RICH DASHBOARD
DEFINITION OF RAAS 5/5
DA Dashboard
• Easy to view trend of test automation results
• Dashboard helps to debug and find the root cause faster
PROVIDES CLOUD BASED TEST
INFRASTRUCTURE WHICH PROVIDES SCALABLE
AND CONCURRENT AUTOMATION EXECUTION
SYSTEM
RAAS
ADVANTAGES OF RAAS
• When a new partner is launched, no need to read the
automation code and add tags to matching test scenarios
• Imagine doing this for 100 tests?!
• Update new Partner Point of Sale details in the json file
and use the self service to create jenkins jobs
• No need to change automation code
SOLVING “MICROSERVICES AND ONE SITE”
PROBLEM USING RAAS
Maintaining the sanity of a site powered by micro
services with RaaS
Ragavan Ambighananthan
@ragsambi
Expedia Group
London Test Automation In Devops Meetup - July 2018
Y
O
U
R
S
I
T
E
.
COM
Micro services release pattern
app1-flex-web
release time Day 1 Day 2 Day 3 Day 4 Day 5 Day 6
app2-web
app3-web
app4-web
app5-api-web
app60-web
app200-web
app250-shopping-web
app399-shopping-
web
app400-web
Problem Statement
• Release of one micro service among hundreds can
potentially impact the site
• A commit moving into production is going to be fast
• Amount of commits moving into production is going to
be high as well, so is the problem caused by them.
• Above problem multiplied by the number of micro
services
Problem Statement
• How to maintain the independence
of CI/CD of all micro service and
still maintain the sanctity of your
master site?
Solution 1:
Git submodule
Git submodule
Submodules
It often happens that while working on one project, you
need to use another project from within it. Perhaps it’s
a library that a third party developed or that you’re
developing separately and using in multiple parent
projects. A common issue arises in these scenarios:
you want to be able to treat the two projects as
separate yet still be able to use one from within the
other.
Git submodule
Disadvantages
• Different micro services can use different
test framework
• Even if they use same framework, they
can use different versions
• Even with all same, they could be run
differently like using Maven, Gradle, etc
• Hence it is not possible to run as a single
jenkins job
Relationships: Based on knowledge,
a change to one page might affect
the previous or the next page in the
flow
Dependents: Based on fact, a
change to one service-api will
affect it’s dependents
Solution 2:
RaaS and Contracts
https://your-internal-git.repo/app2-web
For design purpose, json file is
shown. Ideally the dependency tree
will be dynamically created from
some form of discovery mechanism
Solution 2 (cont.)
RaaS and Contracts
• Use a discovery service to find the
dependency of a micro-service
• In the absence of a discovery service,
use a static json file
• Map the ‘relationship’ part as well
RaaS and publish contracts
• Each app publishes a contract on how to run it’s UI tests
• This contracts includes are common job to run the app’s test, parameters
• to pass to this job like selenium hub IP,etc
• https://your-internal-git.repo/app2-web/contract.json
{
"params":{
"jobParameters":{
“env”:”test",
“test_tags”: “tier1”
“hub”: “1.1.1.1”,
“ branch”: “master”
},
“token”:"raasapp2web"
},
"name":"run automation tests on test environment",
"action":{
“name”:”name_of_your_masterjenkins”
},
“actionId”:”app2-web-common-critical-tests”,
"disabled":false,
"description":"run critical UI tests for app2-web“
}
THIS COMMON JOB CAN BE USED BY ANY
PROJECT AND ‘CONCURRENT RUN” IS ENABLED
app1-flex-web
Automating the solution
• A self service app will read the json file(or use a discovery service)
and get the git repos of ‘relationship’ and ‘dependencies’ apps
• Then it will read each app’s contract.json file from their own git repo
and create a master automation job which includes the common
jobs.
https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests
https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests
https://expweb.builds.exp-tools.net/job/app50-web-common-critical-api-tests
CI BUILD
DEPLOYMEN
T JOB
https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests
TEST
ENV
Jenkins jobs
"jobParameters":{
“env”:”test",
“test_tags”: “tier1”
“hub”: “1.1.1.1”
“ branch”: “master”
}
“ branch”: “master” “ branch”: “master”
https://expweb.builds.exp-tools.net/job/app1-flex-web-master-common
app2-web
Automating the solution
https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests
https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests
https://expweb.builds.exp-tools.net/job/app5-api-common-critical-api-tests
CI BUILD
DEPLOYMEN
T JOB
https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests
TEST
ENV
Jenkins jobs
“ branch”: “branch1” “ branch”: “branch1”
app1-flex-web
https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests
https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests
https://expweb.builds.exp-tools.net/job/app50-web-common-critical-api-tests
CI BUILD
DEPLOYMEN
T JOB
https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests
TEST
ENV
“ branch”: “master” “ branch”: “master”
"jobParameters":{
“env”:”test",
“test_tags”: “tier1”
“hub”: “1.1.1.1”
“ branch”: “master”
}
https://expweb.builds.exp-tools.net/job/app1-flex-web-master-common
https://expweb.builds.exp-tools.net/job/app2-web-master-common
Big Picture - Self Service
https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests
https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests
https://expweb.builds.exp-tools.net/job/app50-web-common-critical-ui-tests
https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests
DISCOVERY
SERVICE
SELF SERVICE
https://your-internal-git.repo/*/contract.json
reads contract.json
of all relationships and dependents
https://expweb.builds.exp-tools.net/job/app1-flex-web-master-common
and add it to the master job of the app
Big Picture - Pipeline
app2-web
CI BUILD
DEPLOYMEN
T JOB
TEST
ENV
“ branch”: “branch1” “ branch”: “branch1”
"jobParameters":{
“env”:”test",
“test_tags”: “tier1”
“hub”: “1.1.1.1”
“ branch”: “branch1”
}
https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests
https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests
https://expweb.builds.exp-tools.net/job/app50-web-common-critical-ui-tests
https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests
https://expweb.builds.exp-tools.net/job/app1-flex-web-master-common
• All the above jobs run in parallel
• All the tests within the job runs in parallel pointing to the
hub “1.1.1.1”
• Each app will have its own DA hub
• The ‘*-common-critical-ui-tests’ jobs will only run the tests
tagged ‘tier1’
Questions?
https://github.com/ambirag/microservices-and-onesite-problem
https://twitter.com/ragsambi

More Related Content

What's hot

Practical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppPractical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version App
Atlassian
 
Putting Quality First through Continuous Testing
Putting Quality First through Continuous TestingPutting Quality First through Continuous Testing
Putting Quality First through Continuous Testing
TechWell
 
Redundant devops
Redundant devopsRedundant devops
Redundant devops
Szabolcs Szabolcsi-Tóth
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
ciberkleid
 
Spring Webflux
Spring WebfluxSpring Webflux
Spring Webflux
Carlos E. Salazar
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
Noriaki Tatsumi
 
Spring insight what just happened
Spring insight   what just happenedSpring insight   what just happened
Spring insight what just happened
Boulder Java User's Group
 
Semi Automatic Code Review
Semi Automatic Code ReviewSemi Automatic Code Review
Semi Automatic Code Review
Richard Huang
 
Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an api
Michelangelo van Dam
 
MuleSoft Surat Virtual Meetup#6 - MuleSoft Project Template Using Maven Arche...
MuleSoft Surat Virtual Meetup#6 - MuleSoft Project Template Using Maven Arche...MuleSoft Surat Virtual Meetup#6 - MuleSoft Project Template Using Maven Arche...
MuleSoft Surat Virtual Meetup#6 - MuleSoft Project Template Using Maven Arche...
Jitendra Bafna
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choice
toddbr
 
White paper mbre_en
White paper mbre_enWhite paper mbre_en
White paper mbre_en
VisioneerUG
 
Patterns of a "Good" Test Automation Framework, Locators & Data
Patterns of a "Good" Test Automation Framework, Locators & DataPatterns of a "Good" Test Automation Framework, Locators & Data
Patterns of a "Good" Test Automation Framework, Locators & Data
Agile Testing Alliance
 
All Aboard for Laravel 5.1
All Aboard for Laravel 5.1All Aboard for Laravel 5.1
All Aboard for Laravel 5.1
Jason McCreary
 
How to contribute to an open source project and don’t die during the Code Rev...
How to contribute to an open source project and don’t die during the Code Rev...How to contribute to an open source project and don’t die during the Code Rev...
How to contribute to an open source project and don’t die during the Code Rev...
Victor Morales
 
Spring REST Docs: Documenting RESTful APIs using your tests - Devoxx
Spring REST Docs: Documenting RESTful APIs using your tests - DevoxxSpring REST Docs: Documenting RESTful APIs using your tests - Devoxx
Spring REST Docs: Documenting RESTful APIs using your tests - Devoxx
JWORKS powered by Ordina
 
How to setup a development environment for ONAP
How to setup a development environment for ONAPHow to setup a development environment for ONAP
How to setup a development environment for ONAP
Victor Morales
 
Application Performance Management
Application Performance ManagementApplication Performance Management
Application Performance Management
Noriaki Tatsumi
 
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOpsECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
European Collaboration Summit
 
Flexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL TemplatesFlexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL Templates
Jeff Potts
 

What's hot (20)

Practical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppPractical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version App
 
Putting Quality First through Continuous Testing
Putting Quality First through Continuous TestingPutting Quality First through Continuous Testing
Putting Quality First through Continuous Testing
 
Redundant devops
Redundant devopsRedundant devops
Redundant devops
 
Continuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOneContinuous Deployment of your Application @SpringOne
Continuous Deployment of your Application @SpringOne
 
Spring Webflux
Spring WebfluxSpring Webflux
Spring Webflux
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
 
Spring insight what just happened
Spring insight   what just happenedSpring insight   what just happened
Spring insight what just happened
 
Semi Automatic Code Review
Semi Automatic Code ReviewSemi Automatic Code Review
Semi Automatic Code Review
 
Easily extend your existing php app with an api
Easily extend your existing php app with an apiEasily extend your existing php app with an api
Easily extend your existing php app with an api
 
MuleSoft Surat Virtual Meetup#6 - MuleSoft Project Template Using Maven Arche...
MuleSoft Surat Virtual Meetup#6 - MuleSoft Project Template Using Maven Arche...MuleSoft Surat Virtual Meetup#6 - MuleSoft Project Template Using Maven Arche...
MuleSoft Surat Virtual Meetup#6 - MuleSoft Project Template Using Maven Arche...
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choice
 
White paper mbre_en
White paper mbre_enWhite paper mbre_en
White paper mbre_en
 
Patterns of a "Good" Test Automation Framework, Locators & Data
Patterns of a "Good" Test Automation Framework, Locators & DataPatterns of a "Good" Test Automation Framework, Locators & Data
Patterns of a "Good" Test Automation Framework, Locators & Data
 
All Aboard for Laravel 5.1
All Aboard for Laravel 5.1All Aboard for Laravel 5.1
All Aboard for Laravel 5.1
 
How to contribute to an open source project and don’t die during the Code Rev...
How to contribute to an open source project and don’t die during the Code Rev...How to contribute to an open source project and don’t die during the Code Rev...
How to contribute to an open source project and don’t die during the Code Rev...
 
Spring REST Docs: Documenting RESTful APIs using your tests - Devoxx
Spring REST Docs: Documenting RESTful APIs using your tests - DevoxxSpring REST Docs: Documenting RESTful APIs using your tests - Devoxx
Spring REST Docs: Documenting RESTful APIs using your tests - Devoxx
 
How to setup a development environment for ONAP
How to setup a development environment for ONAPHow to setup a development environment for ONAP
How to setup a development environment for ONAP
 
Application Performance Management
Application Performance ManagementApplication Performance Management
Application Performance Management
 
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOpsECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
 
Flexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL TemplatesFlexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL Templates
 

Similar to Solving micro-services and one site problem

Global Logic sMash Overview And Experiences
Global Logic   sMash  Overview And  ExperiencesGlobal Logic   sMash  Overview And  Experiences
Global Logic sMash Overview And Experiences
Project Zero
 
Change management in hybrid landscapes
Change management in hybrid landscapesChange management in hybrid landscapes
Change management in hybrid landscapes
Chris Kernaghan
 
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
Cloud Native Day Tel Aviv
 
Twelve Factor Serverless Applications
Twelve Factor Serverless ApplicationsTwelve Factor Serverless Applications
Twelve Factor Serverless Applications
Amazon Web Services
 
muCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsmuCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless Applications
Chris Munns
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
BizTalk360
 
Multi-tenancy with Rails
Multi-tenancy with RailsMulti-tenancy with Rails
Multi-tenancy with Rails
Paul Gallagher
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
VMware Tanzu
 
Building a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
Building a DevOps pipeline for Serverless by using Mocha, GitHub and TravisBuilding a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
Building a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
Exove
 
What is Serverless Computing?
What is Serverless Computing?What is Serverless Computing?
What is Serverless Computing?
AIMDek Technologies
 
ATAGTR2017 Test the REST
ATAGTR2017 Test the REST ATAGTR2017 Test the REST
ATAGTR2017 Test the REST
Agile Testing Alliance
 
Modern software testing and processes 2019
Modern software testing and processes 2019Modern software testing and processes 2019
Modern software testing and processes 2019
Karim Fanadka
 
Change Management in Hybrid landscapes 2017
Change Management in Hybrid landscapes 2017Change Management in Hybrid landscapes 2017
Change Management in Hybrid landscapes 2017
Chris Kernaghan
 
Developing for the Atlassian Ecosystem
Developing for the Atlassian EcosystemDeveloping for the Atlassian Ecosystem
Developing for the Atlassian Ecosystem
Alex Henderson
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Mack Hardy
 
Rest assured
Rest assuredRest assured
Rest assured
Varun Deshpande
 
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
Amazon Web Services
 
Browser-Based Load Testing with Grafana K6
Browser-Based Load Testing with Grafana K6Browser-Based Load Testing with Grafana K6
Browser-Based Load Testing with Grafana K6
Knoldus Inc.
 
Gradle Again
Gradle AgainGradle Again
Gradle Again
Eugen Martynov
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
Markus Eisele
 

Similar to Solving micro-services and one site problem (20)

Global Logic sMash Overview And Experiences
Global Logic   sMash  Overview And  ExperiencesGlobal Logic   sMash  Overview And  Experiences
Global Logic sMash Overview And Experiences
 
Change management in hybrid landscapes
Change management in hybrid landscapesChange management in hybrid landscapes
Change management in hybrid landscapes
 
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
 
Twelve Factor Serverless Applications
Twelve Factor Serverless ApplicationsTwelve Factor Serverless Applications
Twelve Factor Serverless Applications
 
muCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsmuCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless Applications
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
 
Multi-tenancy with Rails
Multi-tenancy with RailsMulti-tenancy with Rails
Multi-tenancy with Rails
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
 
Building a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
Building a DevOps pipeline for Serverless by using Mocha, GitHub and TravisBuilding a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
Building a DevOps pipeline for Serverless by using Mocha, GitHub and Travis
 
What is Serverless Computing?
What is Serverless Computing?What is Serverless Computing?
What is Serverless Computing?
 
ATAGTR2017 Test the REST
ATAGTR2017 Test the REST ATAGTR2017 Test the REST
ATAGTR2017 Test the REST
 
Modern software testing and processes 2019
Modern software testing and processes 2019Modern software testing and processes 2019
Modern software testing and processes 2019
 
Change Management in Hybrid landscapes 2017
Change Management in Hybrid landscapes 2017Change Management in Hybrid landscapes 2017
Change Management in Hybrid landscapes 2017
 
Developing for the Atlassian Ecosystem
Developing for the Atlassian EcosystemDeveloping for the Atlassian Ecosystem
Developing for the Atlassian Ecosystem
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
Rest assured
Rest assuredRest assured
Rest assured
 
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
AWS Dev Lounge: Applying the Twelve-Factor Application Manifesto to Developin...
 
Browser-Based Load Testing with Grafana K6
Browser-Based Load Testing with Grafana K6Browser-Based Load Testing with Grafana K6
Browser-Based Load Testing with Grafana K6
 
Gradle Again
Gradle AgainGradle Again
Gradle Again
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 

Recently uploaded

Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 

Recently uploaded (20)

Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 

Solving micro-services and one site problem

  • 1. RaaS REGRESSION AS A SERVICE RAAS Self-aware automation Ragavan Ambighananthan @ragsambi Expedia London Test Automation In Devops Meetup - July 2018 SOLVING MICRO- SERVICES AND ONE SITE PROBLEM USING RAAS Part I Part II
  • 2. On-boarding a whitelist partner takes few man-weeks of testing Slow automation development for new Partners/Partner POS Custom feature requirements from different partners This sometimes varies even among the same partner POSes PROBLEM DESCRIPTION
  • 3. RaaS design driven by json based meta data Single git repo and no code duplicity Self-aware automation design and code re-use This RaaS framework itself is re-usable no need to change automation code for new partners SOLUTION(S)
  • 4. DEFINITION OF RAAS 1/5 RaaS Automation Self-Aware Design • Complex pattern of feature requirements captured as blue print in json file • New partner sites can be on-boarded just by adding them to json file, without having to change any code • Intelligent tagging and meta data allows tests to be run only if its applicable for a POS and at an individual test case level HOLISTIC TEST AUTOMATION THAT IS SELF-AWARE
  • 6. DEFINITION OF RAAS 2/5 Self Service • Allows teams to create pre-configured CI/CD pipeline • Allows users to view the blue print, update and add new Partners SELF-SERVICE PORTAL FOR CREATING CI/CD PIPELINE AND MANAGING THE RAAS BLUEPRINT
  • 7. SELF SERVICE CI PIPELINE
  • 8. DEFINITION OF RAAS 3/5 EWE Scalatest Framework • Provides reusable, necessary nuts and bolts to write UI test • Integrated with other RaaS tools TEST FRAMEWORK WHICH PROVIDES CORE TEST AUTOMATION FUNCTIONALITY WITH REUSABLE COMPONENTS
  • 9. DEFINITION OF RAAS 4/5 Distributed Automation • Provides cloud based test automation infrastructure which provides scalable and concurrent automation execution system ABILITY TO STORE AUTOMATION ARTIFACTS LIKE AND MAKE THEM AVAILABLE VIA A UI RICH DASHBOARD
  • 10. DEFINITION OF RAAS 5/5 DA Dashboard • Easy to view trend of test automation results • Dashboard helps to debug and find the root cause faster PROVIDES CLOUD BASED TEST INFRASTRUCTURE WHICH PROVIDES SCALABLE AND CONCURRENT AUTOMATION EXECUTION SYSTEM
  • 11. RAAS
  • 12. ADVANTAGES OF RAAS • When a new partner is launched, no need to read the automation code and add tags to matching test scenarios • Imagine doing this for 100 tests?! • Update new Partner Point of Sale details in the json file and use the self service to create jenkins jobs • No need to change automation code
  • 13. SOLVING “MICROSERVICES AND ONE SITE” PROBLEM USING RAAS Maintaining the sanity of a site powered by micro services with RaaS Ragavan Ambighananthan @ragsambi Expedia Group London Test Automation In Devops Meetup - July 2018
  • 14. Y O U R S I T E . COM Micro services release pattern app1-flex-web release time Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 app2-web app3-web app4-web app5-api-web app60-web app200-web app250-shopping-web app399-shopping- web app400-web
  • 15. Problem Statement • Release of one micro service among hundreds can potentially impact the site • A commit moving into production is going to be fast • Amount of commits moving into production is going to be high as well, so is the problem caused by them. • Above problem multiplied by the number of micro services
  • 16. Problem Statement • How to maintain the independence of CI/CD of all micro service and still maintain the sanctity of your master site?
  • 18. Git submodule Submodules It often happens that while working on one project, you need to use another project from within it. Perhaps it’s a library that a third party developed or that you’re developing separately and using in multiple parent projects. A common issue arises in these scenarios: you want to be able to treat the two projects as separate yet still be able to use one from within the other.
  • 19. Git submodule Disadvantages • Different micro services can use different test framework • Even if they use same framework, they can use different versions • Even with all same, they could be run differently like using Maven, Gradle, etc • Hence it is not possible to run as a single jenkins job
  • 20. Relationships: Based on knowledge, a change to one page might affect the previous or the next page in the flow Dependents: Based on fact, a change to one service-api will affect it’s dependents Solution 2: RaaS and Contracts https://your-internal-git.repo/app2-web For design purpose, json file is shown. Ideally the dependency tree will be dynamically created from some form of discovery mechanism
  • 21. Solution 2 (cont.) RaaS and Contracts • Use a discovery service to find the dependency of a micro-service • In the absence of a discovery service, use a static json file • Map the ‘relationship’ part as well
  • 22. RaaS and publish contracts • Each app publishes a contract on how to run it’s UI tests • This contracts includes are common job to run the app’s test, parameters • to pass to this job like selenium hub IP,etc • https://your-internal-git.repo/app2-web/contract.json { "params":{ "jobParameters":{ “env”:”test", “test_tags”: “tier1” “hub”: “1.1.1.1”, “ branch”: “master” }, “token”:"raasapp2web" }, "name":"run automation tests on test environment", "action":{ “name”:”name_of_your_masterjenkins” }, “actionId”:”app2-web-common-critical-tests”, "disabled":false, "description":"run critical UI tests for app2-web“ } THIS COMMON JOB CAN BE USED BY ANY PROJECT AND ‘CONCURRENT RUN” IS ENABLED
  • 23. app1-flex-web Automating the solution • A self service app will read the json file(or use a discovery service) and get the git repos of ‘relationship’ and ‘dependencies’ apps • Then it will read each app’s contract.json file from their own git repo and create a master automation job which includes the common jobs. https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests https://expweb.builds.exp-tools.net/job/app50-web-common-critical-api-tests CI BUILD DEPLOYMEN T JOB https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests TEST ENV Jenkins jobs "jobParameters":{ “env”:”test", “test_tags”: “tier1” “hub”: “1.1.1.1” “ branch”: “master” } “ branch”: “master” “ branch”: “master” https://expweb.builds.exp-tools.net/job/app1-flex-web-master-common
  • 24. app2-web Automating the solution https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests https://expweb.builds.exp-tools.net/job/app5-api-common-critical-api-tests CI BUILD DEPLOYMEN T JOB https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests TEST ENV Jenkins jobs “ branch”: “branch1” “ branch”: “branch1” app1-flex-web https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests https://expweb.builds.exp-tools.net/job/app50-web-common-critical-api-tests CI BUILD DEPLOYMEN T JOB https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests TEST ENV “ branch”: “master” “ branch”: “master” "jobParameters":{ “env”:”test", “test_tags”: “tier1” “hub”: “1.1.1.1” “ branch”: “master” } https://expweb.builds.exp-tools.net/job/app1-flex-web-master-common https://expweb.builds.exp-tools.net/job/app2-web-master-common
  • 25. Big Picture - Self Service https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests https://expweb.builds.exp-tools.net/job/app50-web-common-critical-ui-tests https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests DISCOVERY SERVICE SELF SERVICE https://your-internal-git.repo/*/contract.json reads contract.json of all relationships and dependents https://expweb.builds.exp-tools.net/job/app1-flex-web-master-common and add it to the master job of the app
  • 26. Big Picture - Pipeline app2-web CI BUILD DEPLOYMEN T JOB TEST ENV “ branch”: “branch1” “ branch”: “branch1” "jobParameters":{ “env”:”test", “test_tags”: “tier1” “hub”: “1.1.1.1” “ branch”: “branch1” } https://expweb.builds.exp-tools.net/job/app2-web-common-critical-ui-tests https://expweb.builds.exp-tools.net/job/app1-flex-web-ui-tests https://expweb.builds.exp-tools.net/job/app50-web-common-critical-ui-tests https://expweb.builds.exp-tools.net/job/app40-web-common-critical-ui-tests https://expweb.builds.exp-tools.net/job/app1-flex-web-master-common • All the above jobs run in parallel • All the tests within the job runs in parallel pointing to the hub “1.1.1.1” • Each app will have its own DA hub • The ‘*-common-critical-ui-tests’ jobs will only run the tests tagged ‘tier1’