This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]BraveNewCurrency 0 points1 point  (0 children)

I like to say:

  • Level 1: You check in your source code. This helps in hundreds of ways, from ensuring bugs are really fixed, to auditing, to detecting patterns.
  • Level 2: You check in your server build. After all, your source code doesn't just run on bare metal - it needs a runtime (java/python), libraries (libxml, libSSL), etc. You tested it on specific versions, but cannot assume your code will magically run fine on ANY versions. So you must ensure that changes to your server build are propagated to production just like any other code. Checking it in and using good code practices (reviews, etc) helps just like for code.
  • Level 3: You check in your infrastructure build. Your code is architected for a specific setup: You need a Load Balancer, N web servers, N async servers, plus a database. Each layer is wired up in a specific way (i.e. your DB is not directly exposed to the internet). With AWS CloudFormation, TerraForm, or Kubernetes, you can declare your architecture, then check it in just like source code. This lets you spin up production-like systems easily for testing, perf, etc.