2

Infrastructure as code would be easy if we cared

 3 years ago
source link: http://m50d.github.io/2015/09/23/infrastructure-as-code-would-be-easy
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Infrastructure as code would be easy if we cared

A response to Infrastructure as code might be literally impossible

What if I told you:

  • Some languages are perceived as terribly difficult, but are easy

  • I'm not surprised MRI is buggy. It's written in C

  • I'm not surprised apt is buggy. It's written in C

  • You don't have to read every line to understand code if you:

    • Understand the laws the code obeys

    • Require proof

  • We already know better ways of building computer systems

    • (I do work that requires a lower defect rate than a lot of software)
  • Abstraction works

    • The "law" of leaky abstractions is false

    • Worse, it's convinced a generation of engineers that broken abstractions are ok

  • We need to be realistic about how much we care about correctness

    • If you're using ruby, you've already put a lower bound on your defect rate

    • Functional-language marketing is dishonest:

      • We say "spend the same amount of time and have fewer defects"

      • But any real business:

        • Knows what their acceptable defect rate is

        • Is already operating at it

      • So: defect rate homeostasis

      • The real value proposition is "move faster and have the same number of defects"

      • But we treat a nonzero defect rate as a moral failing

  • Big companies already adjust e.g. twitter:

    • Initially written in Ruby

    • Fail whale

    • Rewritten in Scala as correctness became more important

  • Thinking bigger is already happening

    • nix/nixos is the bigger solution to package management you were asking for

    • (but it's written in C++, so it's probably still buggy)

  • If reducing your defect rate is important to you:

    • Stop using Ruby

    • Stop using C tools

    • Idris if you really care

    • Haskell/F#/OCaml/Scala if you care a bit

    • (Yes you can achieve a low defect rate in C, but it's more expensive than using better tools)

  • It's not impossible to do it right. It's not even hard

    • We just don't care enough

      • And there's nothing wrong with that!

      • Users value features more than correctness

      • The free market works

    • But let's be honest about it

Home


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK