SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Making a small QA
system with docker
ainoya
About me
相野谷 直樹
Ainoya Naoki
Web engineer
ainoya
naokiainoya
Personal project
by
@mookjp, and me
QA: Quality Assurance
of web applications
How do you set up a environment for QA ?
(involves a human going through test cases)
How to set up QA
environment
• ngrok
• expose local environment through proxy
• docker machine
• deploy conteiners to public environment
• docker + hipache proxy etc..
Run multiple QA
environments simultaneously
Perform QA each feature branches
feature-A
feature-B
feature-C
Solution: run containers
each feature branches
Access a container
with using a URL contains branch name
Running a container on demand
http://feature-A.app.dev
http://feature-B.app.dev
http://feature-C.app.dev
DEMO
NOTE: prevs.io is still under WIP :-)
Movie
prevs.io provides a simple
QA system for web apps
With using docker container, it can provide a QA
system fast, easily, simply
But it has a limitation:
It's limited to only 1 container
each feature branches
http://feature-A.app.dev
http://feature-B.app.dev
http://feature-C.app.dev
App
App
App
docker
container
Limitation:
Actual case:
A general web app is composed
of multiple services ( API, DB etc..)
http://feature-A.app.dev
http://feature-B.app.dev
http://feature-C.app.dev
App
DB
API-2
API-1
Solution: add integration
with docker-compose
Base OSS project: http://github.com/mookjp/pool
Run multiple containers
each feature branches
http://feature-A.app.dev
http://feature-B.app.dev
http://feature-C.app.dev
App
App
App
DB
DB
DB
docker-compose
DEMOhttps://github.com/ainoya/pool/tree/docker-compose
Sample application
Python
web app
counts up
visit times
docker-compose
Redis
stores
visit timeslink
app.py
from	
  flask	
  import	
  Flask	
  
from	
  redis	
  import	
  Redis	
  
import	
  os	
  
app	
  =	
  Flask(__name__)	
  
redis	
  =	
  Redis(host='redis',	
  port=6379)	
  
@app.route('/')	
  
def	
  hello():	
  
	
  	
  	
  	
  redis.incr('hits')	
  
	
  	
  	
  	
  return	
  'Hello	
  World!	
  I	
  have	
  been	
  seen	
  %s	
  times.'	
  %	
  
redis.get('hits')	
  
if	
  __name__	
  ==	
  "__main__":	
  
	
  	
  	
  	
  app.run(host="0.0.0.0",	
  port=80,	
  debug=True)	
  
Ref: https://docs.docker.com/compose/
docker-compose.yml(.erb)
web:	
  
	
  	
  environment:	
  
	
  	
  	
  	
  GIT_COMMIT:	
  "<%=	
  @git_commit_id	
  %>"	
  
	
  	
  build:	
  .	
  
	
  	
  ports:	
  
	
  	
  	
  -­‐	
  "80"	
  
	
  	
  links:	
  
	
  	
  	
  -­‐	
  redis	
  
redis:	
  
	
  	
  image:	
  redis	
  
DEMOhttps://github.com/ainoya/pool/tree/docker-compose
Set up QA environment each
"master", "development" branches
Python web
app
counts up
visit times
http://master.pool.dev
Redis
stores
visit timeslink
Python web
app
counts up
visit times
http://development.pool.dev
Redis
stores
visit timeslink
Movie
Future plan
• Support efficient pattern shares some resources
(DB, etc...) between same applications
• More integration with other solutions

ECS, GKE/k8s,…
• Integrate with docker registry 2.0 system
And We're hiring :-)

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

ConcourseCi overview
ConcourseCi  overviewConcourseCi  overview
ConcourseCi overview
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Webinar: Creating an Effective Docker Build Pipeline for Java Apps
Webinar: Creating an Effective Docker Build Pipeline for Java AppsWebinar: Creating an Effective Docker Build Pipeline for Java Apps
Webinar: Creating an Effective Docker Build Pipeline for Java Apps
 
Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3
 
Webinar: Using Docker Multi-stage Build to Create Advanced Pipelines
Webinar: Using Docker Multi-stage Build to Create Advanced PipelinesWebinar: Using Docker Multi-stage Build to Create Advanced Pipelines
Webinar: Using Docker Multi-stage Build to Create Advanced Pipelines
 
