Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Everything as code #118

Open
JustinThomsen opened this issue Oct 21, 2021 · 8 comments
Open

Everything as code #118

JustinThomsen opened this issue Oct 21, 2021 · 8 comments

Comments

@JustinThomsen
Copy link
Contributor

I'm wondering if we are missing a broader scope of the principle of "version control everything." (maybe its mostly missing with respect to infrastructure). I know it is covered slightly in application config deploys with artifact, but especially with modern applications being deployed to modern platforms with woefully out of date practices, (especially with respect to cloud infrastructure) I'm wondering if there is a tie in here. It may also be that something more needs to go into the application config section (app config plus infrastructure?). Can you be confident in all changes to your app as the infrastructure changes beneath you?

Sorry if I'm late to the party.

@Jerreck
Copy link
Collaborator

Jerreck commented Oct 22, 2021

Don't be sorry, the party never stops! I think this is an excellent question and something I've wondered about myself. I feel like there's a difference between "having your app always ready to deploy" == CD and "high availability infra" == SRE/platform. I imagine someone probably read that last sentence and thought it was pretty dumb though, so I'd appreciate feedback there.

@ferrix
Copy link
Collaborator

ferrix commented Oct 22, 2021

I think I read suggestions to a few different things here:

  • Version control everything. Trunk-based development strongly implies version control, but there are many cases where many of the product's assets are not diffable: graphics, XML configurations for tools like Salesforce, ML models and so on. So, version control for everything is unattainable.
  • Infrastructure as code is not a blocker for CD. The on-prem network architecture is often not volatile nor automated. IaC is a good practice on the cloud. Also, there is a line to be drawn: The DNS NS record configuration should probably not deploy with every microservice. The original intent of "application configuration deploys with artifact" is that production may not crash on a null for a new configuration flag.
  • Application survives infrastructure changes would be a requirement for the CD of IaC but impossible to generalise. Either Microsoft or Apple should take responsibility for this on desktop ;)

@bdfinst
Copy link
Collaborator

bdfinst commented Oct 25, 2021

I think things like this would work well in the "beyond the minimums" section. I agree that everything is VC is the goal and also not required for Minimum CD. I've done CD while my DB was owned by a team in another VP area. Fun fact, they didn't use version control at all. It was terrifying.

@bdfinst
Copy link
Collaborator

bdfinst commented Jan 29, 2022

I've added a recommended practices section in PR https://github.com/Minimum-CD/cd-manifesto/pull/183/files
This would be a good add there after it's merged.

@tracybannon
Copy link
Collaborator

Seeing this as I perusing changes over the last year since this greatness was proposed. <3 @JustinThomsen - Do you still have interest in adding this info?

@JustinThomsen
Copy link
Contributor Author

@tracybannon - I'll take a look - I think there is still some value in having this written out, might take me some time to gather the right wordsmithing.

@JustinThomsen
Copy link
Contributor Author

A few examples that would fit on the beyond the minimums page:

https://openpracticelibrary.com/practice/everything-as-code/

https://hackernoon.com/everything-as-code-explained-0ibg32a3

Otherwise, I can also write out a section for recommended practices.

@JustinThomsen
Copy link
Contributor Author

@tracybannon @bdfinst I'll work on a write up for the recommended practices page for everything as code. It'll take me a bit because I'm an over editor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants