Using open source
tools to support
Continuous Delivery
Stefan Teixeira
@stefan_teixeira
stefanfk@gmail.com
stefanteixeira.com.br
stefanteixeira.com
• QA Automation Engineer @ Toptal
• Tech blogs: stefanteixeira.com.br (pt-br) /
stefanteixeira.com (en)
Contact:
• E-mail: stefanfk@gmail.com
• Twitter: twitter.com/stefan_teixeira
• LinkedIn: linkedin.com/in/stefanteixeira
• GitHub: github.com/stefanteixeira
• SlideShare: slideshare.net/stefanteixeira
About
Context
Context
• Java application (Spring Boot)
Context
• Java application (Spring Boot)
• Server-side only
Context
• Java application (Spring Boot)
• Server-side only
• Integrations with other internal
applications
Modeling
Pipelines
GoCD
• Created by ThoughtWorks
https://www.go.cd/ | https://github.com/gocd/gocd
GoCD
• Created by ThoughtWorks
• Open-source (since February 2014)
https://www.go.cd/ | https://github.com/gocd/gocd
GoCD
• Created by ThoughtWorks
• Open-source (since February 2014)
• Focused on Continuous Delivery
https://www.go.cd/ | https://github.com/gocd/gocd
The power of the right abstractions
Pipelines are first-class citizens
But why not use Jenkins?
Some Jenkins issues
• Plugin hell
Some Jenkins issues
• Plugin hell
• Lack of more abstraction levels
Some Jenkins issues
• Plugin hell
• Lack of more abstraction levels
• CD support only via plugins
https://www.thoughtworks.com/pt/radar/tools/jenkins-as-a-deployment-pipeline
Deployment
Pipeline
Deployment Pipeline
Manual steps
docker-tag
docker-tag
docker-push
Mutators example (PIT)
X
App 1
App 2
App 2 Simulator
X
X
App 1
App 2
Simulator App 2
X
SSH
SSH
App 1
SSH
App 1
App 2
App 3
App 4
SSH
SSH
SSH
SSH
SSH
SSH
https://github.com/cyberdyne-corp/skynet/tree/poc-bluegreen-nginx
https://github.com/cyberdyne-corp/skynet/tree/poc-bluegreen
Other tools
http://locust.io/
https://github.com/dashing-io/dashing
References
• Blue-Green deployment:
• https://technologyconversations.com/2015/07/02/scaling-to-infinity-with-docker-
swarm-docker-compose-and-consul-part-34-blue-green-deployment-automation-and-
self-healing-procedure/
• https://github.com/cyberdyne-corp/skynet/tree/poc-bluegreen-nginx
• https://github.com/cyberdyne-corp/skynet/tree/poc-bluegreen
• Tools:
• https://www.packer.io/
• https://www.go.cd/
• https://www.terraform.io/
• https://www.consul.io/
• https://www.ansible.com/
• http://gliderlabs.com/registrator/latest/
• http://pitest.org/
• http://rest-assured.io/
• http://sparkjava.com/
• http://locust.io/
Thanks!
Stefan Teixeira
@stefan_teixeira
stefanfk@gmail.com
stefanteixeira.com.br
stefanteixeira.com

Ágiles 2016 - Using open source tools to support Continuous Delivery