Maintainability of Configuration Management Code

40
/ Maintainability of Config Management Code Why is Everything So Awful, and What Can We Do About it? Clinton Wolfe DevOps Practice Lead @clintoncwolfe

Transcript of Maintainability of Configuration Management Code

Page 1: Maintainability of Configuration Management Code

/

Maintainability of Config Management Code

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

Clinton WolfeDevOps Practice Lead@clintoncwolfe

Page 2: Maintainability of Configuration Management Code

Part 1:

A Bit About Me

and My History

Page 3: Maintainability of Configuration Management Code

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

Page 4: Maintainability of Configuration Management Code

Perl, huh?

• mod_perl developer 1996-

2011

• Projects start green, turn

brown, hard to maintain

• I became a proponent of

maintainability

Page 5: Maintainability of Configuration Management Code

Part 2: Maintain-a-what-ability?

Page 6: Maintainability of Configuration Management Code

The Push for Maintainability

TMTOWTDI

Page 7: Maintainability of Configuration Management Code

The Push for Maintainability

"Some ways are Better than Others"

Page 8: Maintainability of Configuration Management Code

The Push for Maintainability

"STOP DOING THAT. Use this instead"

Page 9: Maintainability of Configuration Management Code

Maintainawhat?

The ease with which a system

can be interacted with, over time,

in order to:

• diagnose problems

Page 10: Maintainability of Configuration Management Code

Maintainawhat?

The ease with which a system

can be interacted with, over time,

in order to:

• diagnose problems

• make repairs

Page 11: Maintainability of Configuration Management Code

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

Page 12: Maintainability of Configuration Management Code

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

Page 13: Maintainability of Configuration Management Code

That sounds straightforward!

Page 14: Maintainability of Configuration Management Code

Part 3: Some Factors Affecting

Maintainability in Application Software

Page 15: Maintainability of Configuration Management Code

Arbitrary vs Necessary Complexity

Arbitrary Necessary

Page 16: Maintainability of Configuration Management Code

Functionality vs Simplicity

Page 17: Maintainability of Configuration Management Code

Entropy / Bit Rot

Page 18: Maintainability of Configuration Management Code

Write vs Read

Page 19: Maintainability of Configuration Management Code

Turnover and Skill Variance

Page 20: Maintainability of Configuration Management Code

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

Page 21: Maintainability of Configuration Management Code

Part 4:

So Now Let's Do That to the Servers

Page 22: Maintainability of Configuration Management Code

It's Easy!

"You don't have to know Ruby to use

Chef!"

Page 23: Maintainability of Configuration Management Code

It's Easy!

"You don't have to know Ruby to use

Chef!"LIES

Page 24: Maintainability of Configuration Management Code

Consequences, Schmonsequences

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

Page 25: Maintainability of Configuration Management Code

Ops Background != Dev Background

Page 26: Maintainability of Configuration Management Code

Test Fixtures

Page 27: Maintainability of Configuration Management Code

CM isn't good for everything

Page 28: Maintainability of Configuration Management Code

Part 5: Free Advice

Page 29: Maintainability of Configuration Management Code

Comment : Why, not What

Page 30: Maintainability of Configuration Management Code

Pre-Flight

Page 31: Maintainability of Configuration Management Code

KISS on Variable Storage

Page 32: Maintainability of Configuration Management Code

Use a Linter

Page 33: Maintainability of Configuration Management Code

Write Tests. Have Tests.

Page 34: Maintainability of Configuration Management Code

Use Ephemeral Test Machines

Page 35: Maintainability of Configuration Management Code

Use a Development Kit

Page 36: Maintainability of Configuration Management Code

Use a Code Generator

Page 37: Maintainability of Configuration Management Code

Use Code Reviews to Level-Set

Page 38: Maintainability of Configuration Management Code

Burn It All Down

Page 39: Maintainability of Configuration Management Code

Really, Really Burn It All Down

Page 40: Maintainability of Configuration Management Code

Thanks!

@clintoncwolfe

ansibledk.com

omniti.com

Let's follow up in OpenSpaces!