<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Reliable Engineer]]></title><description><![CDATA[ensures systems, equipment, or software run consistently without failure, focusing on risk mitigation, performance optimization, and minimizing downtime (supposedly)]]></description><link>https://reliableengineer.blog</link><image><url>https://substackcdn.com/image/fetch/$s_!DMi2!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3ebb37d-1a3d-4b65-b8ab-b3066644eff0_1024x1024.png</url><title>Reliable Engineer</title><link>https://reliableengineer.blog</link></image><generator>Substack</generator><lastBuildDate>Fri, 30 Oct 2026 18:31:40 GMT</lastBuildDate><atom:link href="https://reliableengineer.blog/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Mykyta Khomenko]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[reliableengineer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[reliableengineer@substack.com]]></itunes:email><itunes:name><![CDATA[Mykyta Khomenko]]></itunes:name></itunes:owner><itunes:author><![CDATA[Mykyta Khomenko]]></itunes:author><googleplay:owner><![CDATA[reliableengineer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[reliableengineer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Mykyta Khomenko]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Testing in a nutshell]]></title><description><![CDATA[some tests -> more tests -> even more tests -> &#128077; (shitload of money spent)]]></description><link>https://reliableengineer.blog/p/testing-in-a-nutshell</link><guid isPermaLink="false">https://reliableengineer.blog/p/testing-in-a-nutshell</guid><dc:creator><![CDATA[Mykyta Khomenko]]></dc:creator><pubDate>Thu, 29 Oct 2026 21:34:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E_hi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s talk about the different types of tests we may encounter in a software reliability/engineering management line of work. </p><p>For the sake of structure, we're going to describe them using an oversimplified view of company states: </p><p>startup &#8594; growing company &#8594; Plateau</p><p>Each state has its own list of testing practices that would be (in my opinion) the best fit to introduce during that company period. </p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rjUX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rjUX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png 424w, https://substackcdn.com/image/fetch/$s_!rjUX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png 848w, https://substackcdn.com/image/fetch/$s_!rjUX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png 1272w, https://substackcdn.com/image/fetch/$s_!rjUX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rjUX!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png" width="1200" height="932.967032967033" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1132,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:299477,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/222184019?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rjUX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png 424w, https://substackcdn.com/image/fetch/$s_!rjUX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png 848w, https://substackcdn.com/image/fetch/$s_!rjUX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png 1272w, https://substackcdn.com/image/fetch/$s_!rjUX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10fa3701-584d-4710-b31e-1933b7a7391c_3200x2488.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>There may be a reasonable question, so let&#8217;s do quick a Q/A:</p><h4>Hey Mike! Your diagram is bolloks! Are you implying that you cannot do chaos testing as the company grows???</h4><p>You can, but you still have to account for general company stability. Every small thing you add to the process will increase your uptime,&nbsp;<strong>but</strong>&nbsp;it will distract you from actually getting things done. The company stages are presented in order of decreasing need for agility.  </p><p>During the startup stage, you have a time bomb on your table that will destroy the entire company if you do not become profitable in time.</p><p>During the growing stage, you have money. The probability that you will have to redesign your entire architecture is close to zero, so you can afford some reliability tools, but not all of them. The main problem is you are no longer invisible to potential competitors, and you have to conquer the market before industry leaders copy you and use their influence and connections to get a significant portion of your potential growth. Don&#8217;t worry, companies on the Plateau are painfully slow. <strong>That&#8217;s exactly why you cannot become one of them just yet. </strong></p><p></p><p>So, let&#8217;s review all states and what's sufficient to do in each state.</p><p></p><p>There are only a few things you absolutely have to do at any company state:</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CwEc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CwEc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png 424w, https://substackcdn.com/image/fetch/$s_!CwEc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png 848w, https://substackcdn.com/image/fetch/$s_!CwEc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png 1272w, https://substackcdn.com/image/fetch/$s_!CwEc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!CwEc!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png" width="1200" height="470.6043956043956" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79a4224f-4478-406f-92be-660dd0584641_3200x1256.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:571,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:114549,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/222184019?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CwEc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png 424w, https://substackcdn.com/image/fetch/$s_!CwEc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png 848w, https://substackcdn.com/image/fetch/$s_!CwEc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png 1272w, https://substackcdn.com/image/fetch/$s_!CwEc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a4224f-4478-406f-92be-660dd0584641_3200x1256.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Host Ping Tests</h2><p><sup>More like &#8220;host monitoring&#8221;, but it&#8217;s still called tests, so I guess it&#8217;s an honorable mention</sup></p><p>You periodically send a request to the host to prove the host is reachable.</p><p></p><h2>Smoke Tests</h2><p>You define the critical user journeys, which are: what actions <strong>the first-time user</strong> of your service should take to give you money! Write them down. Now, before (or after, I guess) production deployment, you should check if you can do that on your website.<br>Congratulations! You have smoke tests.</p><p></p><h2>Manual (I hope it&#8217;s done by QA) Tests</h2><p><sup>Most probably done by the CTO or, even worse, the developer who made a feature</sup></p><p>At this stage, you are most probably improving your app with big chunks of work: new functionality or services introduced, added integrations, new pages on the website. </p><p>After you think you are done with the chunk, you just check if it works as expected. Check some border cases. Exploratory testing in its finest.</p><p></p><p>It is as far as it goes in a startup. </p><p>Money is short, but you can still lose it all. So you add a few checks here and there so you can at least provide a decent service on your side.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jgRj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jgRj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png 424w, https://substackcdn.com/image/fetch/$s_!jgRj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png 848w, https://substackcdn.com/image/fetch/$s_!jgRj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png 1272w, https://substackcdn.com/image/fetch/$s_!jgRj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jgRj!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png" width="1200" height="568.6813186813187" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:690,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:146079,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/222184019?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jgRj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png 424w, https://substackcdn.com/image/fetch/$s_!jgRj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png 848w, https://substackcdn.com/image/fetch/$s_!jgRj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png 1272w, https://substackcdn.com/image/fetch/$s_!jgRj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec50d3d9-9444-466c-8709-a081b76710e4_3200x1516.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Automated Unit Testing</h2><p>In the old days, it was one of the most tiring toils to do. You finished a task; now you mock up all external calls and write unit tests for all (or at least some of) new Service-type classes or functions.</p><p>Even then, IDEs had built-in functions or plugins that were able to generate this crap. Now, <a href="https://www.jetbrains.com/help/ai-assistant/generate-tests-with-ai.html">it&#8217;s just an AI job to do</a>, with review and small tweaks here and there. </p><p></p><h2>Integration Tests</h2><p><sup><span data-color="#93c47d" style="color: rgb(147, 196, 125);">Can be done manually if you like to spend a lot of money to spread human suffering.</span></sup></p><p>These tests check that your code works with the things it talks to. There are two kinds:</p><ul><li><p><strong>Narrow:</strong> one piece of your code against one real dependency, usually in a throwaway container (<a href="https://testcontainers.com/">Testcontainers</a>). Examples are your queries against a real database and your consumer against a real message queue. They&#8217;re fast and stable.</p></li><li><p><strong>Broad:</strong> Basically a Component test + Contract testing in one bottle. Several of your services running together and calling each other. They catch wiring problems early, but they&#8217;re slow and flaky, and when one fails, it&#8217;s hard to tell which service broke. <strong><span data-color="#00ff00" style="color: rgb(0, 255, 0);">In the future, you replace them with component and contract tests.</span></strong></p><p></p><p></p></li></ul><h2>System Tests</h2><p><sup><span data-color="#93c47d" style="color: rgb(147, 196, 125);">Can be done manually if you like to spend a lot of money to spread human suffering.</span></sup></p><p>The next logical step is to focus on the behavior of the whole system, rather than internal parts. You set up the full staging/pre-prod environment. External APIs still should be mocked, but now you can execute different scenarios of success and failure.</p><p>Can be complemented with <span data-color="#6aa84f" style="color: rgb(106, 168, 79);">Acceptance Tests</span>. </p><p></p><h2>Acceptance Tests</h2><p>Technically speaking, it uses the same toolkit as system tests; the only difference is that we test based on expected business outcomes, not technical system behaviours. You will need to communicate more closely with Product Managers for this one to be valid.</p><p>If system tests answer the question: &#8220;are we building it the right way?&#8221;, the acceptance tests check &#8220;are we building the right thing?&#8221;.</p><p>This way, we have finished the most basic test pyramid.<br></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HfB8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HfB8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png 424w, https://substackcdn.com/image/fetch/$s_!HfB8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png 848w, https://substackcdn.com/image/fetch/$s_!HfB8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png 1272w, https://substackcdn.com/image/fetch/$s_!HfB8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!HfB8!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png" width="1200" height="727.7472527472528" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:883,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:130153,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/222184019?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HfB8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png 424w, https://substackcdn.com/image/fetch/$s_!HfB8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png 848w, https://substackcdn.com/image/fetch/$s_!HfB8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png 1272w, https://substackcdn.com/image/fetch/$s_!HfB8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff98c2f5e-7051-4156-bc03-e6c29f3c1bbd_3200x1940.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>DR (Disaster Recovery) Plan Tests</h2><p>According to ISO 22301 and ISO/IEC 27031, there are 5 types of DR tests:</p><ul><li><p><strong>Checklist Review:</strong> You review your DR plan documentation to keep it up-to-date.</p></li><li><p><strong>Tabletop Exercise:</strong> Stakeholders gather to verbally walk through a hypothetical disaster scenario step-by-step to expose gaps in role clarity, communication, and decision-making.</p></li><li><p><strong>Walkthrough / Simulation:</strong> Teams practice specific technical steps and handoffs in a sandbox environment to test runbooks and coordination without affecting production.</p></li><li><p><strong>Parallel Test:</strong> Secondary systems and data backups are brought online and validated alongside the live environment to ensure functionality without risking primary operations.</p></li><li><p><strong>Full-Scale / Full-Interruption Test:</strong> The primary production environment is completely shut down or isolated to shift live operations to the recovery site, proving end-to-end resilience and measuring exact recovery times.</p></li></ul><p></p><p>It ensures the effectiveness and readiness of DR measures in the event of an actual disaster. You choose how far you are willing to go. The standard answer is <strong>Tabletop</strong>.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://reliableengineer.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Before we continue, pls subscribe. It&#8217;s free.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZTMH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZTMH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png 424w, https://substackcdn.com/image/fetch/$s_!ZTMH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png 848w, https://substackcdn.com/image/fetch/$s_!ZTMH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png 1272w, https://substackcdn.com/image/fetch/$s_!ZTMH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZTMH!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png" width="1200" height="678.2967032967033" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:823,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:193116,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/222184019?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZTMH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png 424w, https://substackcdn.com/image/fetch/$s_!ZTMH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png 848w, https://substackcdn.com/image/fetch/$s_!ZTMH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png 1272w, https://substackcdn.com/image/fetch/$s_!ZTMH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6c53a79-7e3b-4c44-b2ea-dd28e468cf2f_3200x1808.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>DiRT Testing</h2><p>Most mature and expensive DR testing</p><p>Disaster Recovery Testing - Google&#8217;s yearly exercise in which real systems and teams are deliberately put through disaster scenarios. Disaster Recovery Testing Maturity Assessment (<strong>DiRMA</strong>) framework provides structured paths to enhance DiRT implementation across people, processes, and tools, helping to overcome cultural resistance and metric measurement issues.</p><p></p><h2>Component test + Contract testing</h2><p><strong><span data-color="#00ff00" style="color: rgb(0, 255, 0);">You retire broad integration tests</span></strong> (the ones that need several of your services running together) and split what they checked into two types:</p><p>Component tests: one service tested through its API, with the services it calls replaced by stubs.</p><p>Contract tests: each side is checked against a shared contract separately, and the two services never talk to each other during the test. Pact is the usual tool.</p><p><strong><span data-color="#00ff00" style="color: rgb(0, 255, 0);">Narrow integration tests stay.</span></strong> They check your code against real infrastructure, such as a database, a message queue or an identity provider. They catch failures no other test type reaches cheaply: a missing unique index, an offset committed before processing, a key rotation nobody handled. System tests confirm the pieces work together; narrow tests cover each piece&#8217;s edge cases in seconds.</p><p></p><h2>Automated E2E Testing</h2><p><sup>Can be done manually if you like to spend a lot of money to spread human suffering.</sup></p><p>Good news! Your startup smoke tests (a user journey through the deployed system) already are manual E2E tests! </p><p>Now you automate most of these tests to speed the process up. <br>Ideally, you will do this so successfully that smoke tests become just a &#8220;check that the system is up and running&#8220;. </p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E_hi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E_hi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png 424w, https://substackcdn.com/image/fetch/$s_!E_hi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png 848w, https://substackcdn.com/image/fetch/$s_!E_hi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png 1272w, https://substackcdn.com/image/fetch/$s_!E_hi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!E_hi!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png" width="1200" height="825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1001,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:219886,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/222184019?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E_hi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png 424w, https://substackcdn.com/image/fetch/$s_!E_hi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png 848w, https://substackcdn.com/image/fetch/$s_!E_hi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png 1272w, https://substackcdn.com/image/fetch/$s_!E_hi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d36130-734b-4a69-a41f-b3ea8ef740f8_3200x2200.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Adding this approaches finishes a modern test pyramid <a href="https://dev.to/optivem/modern-test-pyramid-4dfc">https://dev.to/optivem/modern-test-pyramid-4dfc</a></figcaption></figure></div><p></p><h2>Performance Testing</h2><p><span data-color="#93c47d" style="color: rgb(147, 196, 125);">Broad term to describe: Load testing, Stress Testing, and Soak Testing</span></p><p>Let&#8217;s describe all of them:</p><h4>1. Load testing</h4><p>We test that the system works well when many people use it at the same time. Guess the expected or peak load that the system will experience in production and simulate it using tools like LoadRunner.</p><h4>1.1 Assured Capacity Load Testing</h4><p>Validates whether your dedicated, reserved, or contracted infrastructure can actually sustain its maximum promised limits in a crisis.<strong> <br></strong>You ask the cloud provider to do it as part of an audit before signing a big infrastructure contract. <br>Or, if you're not in the cloud, you test that your data centers can handle the assured load (especially the backup ones). </p><h4>1.2 <span data-color="#6d9eeb" style="color: rgb(109, 158, 235);">Re</span><span data-color="#e06666" style="color: rgb(224, 102, 102);">al</span><span data-color="#ffff00" style="color: rgb(255, 255, 0);">-W</span><span data-color="#6d9eeb" style="color: rgb(109, 158, 235);">or</span><span data-color="#93c47d" style="color: rgb(147, 196, 125);">l</span><span data-color="#e06666" style="color: rgb(224, 102, 102);">d</span> Traffic Load Testing</h4><p>You can do this by:</p><ul><li><p>Using tools or scripts to simulate user traffic and behavior. <br><sup>(Which is literally just standard Load testing! BUT, now you can add it into your performance review)</sup></p></li><li><p>Capturing and replaying actual user traffic patterns.</p></li><li><p>Shadow traffic. Copying real-time traffic from your busiest production environment and sending it to the test site. Works great, as long as you block side effects such as payments, emails, and writes.</p></li></ul><h4>2. Stress testing</h4><p>Push the system beyond its expected load limits and see how it behaves. </p><h4>3. Soak testing</h4><p>Guess the expected or peak load of the system, simulate it, and let it run under it for a day. Helps to identify potential memory leaks, stability issues and performance degradation.</p><p></p><h2>Regular BCP Testing (run from alternate site)</h2><p>Imagine: you have an alternate site that you can run during the event of disaster, and it covers the most critical functions of business until the main site is up and running again (Business Continuity Plan).</p><p>BCP Testing is called to verify that the backup site is sufficient, properly configured, and equipped to support critical business functions in the event of disaster.</p><p></p><h2>Rollbacks/Rollforwards Tested</h2><p><sup><span data-color="#93c47d" style="color: rgb(147, 196, 125);">Can be done manually if you like to spend a lot of money to spread human suffering.</span></sup></p><p>Tests whether the team can undo a release and then apply a corrected release safely. <br>In a test environment, deploy a change, return to the previous version, and then deploy the fixed version. Check that the service and its data are correct after each step.</p><p></p><h2>Left Shift QA Testing (SDET)</h2><p><sup><span data-color="#93c47d" style="color: rgb(147, 196, 125);">SDET - Software Development Engineer in Test</span></sup></p><p>An approach in which developers and testers agree on what should happen, then add automated checks as the feature is built. A feature is not done until the tests for it are written and pass without an exception.</p><p></p><h2>Left Shift Performance Testing</h2><p>Run a small performance check while the feature is still being developed. Compare its speed and resource use with earlier results.</p><h2></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3p-A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3p-A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png 424w, https://substackcdn.com/image/fetch/$s_!3p-A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png 848w, https://substackcdn.com/image/fetch/$s_!3p-A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png 1272w, https://substackcdn.com/image/fetch/$s_!3p-A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!3p-A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png" width="728" height="346" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:209414,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/222184019?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3p-A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png 424w, https://substackcdn.com/image/fetch/$s_!3p-A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png 848w, https://substackcdn.com/image/fetch/$s_!3p-A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png 1272w, https://substackcdn.com/image/fetch/$s_!3p-A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1c6bfe-f8ed-4215-802b-f747014b842b_1968x935.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>AND THEY WERE ASKING FOR THIS!</strong></figcaption></figure></div><p></p><h2>Chaos Testing / Failure Testing in Prod</h2><p>You break things on purpose, one at a time, to check that the system keeps serving users and recovers on its own. The goal is to find weak spots before a real outage finds them for you.</p><p>Before you start, you need three things:</p><ol><li><p><strong>Infrastructure that can, in theory, survive failures:</strong> redundancy, timeouts, retries with backoff, circuit breakers and graceful degradation. Chaos testing checks resilience; it doesn&#8217;t create it.</p></li><li><p><strong>Monitoring and alerting that define &#8220;normal&#8221;,</strong> such as checkout success rate and p99 latency. If you can&#8217;t measure normal, you can&#8217;t tell whether an experiment hurt anything.</p></li><li><p><strong>A pre-production environment close to production.</strong> Every experiment runs there first.</p></li></ol><p>Each experiment follows the same loop:</p><ol><li><p>Define &#8220;normal&#8221;. For example, checkout success rate above 99.5%.</p></li><li><p>Predict what will happen. &#8220;If one payment-service instance dies, checkout success stays above 99.5%.&#8221;</p></li><li><p>Inject one realistic fault. Kill an instance, add 2 seconds of latency to a dependency, make an external API return errors, or delay or drop queue messages (<a href="https://medium.com/@ismailkovvuru/top-chaos-experiments-every-devops-engineer-should-know-c4f8a72c3f3f">more experiment ideas</a>).</p></li><li><p>Limit the damage. Start in pre-production. In production, start with one instance or a small share of traffic, during working hours, with the team watching.</p></li><li><p>Stop automatically. Tie the experiment to an alarm, so it ends the moment the metric drops below normal.</p></li><li><p>Fix what broke and repeat. Experiments that pass become regular automated runs, so resilience doesn&#8217;t quietly decay.</p></li></ol><p>What you&#8217;re really testing: timeouts, retries, circuit breakers, failover, autoscaling, and whether alerts fire and on-call knows what to do.</p><p>Tools:</p><ul><li><p><a href="https://netflix.github.io/chaosmonkey/">Netflix Chaos Monkey</a> terminates instances at random. That proves you can lose any instance at any time, and that&#8217;s all it does. It also requires Spinnaker.</p></li><li><p><a href="https://docs.aws.amazon.com/fis/latest/userguide/">AWS Fault Injection Service</a> runs planned experiments with many fault types (latency, API errors, network disruption, CPU and memory stress) and has built-in stop conditions.</p></li><li><p><a href="https://www.gremlin.com/">Gremlin</a>, <a href="https://chaos-mesh.org/">Chaos Mesh</a> and <a href="https://litmuschaos.io/">LitmusChaos</a> do the same for other clouds and for Kubernetes.</p></li></ul><p>Is chaos engineering the same as failure testing in production? They overlap. Failure injection is the technique; chaos engineering adds the prediction, the limited impact, and the automatic stop (<a href="https://principlesofchaos.org/">Principles of Chaos Engineering</a>). A test checks something you already expect. A chaos experiment looks for weaknesses nobody knew about.</p><p>Skip step 4 of the experiment, and you&#8217;re not doing chaos engineering. You&#8217;re just having an outage on purpose.</p><p></p><h2>Fuzz Testing</h2><p>You use a tool like <a href="https://github.com/microsoft/restler-fuzzer">RESTler</a> to feed your service a bunch of unexpected, broken, or unusual input. Check that this service does not crash, freeze, or return business-harming results.</p><p></p><h2>Cross-Service Transaction Testing</h2><p>Test a task such as placing an order, which may update orders, stock, and payments. Check that all services agree on the result, including what happens if one step fails or is repeated. </p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://reliableengineer.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">That&#8217;s it! Thanks for reading Reliable Engineer! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Fin.</p>]]></content:encoded></item><item><title><![CDATA[Backwards compatibility in a nutshell]]></title><description><![CDATA[an easy guide for busy human beings]]></description><link>https://reliableengineer.blog/p/backwards-compatibility</link><guid isPermaLink="false">https://reliableengineer.blog/p/backwards-compatibility</guid><dc:creator><![CDATA[Mykyta Khomenko]]></dc:creator><pubDate>Sat, 26 Sep 2026 01:07:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Rx4Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If there is one thing that makes your life 10-fold easier and doesn&#8217;t make developers&#8217; lives a living hell, it is backwards compatibility.</p><p>The main idea in short terms:<br>Incoming traffic to your service <strong>is what your service&#8217;s logic depends on to work correctly</strong>.<br>There are 2 ways of how information can flow into your service:<br>1 - by receiving a request from another service;<br>2 - by receiving a response from another service.</p><p><br>By avoiding destructive changes in the parts of the contract that are responsible for inbound information flow, we allow our service to receive information in both structures: with the new changes and without.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://reliableengineer.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Reliable Engineer! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tiyc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tiyc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png 424w, https://substackcdn.com/image/fetch/$s_!tiyc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png 848w, https://substackcdn.com/image/fetch/$s_!tiyc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png 1272w, https://substackcdn.com/image/fetch/$s_!tiyc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tiyc!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png" width="1200" height="441.0172272354389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:448,&quot;width&quot;:1219,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:72529,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/217475692?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1385c488-15cf-448c-93c6-ee22f9541240_2000x1125.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tiyc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png 424w, https://substackcdn.com/image/fetch/$s_!tiyc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png 848w, https://substackcdn.com/image/fetch/$s_!tiyc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png 1272w, https://substackcdn.com/image/fetch/$s_!tiyc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeac7ba5-b1c3-4e56-bd70-990d577cf90e_1219x448.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s a tool for API contract migration: by holding back destructive changes for a certain amount of time, sprints or releases, we are allowing our services to move in production independently.</p><p>The result is a reduced amount of release communication needed for rollout or rollback.</p><p>This is the most elegant and simple explanation of backwards compatibility I&#8217;m able to condense.</p><p>By enforcing backwards compatibility, we are effectively breaking a dependency between different services, allowing different teams to deliver API changes at their own pace, while also creating a window of time when rollback can be performed without breaking an API contract (in case of major incidents).</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rx4Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png 424w, https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png 848w, https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png 1272w, https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png" width="1200" height="330.4918032786885" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:336,&quot;width&quot;:1220,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:48596,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/217475692?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56f170e-4945-4e82-aede-0b1d07d893a5_2000x1125.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png 424w, https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png 848w, https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png 1272w, https://substackcdn.com/image/fetch/$s_!Rx4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa800db5a-dca7-4ab5-8d3f-761f2591860d_1220x336.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can enforce backwards-compatibility on all of your projects (backwards-compatibility by default), or you can apply it only to the most critical and interconnected projects. Creating what is effectively a release-candidate group.</p><p>You test projects from the same release-candidate group together and deploy them together. This way you can decrease the number of moving pieces in prod. Which may be good enough for your case.</p><p>At the same time, backwards compatibility by default is an important prerequisite to the left-shift deployment self-service, where the team leader of a certain service is responsible for this service delivery.</p><p>Pick your poison based on resources and company needs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GAgZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GAgZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png 424w, https://substackcdn.com/image/fetch/$s_!GAgZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png 848w, https://substackcdn.com/image/fetch/$s_!GAgZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png 1272w, https://substackcdn.com/image/fetch/$s_!GAgZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GAgZ!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png" width="1200" height="409.00621118012424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:439,&quot;width&quot;:1288,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:66400,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/217475692?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56f170e-4945-4e82-aede-0b1d07d893a5_2000x1125.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!GAgZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png 424w, https://substackcdn.com/image/fetch/$s_!GAgZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png 848w, https://substackcdn.com/image/fetch/$s_!GAgZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png 1272w, https://substackcdn.com/image/fetch/$s_!GAgZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6685770f-c51b-487d-81c6-5d84d8bd2d28_1288x439.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>That&#8217;s it! You now know everything about backwards-compatibility.</p><p>Fin.</p><p></p><div><hr></div><p>P.S.:</p><p>Yet, there still can be a question of<strong> </strong>why we should concentrate specifically on incoming traffic only.</p><p>Task: You need to make sure that you provide teams with simple-to-understand backwards compatibility rules.</p><p>Well, let&#8217;s look into all possible options of backwards-compatibility handling:</p><ol><li><p>You can make teams responsible for doing all communication in backwards backward-compatible manner (incoming and outgoing). <br>Sounds great on paper; if you have a backwards-compatibility problem between 2 projects of your company, you will have 2 teams doing homework! And the possibility of an issue arising again is twice as likely!<br>Until you realize that: In situations when more than 1 team is responsible for something, nobody can be held accountable for the contract breach.<br>Also, it&#8217;s unnecessary overkill.</p></li><li><p>The second way is to make teams responsible for doing only outgoing communication in a backwards-compatible.<br>Which is essentially delegating responsibility for our service's correct work to other teams&#8217; shoulders.<br>&#8221;Our service failed because the other service did not do its homework&#8221;<br>This approach does not remove project dependency; it only shifts responsibility onto someone else.</p></li><li><p>Teams care only about making their service work, no matter what changes are introduced. It&#8217;s simple to assign accountability for failure. And it will be fair.</p></li></ol><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5mrT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5mrT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png 424w, https://substackcdn.com/image/fetch/$s_!5mrT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png 848w, https://substackcdn.com/image/fetch/$s_!5mrT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png 1272w, https://substackcdn.com/image/fetch/$s_!5mrT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!5mrT!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png" width="1200" height="675.3799392097264" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1111,&quot;width&quot;:1974,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:147852,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/217475692?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff60abea5-9802-4be5-8116-2bb92e791235_2000x1125.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5mrT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png 424w, https://substackcdn.com/image/fetch/$s_!5mrT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png 848w, https://substackcdn.com/image/fetch/$s_!5mrT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png 1272w, https://substackcdn.com/image/fetch/$s_!5mrT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59ca95f-9d1f-4bcf-bad9-1e994eeda442_1974x1111.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://reliableengineer.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Reliable Engineer! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[SemVer 2.0]]></title><description><![CDATA[and ways to make it useful]]></description><link>https://reliableengineer.blog/p/semantic-versioning-semver-2-microservices-api-compatibility</link><guid isPermaLink="false">https://reliableengineer.blog/p/semantic-versioning-semver-2-microservices-api-compatibility</guid><dc:creator><![CDATA[Mykyta Khomenko]]></dc:creator><pubDate>Fri, 15 May 2026 07:03:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!UWh4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Versioning and the release process is tightly coupled. Because releasing something means delivering snapshots of the same service throughout a long period of time. And different snapshots need a unique identifier. </p><p>There is a several approaches to naming a version, like hashing, date and time of release, or increment of numbers, but for some reason, semantic versioning is one of the most popular of them.</p><p>Let&#8217;s figure out what we can cook with it. But first here is a quick referance for the rules:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yhLs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yhLs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png 424w, https://substackcdn.com/image/fetch/$s_!yhLs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png 848w, https://substackcdn.com/image/fetch/$s_!yhLs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png 1272w, https://substackcdn.com/image/fetch/$s_!yhLs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yhLs!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png" width="1200" height="551.7053206002729" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:337,&quot;width&quot;:733,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yhLs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png 424w, https://substackcdn.com/image/fetch/$s_!yhLs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png 848w, https://substackcdn.com/image/fetch/$s_!yhLs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png 1272w, https://substackcdn.com/image/fetch/$s_!yhLs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e05b0ab-2b22-406b-8cbb-269f4dbfa266_733x337.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://semver.org/">https://semver.org/</a></p><p></p><p>So, you make a company-wide policy so that engineers will now decide on the version naming. </p><p>Everyone happy! Now we have a reliable way of versioning things, right?</p><p>R-right?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OKB1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OKB1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png 424w, https://substackcdn.com/image/fetch/$s_!OKB1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png 848w, https://substackcdn.com/image/fetch/$s_!OKB1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png 1272w, https://substackcdn.com/image/fetch/$s_!OKB1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!OKB1!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png" width="1200" height="372.485549132948" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:537,&quot;width&quot;:1730,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:300819,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/197721855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7a00a9-235d-4b97-acb1-644d90e8ae15_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OKB1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png 424w, https://substackcdn.com/image/fetch/$s_!OKB1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png 848w, https://substackcdn.com/image/fetch/$s_!OKB1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png 1272w, https://substackcdn.com/image/fetch/$s_!OKB1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7859475-a2ba-4c4b-9832-079691a6c4cc_1730x537.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Aaaannnnd&#8230; the engineer never actually followed any rules.</p><p>It&#8217;s simple, yet there is so much bias happening when you give people power to change the version.</p><ul><li><p>Architects want to reward themself for big migrations facilitated </p></li><li><p>Devs want to celebrate big refactoring or big chunks of work done</p></li><li><p>PMs want a major version after every epic.</p></li></ul><p>There is nothing particularly bad or abnormal with people's desire to mark the big effort behind their work with a numbered version. But my points is, if you changed the whole service and no API was affected:</p><ol><li><p>You did a great job designing APIs</p></li><li><p>It&#8217;s a patch change</p><p></p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4vVH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4vVH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png 424w, https://substackcdn.com/image/fetch/$s_!4vVH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png 848w, https://substackcdn.com/image/fetch/$s_!4vVH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png 1272w, https://substackcdn.com/image/fetch/$s_!4vVH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4vVH!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png" width="1200" height="540.5475880052152" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:691,&quot;width&quot;:1534,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:158943,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/197721855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96b20b13-0c16-4801-bd31-f39e805c2f46_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4vVH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png 424w, https://substackcdn.com/image/fetch/$s_!4vVH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png 848w, https://substackcdn.com/image/fetch/$s_!4vVH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png 1272w, https://substackcdn.com/image/fetch/$s_!4vVH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f548346-4ec8-42db-b7d4-535c68fd5920_1534x691.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The real-world semantic versions are <strong>ugly</strong>. And there is so much pursuit of beauty in engineering; following those rules just feels wrong, even counterintuitive. </p><p>You need to be prepared for the fact that a few years deep into the regular cadence of scheduled project releases, you will have 100+ major version changes in most interconnected and important BE services.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1_5R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1_5R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png 424w, https://substackcdn.com/image/fetch/$s_!1_5R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png 848w, https://substackcdn.com/image/fetch/$s_!1_5R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png 1272w, https://substackcdn.com/image/fetch/$s_!1_5R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1_5R!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png" width="1200" height="636.6990291262136" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1093,&quot;width&quot;:2060,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:406895,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/197721855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606200de-96ef-49e4-82e3-553b8edfd317_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1_5R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png 424w, https://substackcdn.com/image/fetch/$s_!1_5R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png 848w, https://substackcdn.com/image/fetch/$s_!1_5R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png 1272w, https://substackcdn.com/image/fetch/$s_!1_5R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe54e7923-b9d7-41f6-938b-c1e1c1254e6c_2060x1093.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>There is just so much professional bias happening, the faultiest, stupiddest implementation of the automatic semantic version assignment will do more reliable work than any engineer ever will. </p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0942!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0942!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png 424w, https://substackcdn.com/image/fetch/$s_!0942!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png 848w, https://substackcdn.com/image/fetch/$s_!0942!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png 1272w, https://substackcdn.com/image/fetch/$s_!0942!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0942!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png" width="1200" height="362.22222222222223" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:489,&quot;width&quot;:1620,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:267136,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/197721855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f707f4b-46a5-4215-9683-468b0f390251_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0942!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png 424w, https://substackcdn.com/image/fetch/$s_!0942!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png 848w, https://substackcdn.com/image/fetch/$s_!0942!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png 1272w, https://substackcdn.com/image/fetch/$s_!0942!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9cea0f1b-1a95-4587-8483-3d6b06ed69c9_1620x489.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>So, let&#8217;s go back to SemVer rules.</p><p>The main idea is: will another service notice the difference if we rollback?</p><p>For example: <br>If another service adds a new field in their request and we have not yet introduced it in our API contract deserialization data structure, we can probably just ignore it and move on. But, getting fewer data fields than we require on the input will instantly trigger deserialization errors.</p><p>The same goes for the Response DTO; we cannot just &#8220;rollback&#8220; the newly added field. Other services are relying on its existence! But bringing back something we freshly removed? Sure, no problems here.</p><p>We are not talking about how the internal logic of a service will react to each of these use cases; we are simply checking contract compatibility, like puzzle pieces. </p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lspv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lspv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png 424w, https://substackcdn.com/image/fetch/$s_!lspv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png 848w, https://substackcdn.com/image/fetch/$s_!lspv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png 1272w, https://substackcdn.com/image/fetch/$s_!lspv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lspv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png" width="1200" height="549.6" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1145,&quot;width&quot;:2500,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:195780,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/197721855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb206d628-e468-44e2-8062-8a1feb40f0ff_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lspv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png 424w, https://substackcdn.com/image/fetch/$s_!lspv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png 848w, https://substackcdn.com/image/fetch/$s_!lspv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png 1272w, https://substackcdn.com/image/fetch/$s_!lspv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2d78db5-e8ca-4a48-9adb-9177b52b1813_2500x1145.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I really like semantic versioning, but it only describes the public API. </p><p>If it&#8217;s not a library but a service in a structured system, I would also prefer to check the external API we use.  Sooo&#8230; Let&#8217;s upgrade it a bit.</p><p>Let&#8217;s also add an answer to this question: <br>&#8221;What changes in our representation of the external API is backwards incompatible?&#8221; </p><p>So we can fully assess the possibility of rollback for this particular service without breaking other services or going into a downtime.</p><p>Frankly speaking, it&#8217;s the same rules for outbound traffic; they are just reversed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YxqC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YxqC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png 424w, https://substackcdn.com/image/fetch/$s_!YxqC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png 848w, https://substackcdn.com/image/fetch/$s_!YxqC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png 1272w, https://substackcdn.com/image/fetch/$s_!YxqC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!YxqC!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png" width="1200" height="546.24" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1138,&quot;width&quot;:2500,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:256341,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/197721855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d3b43d-c27d-44c5-a873-62688cc8f9a5_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YxqC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png 424w, https://substackcdn.com/image/fetch/$s_!YxqC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png 848w, https://substackcdn.com/image/fetch/$s_!YxqC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png 1272w, https://substackcdn.com/image/fetch/$s_!YxqC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33112d61-60dd-4b03-8a9b-b306fb5ccf5f_2500x1138.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Changes here have a pattern. The moment you see minor and major version changes on different sides of one API communication route, you know that backwards-incompatible changes were introduced here. </p><p>You know that without looking into the code or documentation at all!</p><p>You can also understand the direction of changes, because breach of a contract happens when a request moves from Minor &#8594; Major version change. Not sure what use you can make from that information.. But hey! To some degree, the surplus of information confirms the accuracy of the source.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UWh4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UWh4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png 424w, https://substackcdn.com/image/fetch/$s_!UWh4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png 848w, https://substackcdn.com/image/fetch/$s_!UWh4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png 1272w, https://substackcdn.com/image/fetch/$s_!UWh4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!UWh4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png" width="1444" height="773" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:773,&quot;width&quot;:1444,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98357,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/197721855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46a48fe1-486f-46bb-923c-af8c76427817_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UWh4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png 424w, https://substackcdn.com/image/fetch/$s_!UWh4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png 848w, https://substackcdn.com/image/fetch/$s_!UWh4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png 1272w, https://substackcdn.com/image/fetch/$s_!UWh4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3171de2-942d-472b-9fcb-fdd8e6ce9dcd_1444x773.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So, if you try to release your services on some synchronized cycle, SemVer++ starts to describe the state of internal communication. It will also give a source of truth about service compatibility, which will help when you move towards a <a href="https://map.r9y.dev/beck/map.html">proactive reliability approach</a>.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u-8b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u-8b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png 424w, https://substackcdn.com/image/fetch/$s_!u-8b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png 848w, https://substackcdn.com/image/fetch/$s_!u-8b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png 1272w, https://substackcdn.com/image/fetch/$s_!u-8b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!u-8b!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png" width="1200" height="474.85380116959067" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:812,&quot;width&quot;:2052,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:114390,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.blog/i/197721855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf9a32ac-528a-455e-ac28-9dd21fdf2cb7_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u-8b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png 424w, https://substackcdn.com/image/fetch/$s_!u-8b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png 848w, https://substackcdn.com/image/fetch/$s_!u-8b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png 1272w, https://substackcdn.com/image/fetch/$s_!u-8b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66126920-7588-4d55-9714-145d5a3c96ee_2052x812.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>That&#8217;s how we use SemVer as a reliable tool! </p><p>Now forget about all that shit and just use <a href="https://protobuf.dev/">Protocol Buffers</a>.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://reliableengineer.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://reliableengineer.blog/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://reliableengineer.blog/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share&quot;,&quot;text&quot;:&quot;Share Reliable Engineer&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://reliableengineer.blog/?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share Reliable Engineer</span></a></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Top-down simplicity]]></title><description><![CDATA[&#8220;Complex systems can only be controlled through simple tools. If you add complex tools to complex problems, you will get lost in complexity,&#8221; - Ludo Van der Heyden]]></description><link>https://reliableengineer.blog/p/top-down-simplicity</link><guid isPermaLink="false">https://reliableengineer.blog/p/top-down-simplicity</guid><dc:creator><![CDATA[Mykyta Khomenko]]></dc:creator><pubDate>Fri, 20 Feb 2026 21:10:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7hNe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As a Software Reliability Lead, my role is to build processes for others to operate and participate. If I were to describe the results of my work in one sentence, I would say: I&#8217;m building tools to make everyone else's problems appear simpler and less nuanced.</p><p>This is the motto! <em><strong>Software release process is a tool!</strong></em></p><p>To create a successful tool that will resolve company problems, you need 2 things:</p><ol><li><p>High willingness from teams to engage with your process.</p></li><li><p>Grant to technical stakeholders the ability to control their part of the process.</p></li></ol><p></p><p>To get the first point, you need to resolve at least one day-to-day pain from every team involved in the process:</p><ol><li><p>Software Engineers and DevOps want to communicate with each other in their technical language while refusing to learn each other&#8217;s.</p></li><li><p>Product and Project managers want CLEAR ETA&#8217;s and observability over production delivery.</p></li><li><p>Tech support wants to know which tasks are delivered and which are not.</p></li><li><p>etc. etc.</p></li></ol><p></p><p>For the second part, the rule of thumb is: everything that makes the <strong>process live on its own</strong>, without your major involvement, is <strong>good</strong>.  </p><p>When it comes to line managers, the tooling will be complex, but if (or when) you need to involve higher and higher levels of management, the tools will become simpler and simpler.</p><p>If the line management controls will be &#8220;stop release process until blocker X is done&#8220;, the CTO level will be a big red button, &#8220;FUCK, stop everything&#8220;.</p><p>This is the way.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://reliableengineer.blog/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://reliableengineer.blog/subscribe?"><span>Subscribe now</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7hNe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7hNe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png 424w, https://substackcdn.com/image/fetch/$s_!7hNe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png 848w, https://substackcdn.com/image/fetch/$s_!7hNe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png 1272w, https://substackcdn.com/image/fetch/$s_!7hNe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!7hNe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png" width="724" height="459.1825987406983" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1108,&quot;width&quot;:1747,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:325033,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://reliableengineer.substack.com/i/188614558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F503cc552-1856-438d-aaa2-f8b4fd9bb272_2500x1406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7hNe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png 424w, https://substackcdn.com/image/fetch/$s_!7hNe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png 848w, https://substackcdn.com/image/fetch/$s_!7hNe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png 1272w, https://substackcdn.com/image/fetch/$s_!7hNe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20714550-c1cf-4d6e-bdd6-635758b1d44c_1747x1108.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p>]]></content:encoded></item></channel></rss>