by Thierry de Pauw on
IFTTT for DevOps ...?
intended as a Continuous Deployment service for cloud-native
but our users found it is interesting for all sorts of sysadmin
Book: Cloud Native Infrastructure defines Cloud-Native characteristics:
12 Factor Apps (from Heroku)
more characteristics ...
=> outcomes from that list of properties for Configuration Management tools
Infrastructure as Code becomes Infrastructure as Software becomes Infrastructure as Data
The Configuration Complexity Clock, Mike Hadlow, via @garethr and Cedric Charly
for config management tools
when you start a new application:
Hard-Coded values -> extract as Config Values -> application becomes part of the business and needs business logic: Rules Engine -> DSL
and then somebody comes along and says: this is far too complicated, let's start over again (and off you go).
the analogy for Cloud-Native ...
Taxonomy of Cloud-Native CM Tools:
Raw Config -> Generators -> Frontends with which you interact and does all the complex things behind the scenes -> DSL
- Terraform: same complains as for Puppet over the years - when restrictions are enforced by a tool, people will find a way
Complexity will chase you
tools that are too simple, will shoehorn that complexity and you end up with YAML-engineering
Constraints and specifications above all else
or: any sufficiently advanced YAML dialect is an indistinguishable form of a DSL
you don't know which fields exist, which one are defined, which values they should have
use something like JSON-schema to describe which fields are available
Stop making new DSLs
rule #1: there are no new problems
rule #2: if you think you have found a new problem, go back to rule #1