The Agile App Developer’s Guide to Success with...

Post on 03-Apr-2018

222 views 1 download

Transcript of The Agile App Developer’s Guide to Success with...

The Agile App Developer’s

Guide to Success

with DevOps Tooling

or, “What on Earth was I thinking

when I named this?”

About Me

Markus Silpala

@msilpala

markus@silpala.com

Developer, Instructor, Coach, Architect,

DevOps Engineer

Software Maker

How About You?

The Agile App Developer’s

Guide to Success

with DevOps Tooling

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

Working this way is AWESOME

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

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

The Agile App Developer’s

Guide to Success

with DevOps Tooling

Here comes DevOpsor,

Agile Infrastructure

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)

Awesome Practices!

Pairing? Frequent fork-pull cycles, at least

Collective Ownership – probably

Automated Builds

Continuous Integration – at least in some parts

And yet...

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.”

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)

The Agile App Developer’s

Guide to Success

with DevOps Tooling

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

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

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.

Hard to test infra

ChefSpec (if you're using Chef)

ServerSpec

Test Kitchen

bats

Self-testing builds

Long feedback loops

http://xkcd.com/303/

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

Dependencies are harder

Try Puppet instead

Try Ansible instead (python + ssh)

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

These waters are still being charted

Questions?

Markus Silpala @msilpala markus@silpala.com

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

Thank You!

Markus Silpala @msilpala markus@silpala.com