Ágiles 2016 - using open source tools to support continuous delivery

78
Using open source tools to support Continuous Delivery Stefan Teixeira @stefan_teixeira [email protected] stefanteixeira.com.br stefanteixeira.com

Upload: stefan-teixeira

Post on 10-Feb-2017

389 views

Category:

Software


1 download

TRANSCRIPT

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

Using open source tools to support

Continuous DeliveryStefan Teixeira

@stefan_teixeira [email protected] stefanteixeira.com.br

stefanteixeira.com

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

• QA Automation Engineer @ Toptal • Tech blogs: stefanteixeira.com.br (pt-br) /

stefanteixeira.com (en)

Contact: • E-mail: [email protected] • Twitter: twitter.com/stefan_teixeira • LinkedIn: linkedin.com/in/stefanteixeira • GitHub: github.com/stefanteixeira • SlideShare: slideshare.net/stefanteixeira

About

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

Context

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

Context

• Java application (Spring Boot)

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

Context

• Java application (Spring Boot)

• Server-side only

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

Context

• Java application (Spring Boot)

• Server-side only

• Integrations with other internal applications

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

Modeling Pipelines

Page 8: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 9: Ágiles 2016 - Using open source tools to support Continuous Delivery

GoCD

• Created by ThoughtWorks

https://www.go.cd/ | https://github.com/gocd/gocd

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

GoCD

• Created by ThoughtWorks

• Open-source (since February 2014)

https://www.go.cd/ | https://github.com/gocd/gocd

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

GoCD

• Created by ThoughtWorks

• Open-source (since February 2014)

• Focused on Continuous Delivery

https://www.go.cd/ | https://github.com/gocd/gocd

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

The power of the right abstractions

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

Pipelines are first-class citizens

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

But why not use Jenkins?

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

Some Jenkins issues

• Plugin hell

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

Some Jenkins issues

• Plugin hell

• Lack of more abstraction levels

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

Some Jenkins issues

• Plugin hell

• Lack of more abstraction levels

• CD support only via plugins

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

https://www.thoughtworks.com/pt/radar/tools/jenkins-as-a-deployment-pipeline

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

Deployment Pipeline

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

Deployment Pipeline

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

Manual steps

Page 22: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 23: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 24: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 25: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 26: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 27: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 28: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 29: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 30: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 31: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 32: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 33: Ágiles 2016 - Using open source tools to support Continuous Delivery

docker-tag

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

docker-tag

docker-push

Page 35: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 36: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 37: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 38: Ágiles 2016 - Using open source tools to support Continuous Delivery

Mutators example (PIT)

Page 39: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 40: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 41: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 42: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 43: Ágiles 2016 - Using open source tools to support Continuous Delivery

X

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

App 1

App 2

App 2 Simulator

X

Page 45: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 46: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 47: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 48: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 49: Ágiles 2016 - Using open source tools to support Continuous Delivery

X

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

App 1

App 2

Simulator App 2X

Page 51: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 52: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 53: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 54: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 55: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 56: Ágiles 2016 - Using open source tools to support Continuous Delivery

SSH

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

SSH

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

App 1

SSH

Page 59: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 60: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 61: Ágiles 2016 - Using open source tools to support Continuous Delivery

App 1

App 2

App 3

App 4

Page 62: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 63: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 64: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 65: Ágiles 2016 - Using open source tools to support Continuous Delivery

SSH

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

SSH

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

SSH

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

SSH

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

SSH

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

SSH

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

https://github.com/cyberdyne-corp/skynet/tree/poc-bluegreen-nginx

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

https://github.com/cyberdyne-corp/skynet/tree/poc-bluegreen

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

Other tools

Page 74: Ágiles 2016 - Using open source tools to support Continuous Delivery
Page 75: Ágiles 2016 - Using open source tools to support Continuous Delivery

http://locust.io/

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

https://github.com/dashing-io/dashing

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

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/

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

Thanks!

Stefan Teixeira @stefan_teixeira

[email protected] stefanteixeira.com.br

stefanteixeira.com