agile devops: environment automation

17
Agile DevOps: Environment Automation Ben Tomasini Software Developer, Agile Coach

Post on 14-Sep-2014

178 views

Category:

Technology


3 download

DESCRIPTION

Agile DevOps: Environment Automation with Ben Tomasini, Software Developer, Agile Coach

TRANSCRIPT

Page 1: Agile DevOps: Environment Automation

Agile DevOps: Environment AutomationBen TomasiniSoftware Developer, Agile Coach

Page 2: Agile DevOps: Environment Automation

First Principles

Our highest priority is to satisfy the customerthrough early and continuous deliveryof valuable software.

http://agilemanifesto.org

SoftwareSoftware

EnvironmentEnvironment

Page 3: Agile DevOps: Environment Automation

Necessary FocusDevelopers must also support the operational use of their software — a combination that’s become known as “devops.” This further motivates writing good code and testing it thoroughly. Developers’ personal stake in keeping the system running smoothly complements the engineering procedures and lets the system maintain quality at scale. Methodologies and tools aren’t enough by themselves because they can always be misused. Thus, a culture of personal responsibility is critical.

Kent Beck - Facebook - https://www.facebook.com/publications/514128035341603

Page 4: Agile DevOps: Environment Automation

Environmental Impediments•Ubiquitous in Agile initiatives

•Common impediment at stand-ups at this moment

•Unavailable environments

•Costly to spin up another test environment

• Inconsistent and stale configurations - system failures

•Communication barriers between development and operations

Page 5: Agile DevOps: Environment Automation

Agile Dev OpsContinuous DeliveryShort Cycle TimesFocus on Quality

Low Technical DebtIndividuals and Interactions

Delivery and maintenance of

the software product

AgileDelivery and

maintenance of the systems on

which the software product

runs

How can we apply Agile practices to both?

Page 6: Agile DevOps: Environment Automation

Complementary Delivery Pipelines

Page 7: Agile DevOps: Environment Automation

A Deeper Vertical Slice?

UIUI

Business LogicBusiness Logic

Data AccessData Access

Server EnvironmentServer Environment

<< User Stories

Page 8: Agile DevOps: Environment Automation

It’s all software now ...

•Virtualization has revolutionized system operations

•We have historically run our software on systems, now lets use software to build those systems

•Let’s apply known practices to both application development and system development

•Let’s develop our systems - using build automation, TDD, and CI

Page 9: Agile DevOps: Environment Automation

Three reasons why this won’t work :)

•Reason 1: System provisioning is much more variable than building software

•Reason 2: Systems are more heavyweight than software artifacts

•Reason 3: Doing this involves possibly unfamiliar tools and skills

• Operations write software? That’s for developers.

• Developers manage systems? That’s for operations.

Page 10: Agile DevOps: Environment Automation

Too variable ?

•Traditional system provisioning involves

•Many steps

•Specialized knowledge

•Manual input

•One solution: make provisioning deterministic

Page 11: Agile DevOps: Environment Automation

Deterministic Process

Inputs OutputsProcessProcess(closed (closed system)system)

The inputs guarantee the outputs

No “hidden” inputs

Only automate a deterministic system

Use tests to assert outputs

Page 12: Agile DevOps: Environment Automation

Opscode Chef

•Environment automation solution

•Cook up servers with recipes

•Free and Open Source

•Vibrant Community

• Influenced by Puppet, which was influenced by CFEngine

Page 13: Agile DevOps: Environment Automation

Too heavyweight ?

•Solution: lightweight virtualization tools

•Abstract away the hardware

•Command line integrates with build system

Page 14: Agile DevOps: Environment Automation

http://dev.devops1.solutionsiq.com

Page 15: Agile DevOps: Environment Automation

Too unfamiliar?

•Explore new areas:

•Developers - Learn sysamin stuff - bash, init.d scripts, managing public keys, vi instead of Eclipse

•System engineers - Dig into software development - Ruby, Java, TDD

•Embrace new tools

•Dev/Ops collaboration - pairing, post release retrospectives

Page 16: Agile DevOps: Environment Automation

Questions?

Page 17: Agile DevOps: Environment Automation

Thank You

Ben [email protected]

www.solutionsiq.com