SlideShare a Scribd company logo
1 of 30
Download to read offline
Using Concourse in Production
- Lessons Learned -
Shingo Omura(@everpeace)
omura@chatwork.com
ChatWork, Inc.
Concourse Meetup #5 2017/03/13
© ChatWork All rights reserved.© ChatWork All rights reserved.
Outline
● About ChatWork
● Our Context From the Point of View of Infrastructure
● Our Use Case
● Good parts
● Pipeline Tips
● Small Bad parts (expect to improve)
2
© ChatWork All rights reserved.
Group Chat File Sharing
Task Management Video Conference
About ChatWork ~Group Chat for Global Teams~
3
© ChatWork All rights reserved.
ChatWork is growing rapidly
● 127,000 organizations
○ number of users is not opened
● 205 countries or regions
● 6 languages supported
as of 2017/02
4
Our Context
From the Point of View
of Infrastructure
© ChatWork All rights reserved.
New Infrastracture Project (1/2)
● Current Infra
○ EC2 based apps, deploy servers(for capistorano)
○ Jenkins servers for CI/CD
● Pain points
○ Ops team doesn’t scale
■ release always have to be done with Infra team members
○ AWS env and Jenkins are hard to sandboxing
■ part of aws resouces are managed by terraform, but not all
■ deployment flow is hard to develop and testing
6
© ChatWork All rights reserved.
New Infrastracture Project (2/2)
● Next Infra
○ Kubernetes and Helm with Dockerized apps
○ Concourse CI for CI/CD
● Benefits
○ Kubernetes accelarate DevOps
■ App team can fully manage their deployment cycle by themselves.
■ minikube is really helpful for local dev environemnt.
■ kubernetes team can focus on reliability of Kuberentes.
○ Concourse CI does too! ← Today’s Focus
■ reduces operational load
■ helps agile development of deployment/testing process
● Status
○ Using from new messaging backend (released the last december)
○ Current system is planned to migrate to this next infra
7
Our Use Case
© ChatWork All rights reserved.
Overview of deployment system
● Concourse is deployed by concourse-aws
○ maintained by @mumoshu (my-colleague) and @everpeace (me)
● Branching model is Gitlab flow with Environment Branches
● chatwork-notify-resource for notification
staging
branch
staging environment
production environment
master branch
push
im
age
build and deploy helm package
build and deploy helm packagepush image
pull image
pull image
notify
9
© ChatWork All rights reserved.
Our build pipeline environment can be
split by ‘groups’
notification resource
10
© ChatWork All rights reserved.
Our build pipeline
test&build jobs
deploy jobs
rollback jobs
11
Good Parts Learned
© ChatWork All rights reserved.
Good Parts
● concourse.ci is extemely well-documented
○ You can start trying concourse in 5 min.
■ virtualbox and vagrant: just ‘vagrant up’!!
■ docker-compose support!!
○ easty to write pipelines thanks to comrehensive reference
● easy to deploy & version up (thanks to concourse-aws :-P )
○ initial deploy: 3 steps
■ ‘build-amis.sh’ → edit ‘cluster.yml’ → ‘concourse-aws up’
○ version up: similar 3 steps
■ ‘build-amis.sh’(new version) → edit ‘cluster.yml’(new ami) →
‘concourse-aws up’
13
© ChatWork All rights reserved.
Good Parts (cont.)
● Concourse frees us from ”plugin hell”
○ all resource is provided by docker image
○ task environment can be injected by docker image too
○ no need to manage backups of CI servers!!
● Multi tenancy ‘team’ support
■ multiple team can share CI server resources
■ but isolated appropriately
■ each app team can have controll in their team
● Various authentication scheme support
■ concourse need not to have user database
■ we use github authentication
14
© ChatWork All rights reserved.
● easy to develop pipelines
○ Pipeline developed & tested in local env can be deployed directly
to production concourse
■ Concourse CI’s pipeline is stateless and reproductive
■ Concourse & Kubernetes both supports local env (minikube & concourse
vagrant box)
Good Parts (cont.)
15
© ChatWork All rights reserved.
Good Parts (cont.)
● easy to extend/custom
○ easy to develop custom resource.
■ you only need to develop 3 commands(check, in, out) whose returns json
objects.
■ language agnostic! you can choose your own language!!
○ easy to prepare task environment
■ when you need some task environment in which some toolkit is installed, you
just push docker image to any repository and specify the image to your task
definition
task.yml
---
platform: linux
image_resource:
type: docker-image
source:
repository: /yourown/image
tag: '1.1'
16
Pipeline tips Learned
© ChatWork All rights reserved.
Pipeline tips: summary
● Use groups for large pipeline
● Use aggregate for running in parallel (useful for resources)
● Use “[ci skip]” keyword to commit message when
Concourse commits/push to git repo
● on_success/on_failure hook is useful for notification
● input_mapping/output_mapping is useful for shared
task definition
● use attempts for deployment task due to intermittent
network failure
● @making’s trick is helpful for build caches(sbt, ivy, maven)
18
© ChatWork All rights reserved.
Pipeline Tips
● Use groups for large pipeline to group many jobs
● Use aggregate for multiple resources (useful for resources)
pipeline.yml
groups:
- name: master
jobs:
- job-for-master
- name: production
jobs:
- job-for-production
pipeline.yml
plan:
- aggregate:
- get: app-repo
trigger: true
- get: tool-repo
- get: sbt-ivy-cache
those 3 get runs in parallel
19
© ChatWork All rights reserved.
Pipeline Tips
● Use “[ci skip]” keyword to commit message when
Concourse commits/push to git repo
○ git resource skip commits with [ci skip] keywords
○ It’s really useful when
■ back merge: “merging release branch to develop branch”
● the commit is wanted to skip CI process
■ the commit bumping versions
● when using sbt, version number is embedded to repo
20
© ChatWork All rights reserved.
● on_success/on_failure hook is useful for notification
Pipeline Tips
pipeline.yml
- task: deploy-write-api-to-dev-kube
file: foo/task.yml
on_success:
task: chatwork-notification
file: tasks/notify_chatwork.yml
on_failure:
task: chatwork-notification
file: tasks/notify_chatwork.yml
on_failure
on_success
21
© ChatWork All rights reserved.
● input_mapping/output_mapping is useful for shared
task definition
Pipeline Tips
pipeline.yml
- task: test-pull-request
file: pull-request/ci/tasks/unit.yml
input_mapping: { repo: pull-request }
- task: unit
file: master/ci/tasks/unit.yml
input_mapping: { repo: master }
ci/tasks/unit.yml
---
platform: linux
image_resource:
type: docker-image
source:
repository: yourown/toolbox
inputs:
- name: repo
run:
path: /bin/bash
args:
- repo/ci/tasks/unit.sh
22
© ChatWork All rights reserved.
● use attempts for deployment task due to intermittent
network failure
Pipeline Tips
pipeline.yml
...
- task: deploy-write-api-to-dev-kube
file: ..snip../deploy-to-kube-helm.yml
attempts: {{attempts}}
attempts=3
23
© ChatWork All rights reserved.
● @making’s trick is helpful for build caches(sbt, ivy, maven)
○ prepare own cache docker image repo (anywhere)
○ archives cache files as rootfs.tar and push it directly to
the image repo
○ related issue is now open:
Caching directories between runs of a task #230
Pipeline Tips
24
Small Bad Parts
(expect to improve)
© ChatWork All rights reserved.
Small Bad Parts (expect to improve)
● No fine-grained authorization
(No role based aaccess control)
○ every team member can take full controll in the team
○ ‘fly get-pipeline’ exposes all creadentials embedded in pipelines
○ We sometime want to split
■ people who can write/read pipeline
■ people who can just view logs and trigger jobs
(no rights to change pipelines but can just operate the pipeline)
○ related issues are open
■ Credential management #19
■ Individual/fine-grained access control #23
26
© ChatWork All rights reserved.
Small Bad Parts (expect to improve)(cont.)
● No parameterized job
○ we would like to deploy specific feature branch to shared dev
environment
○ How could do this with Concourse?? Any Idea??
○ git-multibranch-resource could achive similar thing
■ branch name convention which will be deployed to shared dev env should be
agreed
○ Perhaps `fly exec` prompts user input?
27
© ChatWork All rights reserved.
Small Bad Parts (expect to improve)(cont.)
● No Docker Compose in task
○ the issue is now open:
Docker Compose support in Task definitions #324
■ integration test task with app & local db containers
● FYI: various improvements are disscued in
https://github.com/concourse/design-notes/issues
28
Thank you for Listening!!
We’re Hiring!!!
Search “ChatWork” in Wantedly
https://www.wantedly.com/companies/chatwork/projects

More Related Content

What's hot

Virtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management servicesVirtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management servicesabhishek chawla
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introductionDongwon Kim
 
DevOps Transformation: Learnings and Best Practices
DevOps Transformation: Learnings and Best PracticesDevOps Transformation: Learnings and Best Practices
DevOps Transformation: Learnings and Best PracticesQBurst
 
Is Platform Engineering the new Ops?
Is Platform Engineering the new Ops?Is Platform Engineering the new Ops?
Is Platform Engineering the new Ops?AWS Germany
 
Software prototyping
Software prototypingSoftware prototyping
Software prototypingBirju Tank
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a DockerfileKnoldus Inc.
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideBytemark
 
Kubernetes Installation on Ubuntu | Edureka
Kubernetes Installation on Ubuntu | EdurekaKubernetes Installation on Ubuntu | Edureka
Kubernetes Installation on Ubuntu | EdurekaEdureka!
 
Building Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfBuilding Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfJavier Turégano Molina
 
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkRed Hat Developers
 
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...Edureka!
 
Zero downtime deployment of micro-services with Kubernetes
Zero downtime deployment of micro-services with KubernetesZero downtime deployment of micro-services with Kubernetes
Zero downtime deployment of micro-services with KubernetesWojciech Barczyński
 
Whitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsWhitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsYura Nosenko
 
