<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CI/CD &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/category/ci-cd/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bestdevops.com</link>
	<description>Lets Learn, Do it &#38; Share! Thats a Best DevOps!!!</description>
	<lastBuildDate>Wed, 14 Oct 2026 11:30:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>How can we become Certified Cloud bees Jenkins Engineer (CCJE)?</title>
		<link>https://www.bestdevops.com/how-can-we-become-certified-cloud-bees-jenkins-engineer-ccje/</link>
		
		<dc:creator><![CDATA[rahulkr]]></dc:creator>
		<pubDate>Fri, 20 Aug 2021 12:38:50 +0000</pubDate>
				<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[Jenkins]]></category>
		<category><![CDATA[Benefits]]></category>
		<category><![CDATA[CloudBees]]></category>
		<category><![CDATA[Courses]]></category>
		<category><![CDATA[Jenkins Engineer]]></category>
		<category><![CDATA[Software Delivery]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Training and Certification]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=19517</guid>

					<description><![CDATA[What is cloud bees Jenkins? As your business needs changes then want your team needs to adapt and create the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">What is cloud bees<a href="https://www.cloudbees.com/jenkins"> Jenkins</a>?</h1>



<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/Announcing.png" alt="" class="wp-image-19525" width="789" height="338" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/Announcing.png 770w, https://www.bestdevops.com/wp-content/uploads/2021/08/Announcing-300x129.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/Announcing-768x329.png 768w" sizes="(max-width: 789px) 100vw, 789px" /></figure>



<p class="wp-block-paragraph">As your business needs changes then want your team needs to adapt and create the best experience for your customers. Cloud bees Jenkins platform is a solution of two items are continuous integration (CI) and continuous delivery (CD) which extends the Jenkins process. It is developed for on-context installations. With<a href="https://www.devopsschool.com/"> cloud bees</a> Jenkins enterprise, they have simplified the user experience to make it easier to manage Jenkins for faster delivery. It helps to manage hike installations by administrators in case of DevOps increasing teams, projects, and clients while making professional due to Jenkins support.</p>



<h1 class="wp-block-heading">What are the benefits of cloud bees Jenkins?</h1>



<p class="wp-block-paragraph">As mention the cloud bees Jenkins. There is various supportive benefits associate with cloud bees Jenkins include such as:</p>



<div class="wp-block-image"><figure class="alignleft size-large is-resized"><img decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image10-1024x612.jpg" alt="" class="wp-image-19520" width="490" height="292" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image10-1024x612.jpg 1024w, https://www.bestdevops.com/wp-content/uploads/2021/08/image10-300x179.jpg 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/image10-768x459.jpg 768w, https://www.bestdevops.com/wp-content/uploads/2021/08/image10-1536x918.jpg 1536w, https://www.bestdevops.com/wp-content/uploads/2021/08/image10.jpg 1999w" sizes="(max-width: 490px) 100vw, 490px" /></figure></div>



<ul class="wp-block-list"><li>One click master provisioning</li><li>Elasticity and multi-tendency</li><li>Reduce infrastructure costs</li><li>Ensure resources are available</li><li>Resolve possible issues</li></ul>



<h1 class="wp-block-heading">Why we should learn cloud bees Jenkins?</h1>



<p class="wp-block-paragraph">Let’s take a look at the learning process of why cloud bees Jenkins is essential? For the future delivery of software, it provides DevOps solutions through leading enterprises. Developers are enabled to focus on great delivery software while providing powerful management risk mitigation, compliance, and administrative capabilities. Through this SaaS edition, it will make faster and possible controls over hands-on challenges. This possible adjective will make you efficient in future demand. &nbsp;</p>



<h1 class="wp-block-heading">How our cloud bees Jenkins course/training would help?</h1>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/Microservices-Business-Agility-1280x720-1-1024x576.jpg" alt="" class="wp-image-19521" width="732" height="411" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/Microservices-Business-Agility-1280x720-1-1024x576.jpg 1024w, https://www.bestdevops.com/wp-content/uploads/2021/08/Microservices-Business-Agility-1280x720-1-300x169.jpg 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/Microservices-Business-Agility-1280x720-1-768x432.jpg 768w, https://www.bestdevops.com/wp-content/uploads/2021/08/Microservices-Business-Agility-1280x720-1-375x210.jpg 375w, https://www.bestdevops.com/wp-content/uploads/2021/08/Microservices-Business-Agility-1280x720-1.jpg 1280w" sizes="(max-width: 732px) 100vw, 732px" /></figure></div>



<p class="wp-block-paragraph">After getting the intact information through cloud bees Jenkins, its benefit around the software community and their importance around the IT infrastructure. Now, these tutorials or course would help to become a certified cloud bees Jenkins engineer (CCJE). With knowing the fundamentals of Jenkins. Jenkins pipeline, Jenkins administration, and cloud bees core. </p>



<p class="wp-block-paragraph">Let’s talk about the certification. As you know that every courses, training, &amp; tutorials have its own values with certification. It creates an identity for the engineers. If you get certification in the field of cloud bees Jenkins then you get jobs after certification like Jenkins specialized DevOps engineer, Jenkins engineer, Jenkins administrator, build and release engineer, test automation engineer, and Jenkins trainer and also get a high paid salary. however, salary may differ as per your experience. And with the highest paying certification, you get a better job career with SaaS software advances. Without knowing these featuring conditions, it wouldn’t be possible for you to take further steps in the future for software delivery.</p>



<h3 class="wp-block-heading">Related video:</h3>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy"  id="_ytid_95004"  width="675" height="379"  data-origwidth="675" data-origheight="379" src="https://www.youtube.com/embed/ZRbDVzkCizw?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;" class="__youtube_prefs__  epyt-is-override  no-lazyload" title="YouTube player"  allow="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-no-lazy="1" data-skipgform_ajax_framebjll=""></iframe>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How can we become Certified Jenkins Engineers (CJE)?</title>
		<link>https://www.bestdevops.com/how-we-can-become-certified-jenkins-engineers-cje/</link>
		
		<dc:creator><![CDATA[rahulkr]]></dc:creator>
		<pubDate>Sat, 14 Aug 2021 12:37:35 +0000</pubDate>
				<category><![CDATA[Build and Release]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Continuous Deployment]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[Jenkins]]></category>
		<category><![CDATA[Benefits]]></category>
		<category><![CDATA[certifications]]></category>
		<category><![CDATA[Courses]]></category>
		<category><![CDATA[Jenkins Engineer]]></category>
		<category><![CDATA[Training and Certification]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=19073</guid>

					<description><![CDATA[What is a Jenkins? Friends as you already know that software development is a very huge and heavy process. There [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading"><strong>What is a Jenkins?</strong></h1>



<div class="wp-block-image"><figure class="alignright size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/certified-jenkins-enginner.png" alt="" class="wp-image-19074" width="579" height="304" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/certified-jenkins-enginner.png 600w, https://www.bestdevops.com/wp-content/uploads/2021/08/certified-jenkins-enginner-300x158.png 300w" sizes="auto, (max-width: 579px) 100vw, 579px" /></figure></div>



<p class="wp-block-paragraph">Friends as you already know that software development is a very huge and heavy process. There are so many innumerable moving parts of it. In order to improve the development process, we utilize the methodology of DevOps and its tools. In DevOps, there are so many phases. This is one of the most favorable phases as continuous integration which is willing to help you in coming all together with the parts of software development and manages all of them. Therefore, there is a very popular tool named ‘Jenkins’.</p>



<p class="wp-block-paragraph">&nbsp;Jenkins is an open-source automation tool. Now, we will learn about continuous integration and using it in Jenkins. It is a phase of DevOps in which we are continuously doing integrate all of your software development processes in parts and take parts to combine all together. Well, we say combine but it actually controls through continuous integration.</p>



<h1 class="wp-block-heading"><strong>What are the benefits of Jenkins?</strong></h1>



<p class="wp-block-paragraph">Take a brief history of Jenkins. Jenkins was originally developed in 2004 by the sun microsystems company under the name Hudson. It had slowly gained popularity and had become one of the best developing tools out there. After this, the project was later named Jenkins when oracle bought microsystems and decided to keep Hudson &amp; Jenkins as separate entities. It is now one of the most popular CI/CD tools in use out there. As we can see certain benefits are associated with:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/pic1.png" alt="" class="wp-image-19075" width="714" height="253" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/pic1.png 624w, https://www.bestdevops.com/wp-content/uploads/2021/08/pic1-300x106.png 300w" sizes="auto, (max-width: 714px) 100vw, 714px" /></figure>



<ul class="wp-block-list"><li><strong>Jenkins is a community tool – its open source and has a very large community that contributes to it regularly.</strong></li><li><strong>Its free so you don’t have to accrue anymore subscription costs</strong></li><li><strong>Easy for the developers to find and fix issues.</strong></li><li><strong>Improves code quality, minimize defects.</strong></li></ul>



<h1 class="wp-block-heading"><strong>Why we should learn Jenkins?</strong></h1>



<p class="wp-block-paragraph">After getting the benefits of Jenkins. Now, looking for the learning process. We are learning for using it. We use it for seeing widely use through DevOps team, build and release teams, and dev teams. Due to it provides feedback loop back to the developer and fix the errors. It developer has fresh in the memory for quick error. It can publish every build of your software and has already gone through automation testing. Further uses associates with this such as easy interface, easy to navigate, easy document and example, free and open-source, plugin and functionality, and users around the world.</p>



<h1 class="wp-block-heading"><strong>How our Jenkins course/training would help?</strong></h1>



<div class="wp-block-image"><figure class="alignright size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/Building-a-dev2Ftest2Fprod-Pipeline-with-Jenkins-1-881x441-1.jpg" alt="" class="wp-image-19076" width="645" height="323" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/Building-a-dev2Ftest2Fprod-Pipeline-with-Jenkins-1-881x441-1.jpg 881w, https://www.bestdevops.com/wp-content/uploads/2021/08/Building-a-dev2Ftest2Fprod-Pipeline-with-Jenkins-1-881x441-1-300x150.jpg 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/Building-a-dev2Ftest2Fprod-Pipeline-with-Jenkins-1-881x441-1-768x384.jpg 768w" sizes="auto, (max-width: 645px) 100vw, 645px" /></figure></div>



<p class="wp-block-paragraph">Through the course tutorial, we get intact knowledge and practices that help you in working along with the Jenkins. It allows you to create build jobs on certain kinds of projects such as freestyle projects, pipelines, multi-configuration projects, multi-branch pipelines, folders, and GitHub organizations. After this we are getting benefitted from tutorials in two items, one is the Jenkins freestyle job it comes under many configures as general, source code management, build triggers, build environment, build, and post-build actions. Another is the pipeline, it comes with certain stages as CI/CD pipeline, Jenkins file, and Jenkins pipeline. I hope this will make you clearer to understand about the tool, their automation process, and software development process connections with different phases by using different plugins depending upon your needs. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Scale Microservices CI/CD Pipelines</title>
		<link>https://www.bestdevops.com/how-to-scale-microservices-ci-cd-pipelines/</link>
					<comments>https://www.bestdevops.com/how-to-scale-microservices-ci-cd-pipelines/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 19 May 2020 05:51:43 +0000</pubDate>
				<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[IT technology]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[Software-Market]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=12530</guid>

					<description><![CDATA[Managing hundreds of microservice CI/CD pipelines is a real operational burden. Learn how container-based pipelines, context-aware triggers, and canary releases can help teams scale delivery without chaos.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Microservices architecture promises a lot: decoupled components, independent deployment cycles, and the ability to scale individual services on demand. In practice, however, many teams discover that the operational complexity of running CI/CD at microservices scale can quickly become a bottleneck in its own right.</p>



<p class="wp-block-paragraph">This article draws on a talk by Dan Garfield, chief technology evangelist at Codefresh, delivered in episode five of the DevNetwork Dev Professional Series, and summarised on <a href="https://devops.com" rel="noopener">devops.com</a>. Garfield walked through real-world pitfalls and practical strategies for scaling microservices delivery pipelines without losing your mind—or your budget.</p>



<h2 class="wp-block-heading">Why Microservices? The Case Against the Monolith</h2>



<p class="wp-block-paragraph">To illustrate why tightly coupled, monolithic architectures create problems, Garfield used an analogy from the Apollo 13 mission. Apollo 13 flew with two separate modules—the command module and the lunar module—each built by different engineering teams with different design conventions. When the command module suffered an oxygen failure, the crew needed to repurpose oxygen filters from the lunar module. The filters were incompatible, forcing an improvised, high-stakes retrofit.</p>



<p class="wp-block-paragraph">The analogy maps directly to software: monolithic teams build conventions that work internally but are incompatible with anything outside. Reuse becomes nearly impossible, code value decreases, and development effort increases.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Being able to reuse components and scale independently is the benefit of microservices.&#8221;</p><cite>— Dan Garfield, Chief Technology Evangelist, Codefresh</cite></blockquote>



<h2 class="wp-block-heading">Expedia&#8217;s Microservices Journey: A Real-World Case Study</h2>



<p class="wp-block-paragraph">Garfield used Expedia as a concrete example of an organisation that moved from monolithic services to discrete microservices—one for car search, one for car sorting, one for bookings, one for airline search, and so on. Breaking the monolith improved elasticity and allowed individual services to be deployed and scaled independently.</p>



<p class="wp-block-paragraph">However, Expedia&#8217;s microservices journey also surfaced a class of problems that the team had not fully planned for: how to manage CI/CD at scale.</p>



<h2 class="wp-block-heading">Common Problems When CI/CD Meets Microservices at Scale</h2>



<p class="wp-block-paragraph">Most teams begin with one CI/CD pipeline per microservice. That approach works at ten services. It becomes unmanageable at hundreds or thousands. Garfield summarised the key failure modes:</p>



<h3 class="wp-block-heading">1. Pipeline Sprawl</h3>



<p class="wp-block-paragraph">Each microservice gets its own pipeline, each pipeline connects to its own Git repository, and some services need separate pipelines for production, staging, and testing. The result is an enormous surface area to maintain, where a single policy change—say, adding a security scan step—must be manually applied across hundreds of pipeline definitions.</p>



<h3 class="wp-block-heading">2. Network and Infrastructure Costs</h3>



<p class="wp-block-paragraph">Running full validation and integration test suites across thousands of separate pipelines consumes substantial network bandwidth and compute. The cost—both financial and in build time—can grow faster than the engineering team anticipates.</p>



<h3 class="wp-block-heading">3. Shared Library Fragmentation</h3>



<p class="wp-block-paragraph">A common instinct is to consolidate common pipeline logic into shared libraries. But shared libraries introduce version-specific dependency conflicts. Expedia developers using Jenkins, for example, were forced to manually copy-paste pipeline code from one definition to the next. Different teams adopted different conventions, leading to shadow IT and inconsistent delivery practices.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;The scale of automation itself is where most people have the biggest bottlenecks.&#8221;</p><cite>— Dan Garfield</cite></blockquote>



<h2 class="wp-block-heading">Three Strategies for Scaling Microservices CI/CD</h2>



<h3 class="wp-block-heading">1. Use Container-Based Pipelines</h3>



<p class="wp-block-paragraph">Rather than relying on shared libraries baked into the CI server, Garfield recommended building each pipeline step as a container image. Each image is self-contained, carries its own runtime and dependencies, and can be versioned and pulled independently.</p>



<p class="wp-block-paragraph">The practical advantages include:</p>



<ul class="wp-block-list">
<li><strong>Language version isolation:</strong> Teams can run different language runtimes in the same pipeline without conflicts.</li>
<li><strong>Self-service:</strong> Developers pull the image version they need without waiting for a platform team to update a shared library.</li>
<li><strong>Reusable step images:</strong> Common CI tasks—cloning a repository, building a Docker image, running unit tests, linting, or executing a security scan—can be published as standardised images on a registry such as Docker Hub and reused across every pipeline without duplication.</li>
</ul>



<p class="wp-block-paragraph">This approach makes the pipeline itself composable in the same way that microservices make the application composable.</p>



<h3 class="wp-block-heading">2. Consolidate to a Single Context-Aware Pipeline</h3>



<p class="wp-block-paragraph">Instead of maintaining a separate pipeline definition for every microservice, Garfield proposed converging to a single, parameterised pipeline that adapts its behaviour based on the context provided at trigger time.</p>



<p class="wp-block-paragraph">The mechanism works as follows:</p>



<ul class="wp-block-list">
<li><strong>Triggers carry metadata:</strong> When a pipeline run is initiated—by a Git commit, a push to an image registry, a scheduled job, or a pull request event—the trigger passes along contextual information: which repository, which branch, which service, which environment.</li>
<li><strong>The pipeline adapts:</strong> Downstream steps read that context to decide what to clone, which dependencies to fetch, which tests to run, and where to deploy.</li>
<li><strong>Filtering and observability:</strong> A single pipeline surface gives operators a unified view of commits and changes across all services, making it easier to audit and troubleshoot.</li>
</ul>



<p class="wp-block-paragraph">Garfield demonstrated this pattern within the Codefresh platform, which provides native Kubernetes integrations and a trigger model designed for exactly this use case. The trade-off is a modest reduction in per-service pipeline customisation, but the operational simplicity gained typically outweighs the constraint.</p>



<h3 class="wp-block-heading">3. Adopt a Canary Release Strategy</h3>



<p class="wp-block-paragraph">When an organisation operates hundreds or thousands of microservices, spinning up full integration test environments for every service on every commit becomes cost-prohibitive. Garfield acknowledged that at sufficient scale, &#8220;testing early becomes less useful as infrastructure complexity arises.&#8221;</p>



<p class="wp-block-paragraph">A canary release strategy addresses this by routing a small percentage of real production traffic to the new version of a service before a full rollout. Key benefits include:</p>



<ul class="wp-block-list">
<li><strong>Reduced blast radius:</strong> If the new version has a defect, only a small fraction of users are affected.</li>
<li><strong>Real-world signal:</strong> Canary traffic exercises the service under actual production conditions—load patterns, data shapes, dependent services—that synthetic tests often miss.</li>
<li><strong>Faster feedback loops:</strong> Teams can validate behaviour quickly without waiting for heavyweight integration environments to spin up.</li>
</ul>



<p class="wp-block-paragraph">Canary releases work particularly well when paired with feature flags and automated rollback policies based on error-rate or latency thresholds.</p>



<h2 class="wp-block-heading">The Core Insight: Make CI/CD Reusable, Just Like Microservices</h2>



<p class="wp-block-paragraph">The thread running through all three strategies is the same principle that makes microservices valuable in the first place: reusability through modularity. Containerised pipeline steps, a single parameterised pipeline, and progressive delivery techniques all reduce duplication and make the delivery system easier to reason about as the service count grows.</p>



<p class="wp-block-paragraph">If your organisation is hitting the limits of one-pipeline-per-service, the starting point is not to add more pipelines—it is to redesign the pipeline architecture with the same discipline you applied to the application architecture.</p>



<h2 class="wp-block-heading">Key Takeaways</h2>



<ul class="wp-block-list">
<li>Pipeline sprawl is one of the most common and underestimated costs of a microservices migration.</li>
<li>Shared libraries create version-conflict problems; container-based pipeline steps are a more maintainable alternative.</li>
<li>A single, context-aware pipeline driven by rich trigger metadata can replace thousands of near-identical pipeline definitions.</li>
<li>Canary releases help manage testing costs and risk as service count grows.</li>
<li>The goal is to make your CI/CD system as modular and reusable as the microservices it deploys.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-to-scale-microservices-ci-cd-pipelines/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Testing in Production: From Developer Joke to Cloud-Native Best Practice</title>
		<link>https://www.bestdevops.com/for-cloud-native-applications-testing-in-production-goes-from-punchline-to-best-practice/</link>
					<comments>https://www.bestdevops.com/for-cloud-native-applications-testing-in-production-goes-from-punchline-to-best-practice/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 03 Apr 2020 05:38:17 +0000</pubDate>
				<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[CircleCI]]></category>
		<category><![CDATA[cloud-native]]></category>
		<category><![CDATA[IT technology]]></category>
		<category><![CDATA[Software-Market]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=11555</guid>

					<description><![CDATA[What was once an absurd punchline—"we test in production"—has become a legitimate engineering strategy for cloud-native applications. Here's why the shift happened and what it means for your CI/CD and observability toolchain.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Not long ago, a developer who told their manager &#8220;we test in production&#8221; was guaranteed to end the conversation immediately. The phrase was so obviously reckless it functioned as a joke. Today, for teams running cloud-native, microservices-based applications, testing in production is increasingly treated as a rational—and sometimes unavoidable—part of the software delivery lifecycle.</p>



<h2 class="wp-block-heading">Why Monolithic Testing Assumptions No Longer Hold</h2>



<p class="wp-block-paragraph">For most of the past two decades, the Continuous Integration/Continuous Delivery (CI/CD) pipeline was the canonical place to validate software changes. This worked well when applications were largely monolithic. The scope of change was bounded, the desired end-state was well-defined, and automated tests in the pipeline could verify it before anything reached users.</p>



<p class="wp-block-paragraph">Microservices architectures break that assumption. When an application is composed of dozens or hundreds of independent services, the pipeline cannot build and test all of them simultaneously. At any given moment, some services are being rewritten, some are deploying, and others are already running in production—each at a different version. The concept of a single, stable &#8220;desired state&#8221; for the whole system becomes difficult to define, let alone test for.</p>



<p class="wp-block-paragraph">This is not just a tooling problem. It is a fundamental shift in where change validation has to happen.</p>



<h2 class="wp-block-heading">Production as the Only Place Where the Full System Exists</h2>



<p class="wp-block-paragraph">In a microservices environment, the production environment is often the only place where all services are running together in their current state. Pre-production environments are expensive to keep fully representative, and they typically lag behind the real thing. This makes production the most realistic—sometimes the only realistic—environment for certain classes of testing.</p>



<p class="wp-block-paragraph">That does not mean shipping untested code and hoping for the best. It means combining several disciplines:</p>



<ul class="wp-block-list">
<li><strong>Observability:</strong> Instrumenting services so that failures surface quickly and can be understood in context, not just detected.</li>
<li><strong>Progressive delivery:</strong> Techniques such as feature flags, canary deployments, and traffic shadowing limit blast radius when something goes wrong.</li>
<li><strong>Fast rollback:</strong> The ability to revert or re-route traffic quickly reduces the cost of a failure that does reach users.</li>
<li><strong>Small, frequent changes:</strong> Deploying smaller increments makes it easier to isolate the cause of a regression and reduces the risk of any single deployment.</li>
</ul>



<p class="wp-block-paragraph">With the right combination of these practices, production testing is not reckless—it is disciplined risk management applied to an environment that cannot be fully replicated elsewhere.</p>



<h2 class="wp-block-heading">Observing State vs. Validating Change</h2>



<p class="wp-block-paragraph">Two complementary philosophies are converging here, and it helps to keep them distinct.</p>



<h3 class="wp-block-heading">Observability: Understanding What Is Happening Now</h3>



<p class="wp-block-paragraph">Tools and vendors in the observability space—such as Honeycomb—argue that in sufficiently complex distributed systems, most failures result from the convergence of multiple simultaneous conditions rather than a single identifiable bug. Traditional monitoring, which checks for known failure modes, cannot catch these emergent problems. Observability tooling instead gives engineers the ability to ask arbitrary questions of their running system and understand its internal state from its external outputs.</p>



<p class="wp-block-paragraph">This is <em>observing state</em>: understanding what the system is doing right now. It is powerful, but it does not by itself tell you whether a specific change you just deployed is safe.</p>



<h3 class="wp-block-heading">CI/CD: Validating Change as It Moves Through the System</h3>



<p class="wp-block-paragraph">CI/CD pipelines are built to <em>validate change</em>: each commit triggers a sequence of builds, automated tests, and deployment steps that provide confidence before code reaches users. Rob Zuber, CTO of CircleCI, described this distinction in an eBook published in early 2020, arguing that the CI/CD tool is well-positioned at the center of the delivery stack precisely because it understands change—what changed, when, and what the test results were.</p>



<p class="wp-block-paragraph">According to Zuber, CircleCI itself uses its own CI/CD platform alongside complementary tools for crash reporting, observability, and centralised logging. No single tool covers the full picture; the CI/CD system acts as the anchor that ties change context to the operational data coming from observability tools.</p>



<h2 class="wp-block-heading">Putting Change and State Together</h2>



<p class="wp-block-paragraph">The mature position, reflected in both the observability camp and the CI/CD camp, is that neither approach alone is sufficient. Effective quality management for cloud-native applications requires:</p>



<ol class="wp-block-list">
<li><strong>Good coding and review practices</strong> to prevent avoidable defects from entering the pipeline at all.</li>
<li><strong>Source control management</strong> that gives every change a clear audit trail.</li>
<li><strong>Automated testing in CI/CD</strong> to catch regressions before deployment.</li>
<li><strong>Progressive delivery mechanisms</strong> to limit exposure when untested interactions emerge in production.</li>
<li><strong>Observability in production</strong> to detect and diagnose problems that only manifest under real traffic and real data.</li>
<li><strong>Fast incident response and rollback</strong> to contain blast radius.</li>
</ol>



<p class="wp-block-paragraph">These are not competing approaches. They are layers of a single strategy, each addressing the risks the others cannot fully cover.</p>



<h2 class="wp-block-heading">What This Means for DevOps Teams</h2>



<p class="wp-block-paragraph">If your organisation is moving toward microservices or cloud-native architectures, the testing strategy that served you well with monoliths will develop gaps. Some practical steps worth evaluating:</p>



<ul class="wp-block-list">
<li><strong>Audit your pre-production environments.</strong> How representative are they of production? Where are the gaps, and what risks do those gaps create?</li>
<li><strong>Invest in distributed tracing and structured logging.</strong> These are the foundation of meaningful observability in a microservices environment.</li>
<li><strong>Adopt feature flags.</strong> Decoupling deployment from feature release gives you a fast, low-risk lever when something goes wrong in production.</li>
<li><strong>Make deployments smaller and more frequent.</strong> Counter-intuitively, deploying more often—in smaller increments—reduces the risk of each individual deployment and makes problems easier to isolate.</li>
<li><strong>Instrument your CI/CD pipeline to emit change context.</strong> When your observability tooling can correlate a spike in errors with a specific deployment, mean time to resolution drops significantly.</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Testing in production is no longer a euphemism for negligence. For teams operating distributed, cloud-native systems, it is an acknowledgement that production is the only environment where the full system—with its real dependencies, real data volumes, and real user behaviour—can be observed. The goal is not to skip testing; it is to extend testing into the environment where the most important unknowns actually live, with the observability and delivery engineering discipline to do so safely.</p>



<p class="wp-block-paragraph">Cloud-native development is transforming every part of the software delivery lifecycle. Testing is one of the most consequential areas of that transformation, and teams that adapt their quality strategy accordingly will be better positioned to move fast without accumulating unmanageable risk.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/for-cloud-native-applications-testing-in-production-goes-from-punchline-to-best-practice/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
