28
The Agile App Developer’s Guide to Success with DevOps Tooling or, “What on Earth was I thinking when I named this?”

The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Embed Size (px)

Citation preview

Page 1: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

The Agile App Developer’s

Guide to Success

with DevOps Tooling

or, “What on Earth was I thinking

when I named this?”

Page 2: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

About Me

Markus Silpala

@msilpala

[email protected]

Developer, Instructor, Coach, Architect,

DevOps Engineer

Software Maker

Page 3: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

How About You?

Page 4: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

The Agile App Developer’s

Guide to Success

with DevOps Tooling

Page 5: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Agile App Developer

Cross-functional and co-located

Pairing or tight collaboration

Test-Driven Development (TDD)

Lots of testing; likely no QA team

Fast, frequent builds

Separate ops group does deployments and admin

Page 6: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Working this way is AWESOME

Page 7: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Awesome ToolsVersion Control (often GitHub these days)

Automated testing frameworks

IDEs with refactoring and auto-completion

Continuous Integration (CI) servers

Build and dependency tools (kind-of awesome)

Easy, consistent workstation setup

Page 8: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Awesome Practices

Pairing (or maybe rapid fork-pull cycles)

Collective code ownership

TDD, BDD, and/or ATDD

User stories and customer collaboration

Frequent builds and/or releases

Page 9: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

The Agile App Developer’s

Guide to Success

with DevOps Tooling

Page 10: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Here comes DevOpsor,

Agile Infrastructure

Page 11: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Awesome Tools!

Version Control (usually GitHub)

Infrastructure automation (e.g. chef)

Clouds of API-driven virtual machines

Test automation frameworks (e.g. ChefSpec)

CI Servers

Dependency-management tools (e.g. berkshelf)

Page 12: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Awesome Practices!

Pairing? Frequent fork-pull cycles, at least

Collective Ownership – probably

Automated Builds

Continuous Integration – at least in some parts

Page 13: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

And yet...

Page 14: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

After going agile, no one ever asks for their requirements or testing silos back.

Yet I have seen two very capable teams ask for their ops silos.

Other colleagues have shares similar stories with me.

“After a while, the Java devs don’t want anything to do with Chef.”

Page 15: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Why?

Immature tooling (relatively)

Unfamiliar skill areas for a lot of app devs

Much slower build automation

More complex interactions across components.

Uncomfortable time requirements (i.e. on call)

Page 16: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

The Agile App Developer’s

Guide to Success

with DevOps Tooling

Page 17: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Unfamiliar tool space

Linux: RHEL vs CentOS vs Ubuntu vs Debian

Networking: DNS, TCP, UDP, interfaces, ports, routes

Installation: source vs binary tarball vs package

Services, processes, logging, CPU, RAM

SSH, tunnels, private/public keys

Page 18: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Unfamiliar tool space

Embed an ops person on the dev team

Find some devs who do know these things

Train or mentor the devs that you have

Page 19: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Workstations hard to set up consistently

Document the exact steps used to set up a dev machine.

Keep those docs up to date!

Better: automate the setup.

Page 20: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Hard to test infra

ChefSpec (if you're using Chef)

ServerSpec

Test Kitchen

bats

Self-testing builds

Page 21: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Long feedback loops

http://xkcd.com/303/

Page 22: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Long feedback loops

Use ChefSpec and vagrant for local testing

Use a local repository for any installation binaries

Pre-build VM images with base installations in place

Use a container system such as Docker

Page 23: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Dependencies are harder

Try Puppet instead

Try Ansible instead (python + ssh)

Page 24: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Devs just want to code

Ops proficiency is the new testing

Ensure they have the help (and time) they need to succeed in the infra space

Embed an ops person on the dev team

At least make sure they know each other's pain

Page 25: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

These waters are still being charted

Page 26: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Questions?

Markus Silpala @msilpala [email protected]

Page 27: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Mini-RetrospectiveHow good a use of your hour was this session?

(5) Best use of the last hour that I can think of

(4) Highly valuable use of my time

(3) Valuable

(2) Meh

(1) I wish I had left early

Page 28: The Agile App Developer’s Guide to Success with …agileindy.org/wp-content/uploads/2015/01/AgileIndy-2015-AADGSDOT.pdfGuide to Success with DevOps Tooling or, ... likely no QA team

Thank You!

Markus Silpala @msilpala [email protected]