Terraform in deployment pipeline
Terraform in deployment pipelineTerraform in deployment pipeline
Terraform in deployment pipelineAnton Babenko
 
SpringBoot 3 Observability
SpringBoot 3 ObservabilitySpringBoot 3 Observability
SpringBoot 3 ObservabilityKnoldus Inc.
 
YAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareYAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareCodeOps Technologies LLP
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICDKnoldus Inc.
 

What's hot (20)

Virtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management servicesVirtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management services
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 
DevOps Transformation: Learnings and Best Practices
DevOps Transformation: Learnings and Best PracticesDevOps Transformation: Learnings and Best Practices
DevOps Transformation: Learnings and Best Practices
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
Is Platform Engineering the new Ops?
Is Platform Engineering the new Ops?Is Platform Engineering the new Ops?
Is Platform Engineering the new Ops?
 
Software prototyping
Software prototypingSoftware prototyping
Software prototyping
 
How to write a Dockerfile
How to write a DockerfileHow to write a Dockerfile
How to write a Dockerfile
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory Guide
 
Kubernetes Installation on Ubuntu | Edureka
Kubernetes Installation on Ubuntu | EdurekaKubernetes Installation on Ubuntu | Edureka
Kubernetes Installation on Ubuntu | Edureka
 
Building Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfBuilding Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdf
 
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech TalkArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
ArgoCD and Tekton: Match made in Kubernetes heaven | DevNation Tech Talk
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
 
Zero downtime deployment of micro-services with Kubernetes
Zero downtime deployment of micro-services with KubernetesZero downtime deployment of micro-services with Kubernetes
Zero downtime deployment of micro-services with Kubernetes
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Whitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsWhitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applications
 
Terraform in deployment pipeline
Terraform in deployment pipelineTerraform in deployment pipeline
Terraform in deployment pipeline
 
SpringBoot 3 Observability
SpringBoot 3 ObservabilitySpringBoot 3 Observability
SpringBoot 3 Observability
 
YAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra KhareYAML Tips For Kubernetes by Neependra Khare
YAML Tips For Kubernetes by Neependra Khare
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 

Similar to Lessons Learned: Using Concourse In Production

LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLinaro
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
Why kernelspace sucks?
Why kernelspace sucks?Why kernelspace sucks?
Why kernelspace sucks?OpenFest team
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with serverEugene Yokota
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Eugene Yokota
 
OpenDataPlane Testing in Travis
OpenDataPlane Testing in TravisOpenDataPlane Testing in Travis
OpenDataPlane Testing in TravisDmitry Baryshkov
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsGR8Conf
 
Leveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVLeveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVOpersys inc.
 
Parallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-ModeParallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-ModeAkihiro Suda
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainŁukasz Piątkowski
 
Deep dive - Concourse CI/CD and Pipelines
Deep dive  - Concourse CI/CD and PipelinesDeep dive  - Concourse CI/CD and Pipelines
Deep dive - Concourse CI/CD and PipelinesSyed Imam
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned RightScale
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VIOpersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VOpersys inc.
 
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Ambassador Labs
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205Linaro
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftYaniv cohen
 

Similar to Lessons Learned: Using Concourse In Production (20)

LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Why kernelspace sucks?
Why kernelspace sucks?Why kernelspace sucks?
Why kernelspace sucks?
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
 
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)Road to sbt 1.0: Paved with server (2015 Amsterdam)
Road to sbt 1.0: Paved with server (2015 Amsterdam)
 
OpenDataPlane Testing in Travis
OpenDataPlane Testing in TravisOpenDataPlane Testing in Travis
OpenDataPlane Testing in Travis
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
Leveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVLeveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IV
 
Parallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-ModeParallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-Mode
 
HPC on OpenStack
HPC on OpenStackHPC on OpenStack
HPC on OpenStack
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform Gain
 
