Automate all the things!
How continuous delivery can save your sanity

Attila-Mihály Balázs

 Talk agenda

  • My religion
  • Why automate
  • A real life workflow
  • Tools to automate with
  • Demo
  • Q&A

 My “religion”

  • Worked in VB, VB.NET, PHP, assembly, Perl, Java, Python

Good things:

  • Code review
  • TDD
  • Source control
  • Static Analysis
  • Agile/Lean
  • Infrastructure as code
  • DevOps

 Code review

 (an aside)

 Code review

 (srsly)

  • Are you doing it?
    • can be twice as effective in discovering issues than unittesting![code complete]
    • but it is slow and not repeatable (vs. unittesting)

  • Which kind of code review are you doing?
    • before integration
    • after integration
    • long after integration :-)

 Why automate?

  • Take out the boring out of development
  • Guarantee consistent results
  • Avoid human error
  • Speed up things (quicker iterations!)

 What can be automated?

 from a software production workflow

Requirements

Tests & Code

Review

Integration

Q&A

Deployment

 What can be automated

Requirements

Tests & Code

Review

Integration

Q&A

Deployment

Twice as much free time, half the stress!

 How does this work in real life?

Requirements

Create “workplace” (feature branch)

Run unittests

Integration

Q&A

Deployment

Write
Tests & Code

“Publish” code (commit & push)

Run code analysis

Code review

Staging

Does it hurt? Do it more often!

You can do it 10s of times every day without customers noticing!

(other than those who asked for the bugfix / new feature :-))

 Who helps us?

Jenkins

  • Continuous X server (build / integration / deploy)
  • You poke it, it does stuff

  • Poke: time elapsed, code committed, URL accessed, …

  • Alternatives: TeamCity, CruiseControl, Travis-CI

 Who helps us?

SonarQube

  • Quality inspection system

  • Alternatives: ??

 Who helps us?

GitHub

  • Holds our sourcecode, provides callbacks (“hooks”), codereview

  • Alternatives: BitBucket, Google Code, Gitorious, Gitlab, Rhodecode, Hosted TFS, gitweb, hgserv

    Gerrit, ReviewBoard, rietveld

 Who helps us?

Other tidbits

  • Machine running Linux
  • Apache as reverse proxy
  • mod_auth_openid

Demo

 Final tips

  • It can be hard - persist, it’s worth it (or come talk to me :-))
  • Parallelize as much as possible. Quick feedback is king!
  • Looking for command line utilities - google with Bing for “how to do X with PowerShell”
  • You can deliver other things too: install kits, virtual machines, etc
  • Look into feature switches

 Thank you! Questions?

Automate all the things - Google Slides