maintainability of configuration management code

Post on 12-Apr-2017

143 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

/

Maintainability of Config Management Code

Why is Everything So Awful, and What Can We Do About it?

Clinton WolfeDevOps Practice Lead@clintoncwolfe

Part 1:

A Bit About Me

and My History

id clintoncwolfe

• Lead DevOps Consultant at OmniTI Computer

Consulting

• Config Management (CM) specialist in Chef

and Ansible

• Software Engineering wonk

• Perl web developer in a former life

Perl, huh?

• mod_perl developer 1996-

2011

• Projects start green, turn

brown, hard to maintain

• I became a proponent of

maintainability

Part 2: Maintain-a-what-ability?

The Push for Maintainability

TMTOWTDI

The Push for Maintainability

"Some ways are Better than Others"

The Push for Maintainability

"STOP DOING THAT. Use this instead"

Maintainawhat?

The ease with which a system

can be interacted with, over time,

in order to:

• diagnose problems

Maintainawhat?

The ease with which a system

can be interacted with, over time,

in order to:

• diagnose problems

• make repairs

Maintainawhat?

The ease with which a system

can be interacted with, over time,

in order to:

• diagnose problems

• make repairs

• cope with changes in

requirements

Maintainawhat?

The ease with which a system

can be interacted with, over time,

in order to:

• diagnose problems

• make repairs

• cope with changes in

requirements

• maximize useful life

That sounds straightforward!

Part 3: Some Factors Affecting

Maintainability in Application Software

Arbitrary vs Necessary Complexity

Arbitrary Necessary

Functionality vs Simplicity

Entropy / Bit Rot

Write vs Read

Turnover and Skill Variance

Yadda Yadda Yadda…

• lots of other things impact Application maintainability

• performance optimization

• rapidly changing feature requests

• languages, libraries, architectures go out of style

• But I won't get into that stuff

• It's hard

• No good answers

• Not as applicable to CM

Part 4:

So Now Let's Do That to the Servers

It's Easy!

"You don't have to know Ruby to use

Chef!"

It's Easy!

"You don't have to know Ruby to use

Chef!"LIES

Consequences, Schmonsequences

rm –rf –no-preserve-root {foo}/{bar}

Ops Background != Dev Background

Test Fixtures

CM isn't good for everything

Part 5: Free Advice

Comment : Why, not What

Pre-Flight

KISS on Variable Storage

Use a Linter

Write Tests. Have Tests.

Use Ephemeral Test Machines

Use a Development Kit

Use a Code Generator

Use Code Reviews to Level-Set

Burn It All Down

Really, Really Burn It All Down

Thanks!

@clintoncwolfe

ansibledk.com

omniti.com

Let's follow up in OpenSpaces!

top related