Deep dive - Concourse CI/CD and Pipelines
Deep dive  - Concourse CI/CD and PipelinesDeep dive  - Concourse CI/CD and Pipelines
Deep dive - Concourse CI/CD and Pipelines
 
Ci for android OS
Ci for android OSCi for android OS
Ci for android OS
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon V
 
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
 
LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205LMG Lightning Talks - SFO17-205
LMG Lightning Talks - SFO17-205
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShift
 

Recently uploaded

Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 

Recently uploaded (20)

Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 

Lessons Learned: Using Concourse In Production

  • 1. Using Concourse in Production - Lessons Learned - Shingo Omura(@everpeace) omura@chatwork.com ChatWork, Inc. Concourse Meetup #5 2017/03/13
  • 2. © ChatWork All rights reserved.© ChatWork All rights reserved. Outline ● About ChatWork ● Our Context From the Point of View of Infrastructure ● Our Use Case ● Good parts ● Pipeline Tips ● Small Bad parts (expect to improve) 2
  • 3. © ChatWork All rights reserved. Group Chat File Sharing Task Management Video Conference About ChatWork ~Group Chat for Global Teams~ 3
  • 4. © ChatWork All rights reserved. ChatWork is growing rapidly ● 127,000 organizations ○ number of users is not opened ● 205 countries or regions ● 6 languages supported as of 2017/02 4
  • 5. Our Context From the Point of View of Infrastructure
  • 6. © ChatWork All rights reserved. New Infrastracture Project (1/2) ● Current Infra ○ EC2 based apps, deploy servers(for capistorano) ○ Jenkins servers for CI/CD ● Pain points ○ Ops team doesn’t scale ■ release always have to be done with Infra team members ○ AWS env and Jenkins are hard to sandboxing ■ part of aws resouces are managed by terraform, but not all ■ deployment flow is hard to develop and testing 6
  • 7. © ChatWork All rights reserved. New Infrastracture Project (2/2) ● Next Infra ○ Kubernetes and Helm with Dockerized apps ○ Concourse CI for CI/CD ● Benefits ○ Kubernetes accelarate DevOps ■ App team can fully manage their deployment cycle by themselves. ■ minikube is really helpful for local dev environemnt. ■ kubernetes team can focus on reliability of Kuberentes. ○ Concourse CI does too! ← Today’s Focus ■ reduces operational load ■ helps agile development of deployment/testing process ● Status ○ Using from new messaging backend (released the last december) ○ Current system is planned to migrate to this next infra 7
  • 9. © ChatWork All rights reserved. Overview of deployment system ● Concourse is deployed by concourse-aws ○ maintained by @mumoshu (my-colleague) and @everpeace (me) ● Branching model is Gitlab flow with Environment Branches ● chatwork-notify-resource for notification staging branch staging environment production environment master branch push im age build and deploy helm package build and deploy helm packagepush image pull image pull image notify 9
  • 10. © ChatWork All rights reserved. Our build pipeline environment can be split by ‘groups’ notification resource 10
  • 11. © ChatWork All rights reserved. Our build pipeline test&build jobs deploy jobs rollback jobs 11
  • 13. © ChatWork All rights reserved. Good Parts ● concourse.ci is extemely well-documented ○ You can start trying concourse in 5 min. ■ virtualbox and vagrant: just ‘vagrant up’!! ■ docker-compose support!! ○ easty to write pipelines thanks to comrehensive reference ● easy to deploy & version up (thanks to concourse-aws :-P ) ○ initial deploy: 3 steps ■ ‘build-amis.sh’ → edit ‘cluster.yml’ → ‘concourse-aws up’ ○ version up: similar 3 steps ■ ‘build-amis.sh’(new version) → edit ‘cluster.yml’(new ami) → ‘concourse-aws up’ 13
  • 14. © ChatWork All rights reserved. Good Parts (cont.) ● Concourse frees us from ”plugin hell” ○ all resource is provided by docker image ○ task environment can be injected by docker image too ○ no need to manage backups of CI servers!! ● Multi tenancy ‘team’ support ■ multiple team can share CI server resources ■ but isolated appropriately ■ each app team can have controll in their team ● Various authentication scheme support ■ concourse need not to have user database ■ we use github authentication 14
  • 15. © ChatWork All rights reserved. ● easy to develop pipelines ○ Pipeline developed & tested in local env can be deployed directly to production concourse ■ Concourse CI’s pipeline is stateless and reproductive ■ Concourse & Kubernetes both supports local env (minikube & concourse vagrant box) Good Parts (cont.) 15
  • 16. © ChatWork All rights reserved. Good Parts (cont.) ● easy to extend/custom ○ easy to develop custom resource. ■ you only need to develop 3 commands(check, in, out) whose returns json objects. ■ language agnostic! you can choose your own language!! ○ easy to prepare task environment ■ when you need some task environment in which some toolkit is installed, you just push docker image to any repository and specify the image to your task definition task.yml --- platform: linux image_resource: type: docker-image source: repository: /yourown/image tag: '1.1' 16
  • 18. © ChatWork All rights reserved. Pipeline tips: summary ● Use groups for large pipeline ● Use aggregate for running in parallel (useful for resources) ● Use “[ci skip]” keyword to commit message when Concourse commits/push to git repo ● on_success/on_failure hook is useful for notification ● input_mapping/output_mapping is useful for shared task definition ● use attempts for deployment task due to intermittent network failure ● @making’s trick is helpful for build caches(sbt, ivy, maven) 18
  • 19. © ChatWork All rights reserved. Pipeline Tips ● Use groups for large pipeline to group many jobs ● Use aggregate for multiple resources (useful for resources) pipeline.yml groups: - name: master jobs: - job-for-master - name: production jobs: - job-for-production pipeline.yml plan: - aggregate: - get: app-repo trigger: true - get: tool-repo - get: sbt-ivy-cache those 3 get runs in parallel 19
  • 20. © ChatWork All rights reserved. Pipeline Tips ● Use “[ci skip]” keyword to commit message when Concourse commits/push to git repo ○ git resource skip commits with [ci skip] keywords ○ It’s really useful when ■ back merge: “merging release branch to develop branch” ● the commit is wanted to skip CI process ■ the commit bumping versions ● when using sbt, version number is embedded to repo 20
  • 21. © ChatWork All rights reserved. ● on_success/on_failure hook is useful for notification Pipeline Tips pipeline.yml - task: deploy-write-api-to-dev-kube file: foo/task.yml on_success: task: chatwork-notification file: tasks/notify_chatwork.yml on_failure: task: chatwork-notification file: tasks/notify_chatwork.yml on_failure on_success 21
  • 22. © ChatWork All rights reserved. ● input_mapping/output_mapping is useful for shared task definition Pipeline Tips pipeline.yml - task: test-pull-request file: pull-request/ci/tasks/unit.yml input_mapping: { repo: pull-request } - task: unit file: master/ci/tasks/unit.yml input_mapping: { repo: master } ci/tasks/unit.yml --- platform: linux image_resource: type: docker-image source: repository: yourown/toolbox inputs: - name: repo run: path: /bin/bash args: - repo/ci/tasks/unit.sh 22
  • 23. © ChatWork All rights reserved. ● use attempts for deployment task due to intermittent network failure Pipeline Tips pipeline.yml ... - task: deploy-write-api-to-dev-kube file: ..snip../deploy-to-kube-helm.yml attempts: {{attempts}} attempts=3 23
  • 24. © ChatWork All rights reserved. ● @making’s trick is helpful for build caches(sbt, ivy, maven) ○ prepare own cache docker image repo (anywhere) ○ archives cache files as rootfs.tar and push it directly to the image repo ○ related issue is now open: Caching directories between runs of a task #230 Pipeline Tips 24
  • 25. Small Bad Parts (expect to improve)
  • 26. © ChatWork All rights reserved. Small Bad Parts (expect to improve) ● No fine-grained authorization (No role based aaccess control) ○ every team member can take full controll in the team ○ ‘fly get-pipeline’ exposes all creadentials embedded in pipelines ○ We sometime want to split ■ people who can write/read pipeline ■ people who can just view logs and trigger jobs (no rights to change pipelines but can just operate the pipeline) ○ related issues are open ■ Credential management #19 ■ Individual/fine-grained access control #23 26
  • 27. © ChatWork All rights reserved. Small Bad Parts (expect to improve)(cont.) ● No parameterized job ○ we would like to deploy specific feature branch to shared dev environment ○ How could do this with Concourse?? Any Idea?? ○ git-multibranch-resource could achive similar thing ■ branch name convention which will be deployed to shared dev env should be agreed ○ Perhaps `fly exec` prompts user input? 27
  • 28. © ChatWork All rights reserved. Small Bad Parts (expect to improve)(cont.) ● No Docker Compose in task ○ the issue is now open: Docker Compose support in Task definitions #324 ■ integration test task with app & local db containers ● FYI: various improvements are disscued in https://github.com/concourse/design-notes/issues 28
  • 29. Thank you for Listening!!
  • 30. We’re Hiring!!! Search “ChatWork” in Wantedly https://www.wantedly.com/companies/chatwork/projects