{"id":1848,"date":"2025-03-21T14:46:28","date_gmt":"2025-03-21T12:46:28","guid":{"rendered":"https:\/\/35x.de\/?p=1848"},"modified":"2025-04-10T11:08:55","modified_gmt":"2025-04-10T09:08:55","slug":"version-it","status":"publish","type":"post","link":"https:\/\/35x.de\/en\/cloud-basics\/version-it\/","title":{"rendered":"Why the hell doesn't it work now? Versioning instead of chaos!"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"1848\" class=\"elementor elementor-1848\">\n\t\t\t\t<div class=\"elementor-element elementor-element-68b361d e-flex e-con-boxed e-con e-parent\" data-id=\"68b361d\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-de40ee6 e-con-full e-flex e-con e-child\" data-id=\"de40ee6\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-38d0b1b elementor-widget elementor-widget-image\" data-id=\"38d0b1b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it.jpg\" class=\"attachment-large size-large wp-image-1860\" alt=\"Version it!\" srcset=\"https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it.jpg 1024w, https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it-300x300.jpg 300w, https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it-150x150.jpg 150w, https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it-768x768.jpg 768w, https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it-12x12.jpg 12w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eed2b8b e-con-full e-flex e-con e-child\" data-id=\"eed2b8b\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0fd8d6a elementor-widget elementor-widget-text-editor\" data-id=\"0fd8d6a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Who has ever stood in the data center (or clicked around in the Cloud Console) and asked themselves: \"Who the hell has <em>the<\/em> changed again now?\"<\/p><p>Don't worry, you're not alone. We all know the feeling when the lovingly built system landscape suddenly starts behaving like a stubborn mule just because someone has \"just\" adjusted something.<\/p><p>And this is exactly where the problem lies: In IT, especially in the field of infrastructure, conditions often prevail that would be met with a shake of the head in other engineering disciplines. Imagine a civil engineer simply working on the statics of a bridge, without a plan, without control, without anything. Horror scenario, right? In IT, however, this is often a sad reality and this is exactly where we need to rethink!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b559ca8 e-flex e-con-boxed e-con e-parent\" data-id=\"b559ca8\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b69e3b9 elementor-widget elementor-widget-text-editor\" data-id=\"b69e3b9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Our credo must be: <strong>Everything that is not data is to be treated as a versioned artifact.<\/strong> Whether these are the configuration files for the web server, the templates for the databases or the orchestration scripts for the containers - everything must be in version control! (Preferably in Git, because Git is practically the gold standard when it comes to version management).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-410e5eb e-flex e-con-boxed e-con e-parent\" data-id=\"410e5eb\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d0e2985 elementor-widget elementor-widget-heading\" data-id=\"d0e2985\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Data is sacred - and is treated separately<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a00d0d8 e-flex e-con-boxed e-con e-parent\" data-id=\"a00d0d8\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-be056e0 elementor-widget elementor-widget-text-editor\" data-id=\"be056e0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>But one thing is very important: <strong>Data is data and artifacts are artifacts.<\/strong> Data, i.e. the valuable information that makes up the application, should be backed up separately. Preferably in a managed service, because then you don't have to worry about backup, replication and all the other stuff. And, of course, this managed service should ideally also be Infrastructure-as-Code (IaC) based. This closes the circle.<\/p><p>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0b47f90 e-flex e-con-boxed e-con e-parent\" data-id=\"0b47f90\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16d92aa elementor-widget elementor-widget-heading\" data-id=\"16d92aa\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Staging is not rocket science - but it's not an option either<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-30819e5 e-flex e-con-boxed e-con e-parent\" data-id=\"30819e5\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c357e1c elementor-widget elementor-widget-text-editor\" data-id=\"c357e1c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Next item on the agenda: <strong>Staging!<\/strong> If you still live in a world where there is only \"production\", please wake up for a moment. Every serious workload needs at least two stages: <strong>Dev<\/strong> and <strong>Prod<\/strong>. Dev for playing, testing and trying out, Prod for the real thing when the money is earned. Depending on the complexity of the application, there can of course be more stages. The main thing is that there is a clear separation between development and production. It's like in gastronomy: first you experiment in the test kitchen before the new dish is put on the menu.<\/p><p>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-25e5ada e-flex e-con-boxed e-con e-parent\" data-id=\"25e5ada\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-db76a2c elementor-widget elementor-widget-heading\" data-id=\"db76a2c\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Configuration as code - as a template!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c606b0a e-flex e-con-boxed e-con e-parent\" data-id=\"c606b0a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4ca830b elementor-widget elementor-widget-text-editor\" data-id=\"4ca830b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>And how do you get the configuration under control? Quite simply: <strong>Configuration files become templates!<\/strong> Whether containers, instances or classic servers are configured - templates are defined in IaC, ScM (Software Configuration Management) or orchestration. These templates are of course versioned (Git, we've already seen that). And the highlight: the actual data in these templates (passwords, database URLs, etc.) are <strong>externalized per stage<\/strong>. This means that there are separate variable files (or a separate vault, or whatever we like) for each stage (Dev, Prod, etc.). The possibilities are really great.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dddff53 e-flex e-con-boxed e-con e-parent\" data-id=\"dddff53\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fefc475 elementor-widget elementor-widget-heading\" data-id=\"fefc475\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">One IaC codebase for all stages - less is more!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b7c73bc elementor-widget elementor-widget-text-editor\" data-id=\"b7c73bc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Of course, structure is important, but we don't want to overdo it with the love of order. That's why: <strong>For each workload there is <em>one<\/em> IaC\/ScM\/Orchestration Codebase!<\/strong> This codebase is the holy grail that serves all stages. The differences between Dev, Prod and Co. are elegantly explained via <strong>variable overrides<\/strong> solved, e.g. with Terraform and its tfvars files.<\/p><p>In this <em>one<\/em> Codebase is then fed the variable configuration components for each stage via extra file(s). This keeps things lean, clear and maximally maintainable. Maintaining a separate repository for each stage - that would be madness to the power of three! But this way everything is centralized and still flexible. Less is definitely more here!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a22cada e-flex e-con-boxed e-con e-parent\" data-id=\"a22cada\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-62aaece elementor-widget elementor-widget-heading\" data-id=\"62aaece\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Changes start at the bottom - always!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d0ced26 elementor-widget elementor-widget-text-editor\" data-id=\"d0ced26\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>And now comes the most important point of all: <strong>Changes start at the bottom - always, even if it is \"urgent\".<\/strong> Yes, \"urgent\" is the favorite word of managers worldwide. But it becomes <em>still<\/em> It's even more urgent when changes are made directly in production and everything goes wrong. Therefore: <strong>Changes are tested and \"promoted\" from bottom to top through the stages.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e4cb066 e-flex e-con-boxed e-con e-parent\" data-id=\"e4cb066\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2eaf496 elementor-widget elementor-widget-heading\" data-id=\"2eaf496\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Breaking changes? No problem - with a plan!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2d4b2c0 elementor-widget elementor-widget-text-editor\" data-id=\"2d4b2c0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>And what about <strong>Breaking Changes<\/strong> to IaC\/ScM\/orchestration? These are also no problem if you approach them correctly. Breaking changes can of course result in adjustments to the var files. But this is all manageable with <strong>release notes and a checklist\/howto<\/strong>. Communication is the be-all and end-all here.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c4c2ab2 e-flex e-con-boxed e-con e-parent\" data-id=\"c4c2ab2\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e470f82 elementor-widget elementor-widget-heading\" data-id=\"e470f82\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion: If you don't want to hear, you have to feel - and feel properly!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a2c13e1 elementor-widget elementor-widget-text-editor\" data-id=\"a2c13e1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>If you don't follow these golden rules, you risk disaster. Both on-prem classic and cloud-native. Because believe me, chaos knows no cloud boundaries. Therefore: free your IT infrastructure from chaos and introduce version control as standard. Your nerves (and those of your colleagues) will thank you!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Who has ever stood in the data center (or clicked around in the Cloud Console) and asked themselves: \"Who the hell changed that again?\" Don't worry, you're not alone. We all know the feeling when the lovingly built system landscape suddenly starts behaving like a stubborn mule just because [...]<\/p>","protected":false},"author":2,"featured_media":1855,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[13],"tags":[15,8],"class_list":["post-1848","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-basics","tag-architekturkonzept","tag-blog-post"],"uagb_featured_image_src":{"full":["https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it.png",718,718,false],"thumbnail":["https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it-150x150.png",150,150,true],"medium":["https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it-300x300.png",300,300,true],"medium_large":["https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it.png",718,718,false],"large":["https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it.png",718,718,false],"1536x1536":["https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it.png",718,718,false],"2048x2048":["https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it.png",718,718,false],"trp-custom-language-flag":["https:\/\/35x.de\/wp-content\/uploads\/2025\/03\/version-it-12x12.png",12,12,true]},"uagb_author_info":{"display_name":"Susanne Lau","author_link":"https:\/\/35x.de\/en\/author\/sl\/"},"uagb_comment_info":0,"uagb_excerpt":"Wer ist schon mal im Datacenter gestanden (oder hat in der Cloud Console rumgeklickt) und hat sich gefragt: \u201eWer zur H\u00f6lle hat das denn jetzt schon wieder ge\u00e4ndert?\u201c Keine Sorge, Sie sind nicht allein. Wir alle kennen das Gef\u00fchl, wenn die liebevoll aufgebaute Systemlandschaft pl\u00f6tzlich anf\u00e4ngt, sich wie ein bockiges Maultier zu benehmen, nur weil&hellip;","_links":{"self":[{"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/posts\/1848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/comments?post=1848"}],"version-history":[{"count":8,"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/posts\/1848\/revisions"}],"predecessor-version":[{"id":2496,"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/posts\/1848\/revisions\/2496"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/media\/1855"}],"wp:attachment":[{"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/media?parent=1848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/categories?post=1848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/35x.de\/en\/wp-json\/wp\/v2\/tags?post=1848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}