TechUG - Kubernetes 101 - May 2020
TechUG - Kubernetes 101 - May 2020TechUG - Kubernetes 101 - May 2020
TechUG - Kubernetes 101 - May 2020
 
Ruby On Grape
Ruby On GrapeRuby On Grape
Ruby On Grape
 
Xcode Server & Xcode 7 Bots
Xcode Server & Xcode 7 Bots Xcode Server & Xcode 7 Bots
Xcode Server & Xcode 7 Bots
 
Ansible introduction - XX Betabeers Galicia
Ansible introduction - XX Betabeers GaliciaAnsible introduction - XX Betabeers Galicia
Ansible introduction - XX Betabeers Galicia
 
SQL Sever on Docker: Database Containers 3 Ways
SQL Sever on Docker: Database Containers 3 WaysSQL Sever on Docker: Database Containers 3 Ways
SQL Sever on Docker: Database Containers 3 Ways
 
Introduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷JavaIntroduction to Concourse CI #渋谷Java
Introduction to Concourse CI #渋谷Java
 
Docker Docker Docker Chef
Docker Docker Docker ChefDocker Docker Docker Chef
Docker Docker Docker Chef
 
[表示が崩れる場合ダウンロードしてご覧ください] 2018年のDocker・Moby
[表示が崩れる場合ダウンロードしてご覧ください] 2018年のDocker・Moby[表示が崩れる場合ダウンロードしてご覧ください] 2018年のDocker・Moby
[表示が崩れる場合ダウンロードしてご覧ください] 2018年のDocker・Moby
 
DevOps Hackathon - Session 1: Vagrant
DevOps Hackathon - Session 1: VagrantDevOps Hackathon - Session 1: Vagrant
DevOps Hackathon - Session 1: Vagrant
 
Docker
DockerDocker
Docker
 
Cloud+Data Next: Mashing Linux and Windows Containers
Cloud+Data Next: Mashing Linux and Windows ContainersCloud+Data Next: Mashing Linux and Windows Containers
Cloud+Data Next: Mashing Linux and Windows Containers
 
Install Concourse CI with BOSH
Install Concourse CI with BOSHInstall Concourse CI with BOSH
Install Concourse CI with BOSH
 
Modernizing Traditional Apps with Docker Enterprise Edition
Modernizing Traditional Apps with Docker Enterprise EditionModernizing Traditional Apps with Docker Enterprise Edition
Modernizing Traditional Apps with Docker Enterprise Edition
 
#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with Docker#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with Docker
 
Automated android testing using jenkins ci
Automated android testing using jenkins ciAutomated android testing using jenkins ci
Automated android testing using jenkins ci
 

Semelhante a Making a small QA system with Docker

Docker, a new LINUX container technology based light weight virtualization
Docker, a new LINUX container technology based light weight virtualizationDocker, a new LINUX container technology based light weight virtualization
Docker, a new LINUX container technology based light weight virtualization
Suresh Balla
 

Semelhante a Making a small QA system with Docker (20)

DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2
 
Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
Docker for developers on mac and windows
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windows
 
Codefresh + Cloud 66 webinar: Testing Strategies for Docker Driven Development
Codefresh + Cloud 66 webinar: Testing Strategies for Docker Driven DevelopmentCodefresh + Cloud 66 webinar: Testing Strategies for Docker Driven Development
Codefresh + Cloud 66 webinar: Testing Strategies for Docker Driven Development
 
Up and running with docker
Up and running with dockerUp and running with docker
Up and running with docker
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
 
Docker Starter Pack
Docker Starter PackDocker Starter Pack
Docker Starter Pack
 
Moving to Containers: Building with Docker and Amazon ECS - CON310 - re:Inven...
Moving to Containers: Building with Docker and Amazon ECS - CON310 - re:Inven...Moving to Containers: Building with Docker and Amazon ECS - CON310 - re:Inven...
Moving to Containers: Building with Docker and Amazon ECS - CON310 - re:Inven...
 
Continuous Delivery with Docker and Amazon ECS
Continuous Delivery with Docker and Amazon ECSContinuous Delivery with Docker and Amazon ECS
Continuous Delivery with Docker and Amazon ECS
 
Docker, a new LINUX container technology based light weight virtualization
Docker, a new LINUX container technology based light weight virtualizationDocker, a new LINUX container technology based light weight virtualization
Docker, a new LINUX container technology based light weight virtualization
 
Excelian hyperledger walkthrough-feb17
Excelian hyperledger walkthrough-feb17Excelian hyperledger walkthrough-feb17
Excelian hyperledger walkthrough-feb17
 
Ruby on Rails and Docker - Why should I care?
Ruby on Rails and Docker - Why should I care?Ruby on Rails and Docker - Why should I care?
Ruby on Rails and Docker - Why should I care?
 
Containers as a Service with Docker
Containers as a Service with DockerContainers as a Service with Docker
Containers as a Service with Docker
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016
 
0507 057 01 98 * Adana Klima Tamir Servisi
0507 057 01 98 * Adana Klima Tamir Servisi0507 057 01 98 * Adana Klima Tamir Servisi
0507 057 01 98 * Adana Klima Tamir Servisi
 
Amazon Web Services and Docker: from developing to production
Amazon Web Services and Docker: from developing to productionAmazon Web Services and Docker: from developing to production
Amazon Web Services and Docker: from developing to production
 
Docker for developers z java
Docker for developers z javaDocker for developers z java
Docker for developers z java
 

Último

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

Making a small QA system with Docker

  • 1. Making a small QA system with docker ainoya
  • 2. About me 相野谷 直樹 Ainoya Naoki Web engineer ainoya naokiainoya
  • 4. QA: Quality Assurance of web applications How do you set up a environment for QA ? (involves a human going through test cases)
  • 5. How to set up QA environment • ngrok • expose local environment through proxy • docker machine • deploy conteiners to public environment • docker + hipache proxy etc..
  • 6. Run multiple QA environments simultaneously Perform QA each feature branches feature-A feature-B feature-C
  • 7. Solution: run containers each feature branches Access a container with using a URL contains branch name Running a container on demand http://feature-A.app.dev http://feature-B.app.dev http://feature-C.app.dev
  • 8.
  • 9.
  • 10. DEMO NOTE: prevs.io is still under WIP :-)
  • 11. Movie
  • 12.
  • 13. prevs.io provides a simple QA system for web apps With using docker container, it can provide a QA system fast, easily, simply
  • 14. But it has a limitation: It's limited to only 1 container each feature branches http://feature-A.app.dev http://feature-B.app.dev http://feature-C.app.dev App App App docker container
  • 15. Limitation: Actual case: A general web app is composed of multiple services ( API, DB etc..) http://feature-A.app.dev http://feature-B.app.dev http://feature-C.app.dev App DB API-2 API-1
  • 16. Solution: add integration with docker-compose Base OSS project: http://github.com/mookjp/pool Run multiple containers each feature branches http://feature-A.app.dev http://feature-B.app.dev http://feature-C.app.dev App App App DB DB DB docker-compose
  • 18. app.py from  flask  import  Flask   from  redis  import  Redis   import  os   app  =  Flask(__name__)   redis  =  Redis(host='redis',  port=6379)   @app.route('/')   def  hello():          redis.incr('hits')          return  'Hello  World!  I  have  been  seen  %s  times.'  %   redis.get('hits')   if  __name__  ==  "__main__":          app.run(host="0.0.0.0",  port=80,  debug=True)   Ref: https://docs.docker.com/compose/
  • 19. docker-compose.yml(.erb) web:      environment:          GIT_COMMIT:  "<%=  @git_commit_id  %>"      build:  .      ports:        -­‐  "80"      links:        -­‐  redis   redis:      image:  redis  
  • 20. DEMOhttps://github.com/ainoya/pool/tree/docker-compose Set up QA environment each "master", "development" branches Python web app counts up visit times http://master.pool.dev Redis stores visit timeslink Python web app counts up visit times http://development.pool.dev Redis stores visit timeslink
  • 21. Movie
  • 22. Future plan • Support efficient pattern shares some resources (DB, etc...) between same applications • More integration with other solutions
 ECS, GKE/k8s,… • Integrate with docker registry 2.0 system