<?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>Test Driven DevOps &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/category/test-driven-devops/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>Tue, 13 Oct 2026 22:54:25 +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>2019 in Review: The Tech Developments That Shaped DevOps and the IT Industry</title>
		<link>https://www.bestdevops.com/2019-recap-on-tech-updates-that-made-headlines/</link>
					<comments>https://www.bestdevops.com/2019-recap-on-tech-updates-that-made-headlines/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 31 Dec 2019 06:50:38 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[digital transformations]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[Technical]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=9827</guid>

					<description><![CDATA[A look back at the most significant technology developments of 2019, including Kubernetes adoption for big data, AI momentum, IoT investment, and the push for data privacy legislation.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Originally published December 31, 2019. Source article: expresscomputer.in.</em></p>



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



<p class="wp-block-paragraph">2019 was a pivotal year for the technology industry. From the maturation of container orchestration to accelerating AI adoption and a global reckoning with data privacy, the year laid significant groundwork for the decade ahead. This recap covers the major IT developments that defined 2019 and gave practitioners plenty to look forward to in 2020 and beyond.</p>



<h2 class="wp-block-heading">Big Data Meets Kubernetes</h2>



<p class="wp-block-paragraph">One of the defining technical stories of 2019 was the convergence of big data workloads with Kubernetes-based infrastructure. What began as a container orchestration tool for web applications steadily proved its value for data engineering teams running distributed, microservices-oriented pipelines.</p>



<p class="wp-block-paragraph">Kubernetes, originally designed at Google and released as open source, automates the deployment, scaling, and management of containerised applications. In 2019, data teams increasingly adopted it to manage complex, stateful workloads—tasks that were historically difficult to containerise. Frameworks such as Apache Spark and Apache Flink added or improved native Kubernetes support, making it more practical to run large-scale analytics jobs on container infrastructure rather than dedicated cluster managers like YARN.</p>



<p class="wp-block-paragraph">At the industry level, major cloud providers and SaaS companies made significant acquisitions in the data analytics and visualisation space, signalling strong commercial confidence in big data&#8217;s growth trajectory. Google Cloud and Salesforce were among the prominent names that expanded their data capabilities through strategic purchases during the year.</p>



<h2 class="wp-block-heading">Accelerating Momentum in AI and Machine Learning</h2>



<p class="wp-block-paragraph">Artificial intelligence and machine learning dominated technology headlines throughout 2019. Investment in AI research centres, university programmes, and enterprise AI platforms reached new highs globally, with notable activity in markets such as India.</p>



<p class="wp-block-paragraph">Key application areas that gained traction during the year included:</p>



<ul class="wp-block-list">
<li><strong>Facial recognition and public safety:</strong> Law enforcement agencies, including in India, began piloting AI-powered facial recognition systems for applications such as identifying suspects and locating missing persons. These deployments also prompted significant ethical debate about civil liberties and accuracy.</li>
<li><strong>Ride-sharing and delivery optimisation:</strong> Platforms such as Uber, Ola, and Swiggy deployed machine learning models to analyse customer behaviour, optimise routing, and personalise recommendations.</li>
<li><strong>Workplace automation:</strong> Organisations across industries used AI to automate repetitive administrative tasks, including initial resume screening, scheduling, and document processing.</li>
<li><strong>Autonomous vehicles:</strong> The automotive sector continued to invest heavily in ML-driven data pipelines for sensor fusion, object detection, and real-time decision-making in self-driving systems.</li>
</ul>



<p class="wp-block-paragraph">Industry analysts projected continued strong revenue growth for the AI market into the mid-2020s, though specific forecasts varied by source and methodology.</p>



<h2 class="wp-block-heading">Enterprise IoT Investment Reaches a New Level</h2>



<p class="wp-block-paragraph">The Internet of Things moved from pilot projects to production deployments at scale in 2019, with several high-profile corporate announcements reflecting growing confidence in IoT infrastructure.</p>



<ul class="wp-block-list">
<li><strong>Microsoft</strong> acquired Express Logic, the company behind the ThreadX real-time operating system (RTOS). The move was aimed at extending Microsoft&#8217;s Azure IoT reach to highly constrained embedded devices that traditional operating systems cannot support.</li>
<li><strong>SAP</strong> launched its Leonardo IoT platform, designed to bridge the gap between raw IoT sensor data and enterprise business process data. The platform targeted organisations undergoing digital transformation who needed to combine operational technology (OT) data with IT systems of record.</li>
<li><strong>Cisco</strong> announced plans to acquire Sentryo (later completed), a company specialising in industrial network visibility and OT/IoT security. Cisco also signalled a strategic shift toward edge-based networking architectures, processing data closer to the devices generating it rather than routing everything through centralised cloud infrastructure.</li>
</ul>



<p class="wp-block-paragraph">These investments illustrated a broader industry recognition that IoT success depends not just on connectivity but on security, real-time data processing, and integration with existing enterprise systems.</p>



<h2 class="wp-block-heading">Data Privacy Legislation Gains Urgency</h2>



<p class="wp-block-paragraph">2019 was a difficult year for data stewardship. High-profile breaches and misuse scandals affected major social media platforms, healthcare organisations, and government agencies alike, keeping data privacy at the top of the regulatory agenda.</p>



<p class="wp-block-paragraph">In India, the government advanced the Personal Data Protection Bill, which received cabinet approval and was referred to a parliamentary committee for review. Modelled in part on principles similar to Europe&#8217;s GDPR, the bill aimed to establish a legal framework governing how organisations collect, store, and process personal data belonging to Indian citizens. It proposed definitions of what constitutes a data breach and outlined the obligations and liabilities of data fiduciaries.</p>



<p class="wp-block-paragraph">For DevOps and engineering teams, the implication was clear: data governance could no longer be treated as purely a compliance concern owned by legal departments. Practices such as data classification, access control, audit logging, and breach detection would increasingly need to be built into the software delivery lifecycle itself.</p>



<h2 class="wp-block-heading">Looking Ahead: What 2019 Set in Motion</h2>



<p class="wp-block-paragraph">The technology shifts of 2019 were not isolated events. Each trend reinforced the others:</p>



<ul class="wp-block-list">
<li>Kubernetes matured into a platform capable of running not just microservices but data and ML workloads, accelerating the path to MLOps.</li>
<li>AI moved from proof-of-concept to production, raising new questions about observability, model governance, and bias that DevOps practices would need to address.</li>
<li>IoT deployments at scale created demand for edge computing architectures and security frameworks that treated devices as first-class infrastructure components.</li>
<li>Data privacy regulations pushed engineering teams to treat compliance as a technical discipline rather than an afterthought.</li>
</ul>



<p class="wp-block-paragraph">Taken together, 2019 established the conditions for the broader platform engineering, MLOps, and data mesh conversations that would dominate the early 2020s.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/2019-recap-on-tech-updates-that-made-headlines/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Is AI the Key to Improving Software Testing Speed, Coverage, and Developer Wellbeing?</title>
		<link>https://www.bestdevops.com/is-ai-the-key-to-improving-speed-testing-and-even-your-personal-state/</link>
					<comments>https://www.bestdevops.com/is-ai-the-key-to-improving-speed-testing-and-even-your-personal-state/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 31 Oct 2019 06:19:44 +0000</pubDate>
				<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Delivery]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[software updates]]></category>
		<category><![CDATA[Testing]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=9003</guid>

					<description><![CDATA[Software testing has barely evolved since the 1990s. AI-powered quality analytics can eliminate bottlenecks, reduce test execution times, close coverage gaps, and restore focus to the work that actually matters.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a piece originally published on softwaretestingnews.co.uk, written by Scott Dainty, Head of Enterprise Sales at SeaLights, a Software Quality Intelligence Platform.</em></p>



<h2 class="wp-block-heading">Testing Is Still in the Dark Ages</h2>



<p class="wp-block-paragraph">The uncomfortable truth in software delivery is that testers, test engineers, and developers spend a disproportionate amount of their working day <strong>waiting</strong>. Even teams that have adopted continuous integration, continuous testing, and continuous delivery pipelines still contend with systemic inefficiency: too much waste, too much complexity, too many bottlenecks, and too much idle time.</p>



<p class="wp-block-paragraph">That waiting persists whether a team runs automated pipelines or traditional waterfall processes. Every delivery process has choke points, and the most consistent bottleneck in software delivery is testing.</p>



<p class="wp-block-paragraph">Software testing became a formal discipline in the 1990s. Despite decades of advances in automation, tooling, and practitioner skills, the fundamental approach has changed surprisingly little. The application under test remains largely a black box. Testers rarely get meaningful visibility into how code is executed at runtime, so they compensate by casting the widest possible testing net — hoping to catch defects through sheer coverage breadth.</p>



<p class="wp-block-paragraph">The problem with a broad net is twofold:</p>



<ul class="wp-block-list">
<li>The holes are often too large — defects escape.</li>
<li>The net is sometimes aimed in the wrong direction — tests validate code paths that haven&#8217;t changed while genuinely risky areas go untested.</li>
</ul>



<p class="wp-block-paragraph">Teams compensate by growing their test suites and automating more. But automation has a ceiling. Once the cost and effort of maintaining tests outweighs the value those tests deliver, further automation becomes its own form of waste. At that point, the principle of <em>less is more</em> — running fewer, better-targeted tests — becomes more effective than adding more test cases.</p>



<p class="wp-block-paragraph">Consider this: a large proportion of the tests run in any given iteration cover code paths that haven&#8217;t changed in that build cycle. Those test runs produce no new information. Meanwhile, genuinely risky, recently changed, or poorly covered code paths may receive inadequate attention. The result is applications that reach production carrying hidden quality risks.</p>



<h2 class="wp-block-heading">How AI Can Illuminate Testing</h2>



<p class="wp-block-paragraph">Artificial intelligence is broadly defined as <em>the theory and development of computer systems able to perform tasks normally requiring human intelligence, such as visual perception, speech recognition, decision-making, and translation between languages.</em></p>



<p class="wp-block-paragraph">AI performs best when it has large volumes of data to analyse, pattern-match, and draw inferences from. Software testing generates exactly that kind of data at scale. Modern applications can comprise millions of lines of code and thousands of associated test cases. The sheer volume makes human analysis impractical — no team can manually reason about which tests to prioritise across a codebase of that size for every build.</p>



<p class="wp-block-paragraph">AI and quality analytics address this by instrumenting the application under test and observing how code is actually executed. By gathering millions of data points across test interactions — tracking which lines of code each test exercises and what behaviour it validates — an AI system can:</p>



<ul class="wp-block-list">
<li>Identify untested or under-tested code paths (test gap analysis).</li>
<li>Correlate specific code changes to the tests most likely to detect regressions in those changes.</li>
<li>Produce prioritised recommendations for where to invest new test effort.</li>
<li>Surface actionable quality analytics in seconds, rather than requiring manual review of coverage reports.</li>
</ul>



<p class="wp-block-paragraph">In short, AI shifts testing from trawling with a broad net to targeted spearfishing: fewer tests, better aimed, with a higher probability of finding real defects.</p>



<h2 class="wp-block-heading">Reducing Quality Risks Through AI</h2>



<p class="wp-block-paragraph">Even in mature Continuous Delivery pipelines, applications typically pass through multiple test stages — unit, integration, system, and user acceptance — before reaching production. Most teams rely on static code coverage tools to understand how much of their codebase is tested. However, static coverage metrics tell you <em>whether</em> a line of code was touched during testing, not <em>how well</em> the behaviour of that code was validated across different test stages and real interaction paths.</p>



<p class="wp-block-paragraph">This gap in understanding creates hidden quality risks. Test suites can show high coverage percentages while still leaving critical logic paths unverified. Defects in those unverified paths escape to production.</p>



<p class="wp-block-paragraph">AI-driven quality analytics address this by tracking the detailed &#8220;footprint&#8221; each test leaves across the application at runtime. By processing those footprints at scale, an AI system can:</p>



<ul class="wp-block-list">
<li>Identify the highest-risk areas of the application — code that is complex, frequently changed, or poorly covered.</li>
<li>Pinpoint specific test gap traps where existing tests provide the illusion of coverage without meaningful validation.</li>
<li>Guide teams to allocate test investment where it will reduce the most risk, rather than where it is easiest to add tests.</li>
</ul>



<h2 class="wp-block-heading">Reducing Test Execution Time Through AI</h2>



<p class="wp-block-paragraph">In a typical regression test cycle, the vast majority of the code being tested has not changed since the previous build. Tests that re-validate unchanged code paths provide no new signal — they consume time and infrastructure without improving confidence in the release.</p>



<p class="wp-block-paragraph">If AI can identify which code has changed and which tests meaningfully exercise that changed code, teams can run a precisely targeted subset of their full test suite for each build. Advocates of this approach argue that intelligent test selection could reduce test execution time and commit-to-deploy cycle time significantly, though specific figures will vary by codebase, pipeline, and tooling.</p>



<p class="wp-block-paragraph">An AI-powered test selection system can factor in multiple signals when composing an optimised test run:</p>



<ul class="wp-block-list">
<li><strong>Change impact:</strong> Which tests cover the code paths affected by the current code diff?</li>
<li><strong>Flakiness:</strong> Which tests have an unstable pass/fail history that warrants closer attention?</li>
<li><strong>Production usage:</strong> Which parts of the application are accessed most frequently by real users, making regressions there most damaging?</li>
<li><strong>Complexity:</strong> Which recent changes introduced significant new complexity and therefore carry higher inherent risk?</li>
<li><strong>Historical failure rates:</strong> Which tests have the highest probability of detecting defects and should therefore run first and most often?</li>
</ul>



<p class="wp-block-paragraph">This <strong>targeted testing</strong> model finds defects earlier in the pipeline, tightens the feedback loop between code commit and defect detection, and reduces the cognitive overhead on developers waiting for test results. Faster, more precise feedback also means testers get quicker confirmation when their work uncovers a real problem — a meaningful improvement to day-to-day job satisfaction.</p>



<h2 class="wp-block-heading">Embracing AI in Your Testing Strategy</h2>



<p class="wp-block-paragraph">Modern applications — particularly microservices architectures — involve millions of lines of code, complex dependency graphs, and thousands of test cases accumulated over years of development. No human team can reason about that volume of information in real time for every build. That is not a criticism of testing professionals; it is simply a scaling problem that manual processes cannot solve.</p>



<p class="wp-block-paragraph">As business demands push teams toward faster release cadences and shorter cycle times, AI-augmented testing offers a practical path to:</p>



<ul class="wp-block-list">
<li>Maintaining or increasing delivery velocity without proportionally increasing test infrastructure costs.</li>
<li>Closing coverage gaps that static analysis tools miss.</li>
<li>Eliminating the repetitive, low-value work that leads to tester burnout.</li>
<li>Giving developers and testers faster, more actionable feedback.</li>
</ul>



<p class="wp-block-paragraph">AI does not replace skilled testers — it removes the drudgery and amplifies their impact by directing effort where it produces the most value. The teams that adopt intelligent quality analytics early will carry less technical debt, ship with greater confidence, and spend more time on the creative and investigative work that testing professionals find most rewarding.</p>



<hr class="wp-block-separator"/>



<p class="wp-block-paragraph"><em>Originally written by Scott Dainty, Head of Enterprise Sales at <a href="https://www.sealights.io" rel="noopener">SeaLights</a>, a Software Quality Intelligence Platform. First published on softwaretestingnews.co.uk (October 2019).</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/is-ai-the-key-to-improving-speed-testing-and-even-your-personal-state/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How DevOps Drives Digital Transformation (and Vice Versa)</title>
		<link>https://www.bestdevops.com/how-devops-drives-digital-transformation-and-vice-versa/</link>
					<comments>https://www.bestdevops.com/how-devops-drives-digital-transformation-and-vice-versa/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 27 Jul 2017 08:27:05 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[DevOps Drives]]></category>
		<category><![CDATA[Digital Transformation]]></category>
		<category><![CDATA[IT service delivery]]></category>
		<category><![CDATA[Software Delivery]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=2250</guid>

					<description><![CDATA[Digital transformation and DevOps are deeply intertwined. Learn how each accelerates the other, why cultural change is essential, and what organizations gain when they align both initiatives.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a post originally sourced from thevarguy.com (2017). The core concepts remain relevant to modern DevOps and digital transformation discussions.</em></p>



<h2 class="wp-block-heading">Two Buzzwords, One Strategic Reality</h2>



<p class="wp-block-paragraph">Few topics generate as much discussion in enterprise IT as <strong>digital transformation</strong> and <strong>DevOps</strong>. They are often treated as separate initiatives competing for budget and executive attention. In practice, however, the two are deeply complementary: DevOps accelerates digital transformation, and the pressure of digital transformation creates the organisational urgency needed to adopt DevOps at scale.</p>



<h2 class="wp-block-heading">Defining the Terms</h2>



<h3 class="wp-block-heading">Digital Transformation</h3>



<p class="wp-block-paragraph">Digital transformation is not simply a matter of buying more technology. It is a <strong>strategic rethinking</strong> of how an organisation integrates digital tools, data, and automation into its core processes, products, and customer experiences. True transformation changes the speed, flexibility, and intelligence with which a business operates — not just the tooling it uses.</p>



<h3 class="wp-block-heading">DevOps</h3>



<p class="wp-block-paragraph">DevOps is a software development and delivery philosophy that emphasises <strong>collaboration, communication, and shared ownership</strong> among product management, software engineering, QA, and operations teams. Its practical goals are to ship software more frequently, with higher quality, and with faster feedback loops — ultimately delivering value to customers sooner.</p>



<h2 class="wp-block-heading">Why &#8220;More Technology&#8221; Is Not Enough</h2>



<p class="wp-block-paragraph">A common misconception is that digital transformation is achieved by layering cloud services, SaaS platforms, and automation tooling onto existing workflows. This approach typically results in technical debt and process friction rather than genuine agility. The missing ingredient is the <strong>organisational capability to act on technology rapidly</strong> — to build, test, release, and iterate without months of delay.</p>



<p class="wp-block-paragraph">This is precisely the gap that DevOps closes.</p>



<h2 class="wp-block-heading">How DevOps Enables Digital Transformation</h2>



<ul class="wp-block-list">
<li><strong>Automation of the delivery pipeline:</strong> DevOps practices such as continuous integration (CI) and continuous delivery (CD) automate the build, test, and deployment stages of software development. This removes manual bottlenecks that slow time-to-market for new digital capabilities.</li>
<li><strong>Standardisation of environments:</strong> Infrastructure-as-code and containerisation ensure that software behaves consistently across development, staging, and production environments, reducing failure rates at release time.</li>
<li><strong>Breaking down silos:</strong> DevOps deliberately dissolves the organisational walls between development and operations teams. In a broader digital transformation context, this same cultural shift extends to product, security, data, and business teams — all collaborating around a shared delivery rhythm.</li>
<li><strong>Higher deployment frequency with fewer failures:</strong> Organisations that embed DevOps practices can deploy changes far more frequently while maintaining or improving stability. This means digital initiatives move from strategy to production faster.</li>
<li><strong>Eliminating the &#8220;dev queue&#8221;:</strong> In traditional IT models, business requests entered a backlog and waited months for implementation. DevOps compresses this cycle, enabling business managers to translate strategic decisions into working software in days or weeks rather than quarters.</li>
</ul>



<h2 class="wp-block-heading">How Digital Transformation Drives DevOps Adoption</h2>



<p class="wp-block-paragraph">The relationship is not one-directional. Competitive pressure to digitally transform creates the organisational motivation — and often the executive mandate — to finally invest in DevOps practices that engineering teams may have been advocating for years.</p>



<p class="wp-block-paragraph">When a business must respond to a market shift, launch a new digital product, or match a competitor&#8217;s release cadence, leadership becomes willing to fund the cultural and tooling changes that DevOps requires. Digital transformation goals therefore act as a forcing function for DevOps maturity.</p>



<h2 class="wp-block-heading">The Critical Connection: Transformation Is Ongoing</h2>



<p class="wp-block-paragraph">Perhaps the most important insight is that <strong>digital transformation is not a project with an end date</strong>. It is a continuous organisational capability — an ongoing commitment to finding new ways to leverage technology to improve customer experience, operational efficiency, and competitive positioning.</p>



<p class="wp-block-paragraph">DevOps, at its core, is also a continuous practice. Its feedback loops, retrospectives, and iterative delivery cycles are designed to support perpetual improvement rather than a single-point release. This makes the two naturally aligned: both require sustained investment in people, process, and culture — not a one-time technology purchase.</p>



<h2 class="wp-block-heading">Cultural Change: The Non-Negotiable Requirement</h2>



<p class="wp-block-paragraph">Neither DevOps nor digital transformation succeeds through tooling alone. Both demand genuine cultural change:</p>



<ul class="wp-block-list">
<li><strong>Shared accountability</strong> for outcomes across teams rather than handoffs and blame.</li>
<li><strong>Psychological safety</strong> to experiment, fail fast, and learn without fear of punishment.</li>
<li><strong>Executive sponsorship</strong> that sustains investment through the inevitable friction of organisational change.</li>
<li><strong>Customer-centricity</strong> that keeps delivery focused on user value rather than internal process compliance.</li>
</ul>



<p class="wp-block-paragraph">Organisations that invest in these cultural dimensions alongside their tooling investments are significantly better positioned to realise the combined benefits of DevOps and digital transformation.</p>



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



<ul class="wp-block-list">
<li>Digital transformation requires the organisational agility that DevOps practices directly provide.</li>
<li>DevOps adoption is frequently accelerated by digital transformation business pressure.</li>
<li>Automation, CI/CD, and cross-functional collaboration are the practical mechanisms linking the two.</li>
<li>Both initiatives are continuous rather than one-time efforts, making them natural long-term partners.</li>
<li>Cultural change — not technology alone — determines success in both domains.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-devops-drives-digital-transformation-and-vice-versa/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Has DevOps Changed the Role of a Tester?</title>
		<link>https://www.bestdevops.com/has-devops-changed-the-role-of-a-tester/</link>
					<comments>https://www.bestdevops.com/has-devops-changed-the-role-of-a-tester/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 01 Apr 2017 07:01:57 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Testing]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=1106</guid>

					<description><![CDATA[DevOps has expanded what "code" means in a software project. Infrastructure, configuration, monitoring scripts, and CI/CD pipelines are all code now — so why are testers still only focused on the application layer?]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Original article source: <a href="https://hackernoon.com" rel="noopener">hackernoon.com</a></em></p>



<h2 class="wp-block-heading">The &#8220;Everything-as-Code&#8221; Problem</h2>



<p class="wp-block-paragraph">DevOps, at its core, is about replacing manual, undocumented, person-dependent processes with automation. The out-of-date Wiki page that nobody maintains, the one engineer who knows how to configure the servers, the DBA you have to call every time a migration goes wrong — DevOps replaces all of that with repeatable, version-controlled code.</p>



<p class="wp-block-paragraph">The result is a world of <strong>everything-as-code</strong>: infrastructure-as-code, networking-as-code, database migrations as code. Tools like Terraform, Ansible, Chef, Puppet, and SaltStack have made this possible at scale. But this shift raises an uncomfortable question for testing teams: <em>whose responsibility is it to test all of this new code?</em></p>



<p class="wp-block-paragraph">Most testing teams are still scoped to the core application. They validate that features work to specification and that regressions haven&#8217;t crept in. But the automation pipeline that builds, configures, deploys, and monitors that application? That is largely untested — or tested informally, at best.</p>



<h2 class="wp-block-heading">Which Code Are We Actually Testing?</h2>



<p class="wp-block-paragraph">DevOps has materially increased the <strong>volume, complexity, and variety</strong> of code that a team produces. Consider a team building C# microservices and using Chef for configuration management of their environments. Chef cookbooks that go beyond simple out-of-the-box functionality require Ruby extensions. The result: Ruby can easily become the second-largest language in a GitHub organisation, even on a predominantly .NET team.</p>



<p class="wp-block-paragraph">The same pattern applies to Puppet, Ansible, and SaltStack — extend them to fit your environment and you are writing Python or Ruby. These custom libraries are commonly pushed into production with no test coverage whatsoever. They are not considered &#8220;the application&#8221;, so they do not make it into the test plan.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://cdn-images-1.medium.com/max/800/1*_PNnjslHJgNsh3j3s1Doqg.png" alt="Diagram illustrating the range of code types in a DevOps pipeline beyond the core application" /></figure>



<h2 class="wp-block-heading">Stage by Stage: The Pipeline Testing Gap</h2>



<p class="wp-block-paragraph">A typical DevOps pipeline — whether modelled on IBM&#8217;s reference architecture or any other — involves multiple environments: development, staging, and production. The argument for having a separate staging environment is to catch issues before they reach users. But if every environment is software-defined, built from the same tested Infrastructure-as-Code, the value proposition for long-running staging environments weakens.</p>



<p class="wp-block-paragraph">Cloud infrastructure can be provisioned in seconds. Ephemeral, per-build environments give you a clean, known configuration every time — eliminating the &#8220;it works on my environment&#8221; problem. CI/CD pipelines make this achievable for build and unit-test stages. The problem is what happens next: the artefact gets handed to a testing team that may operate on a completely different cadence, working against a long-lived environment that has accumulated undocumented changes.</p>



<p class="wp-block-paragraph">One of the most common and dangerous anti-patterns in DevOps is an engineer SSHing into a server, making a quick firewall change or configuration tweak to fix a problem, and not feeding that change back into the Chef recipe or Ansible playbook. The next deployment overwrites it — or worse, the change persists and creates a snowflake environment that nobody fully understands. This is precisely the kind of drift that a mature testing capability should be catching, but testers are rarely involved at this layer.</p>



<h2 class="wp-block-heading">The Untested Code That Surrounds Your Application</h2>



<p class="wp-block-paragraph">Beyond the application itself, a modern DevOps team produces a significant body of supporting code that almost never appears in a test plan. This includes artefacts across the full delivery lifecycle:</p>



<h3 class="wp-block-heading">Development and Source Control</h3>



<ul class="wp-block-list">
<li>Pre-merge commit hooks</li>
<li>Build scripts</li>
<li>Packaging scripts</li>
</ul>



<h3 class="wp-block-heading">Deployment</h3>



<ul class="wp-block-list">
<li>CI/CD pipeline scripts and configurations</li>
<li>Custom modules and extensions for Chef, Ansible, Puppet, etc.</li>
</ul>



<h3 class="wp-block-heading">Monitoring and Alerting</h3>



<ul class="wp-block-list">
<li>Responsive monitoring scripts (auto-remediation, auto-scaling triggers)</li>
<li>Alerting integrations and notification pipelines</li>
</ul>



<p class="wp-block-paragraph">For anything beyond a trivial application, these are not five-line scripts. They can be large, complex, poorly structured, and carrying significant business risk. A failure in a deployment script can take down production just as surely as a bug in the application itself. Yet they sit outside the scope of most testing teams by default.</p>



<p class="wp-block-paragraph">If you were to draw a quality pyramid and explicitly mark all of this infrastructure code as &#8220;out of scope for testers&#8221;, it forces a direct question: what is the actual mandate of the testing function? Is it purely to validate that delivered features meet specification? Or is it to protect the organisation from quality failures wherever they arise?</p>



<h2 class="wp-block-heading">What Testers Should Be Doing in a DevOps Environment</h2>



<p class="wp-block-paragraph">A testing professional in a mature DevOps organisation has an opportunity to add value well beyond their traditional scope. Here are concrete activities that extend the tester&#8217;s remit appropriately:</p>



<ul class="wp-block-list">
<li><strong>Audit and challenge automation repeatability.</strong> Understand the deployment and provisioning pipeline end-to-end. Identify steps that are manual, undocumented, or change frequently — these are your highest risk points.</li>
<li><strong>Treat test environments as immutable and build-bound.</strong> Advocate for ephemeral environments that are created fresh for each test run and destroyed afterwards, ensuring tests always run against a known, clean configuration.</li>
<li><strong>Extend test coverage to the pipeline itself.</strong> Apply the same rigour to deployment scripts, packaging scripts, and configuration management code that you apply to application code. Unit tests for Ansible roles and Chef cookbooks are entirely achievable.</li>
<li><strong>Act as a quality advocate for DevOps engineers and SREs.</strong> Many operations-focused engineers have limited exposure to test theory, test design, and test-driven approaches. Testers can provide coaching and establish shared quality standards across the team.</li>
<li><strong>Champion code quality discussions for tooling, not just applications.</strong> Raise code review standards, coverage expectations, and refactoring conversations for the full codebase — including the infrastructure and automation layer.</li>
</ul>



<h2 class="wp-block-heading">The Bottom Line</h2>



<p class="wp-block-paragraph">DevOps has not made testers redundant — it has made the testing challenge significantly larger. The surface area of code that carries production risk has expanded dramatically. Testing teams that continue to treat infrastructure code, deployment scripts, and monitoring integrations as someone else&#8217;s problem are leaving a large portion of the system unvalidated.</p>



<p class="wp-block-paragraph">The most effective testers in a DevOps world are those who follow the code wherever it goes: into Terraform modules, into CI/CD pipelines, into Chef cookbooks, and into the monitoring layer. Deploying with confidence every single time requires quality to be a shared concern across the entire delivery system — not just the application at its centre.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/has-devops-changed-the-role-of-a-tester/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Preventing DevOps Failures: Common Pitfalls and How to Avoid Them</title>
		<link>https://www.bestdevops.com/preventing-devops-failures/</link>
					<comments>https://www.bestdevops.com/preventing-devops-failures/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 25 Mar 2017 06:53:37 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[DevOps Approaches]]></category>
		<category><![CDATA[DevOps Failures Reasons]]></category>
		<category><![CDATA[DevOps Principles]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=1051</guid>

					<description><![CDATA[DevOps transformations fail more often than practitioners like to admit. Learn the most common reasons DevOps initiatives stall or collapse—and the practical strategies you can apply to prevent them.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DevOps is widely described as a cultural and philosophical shift—not merely a set of tools—aimed at improving collaboration between development and operations teams, increasing delivery frequency, and reducing the cost and risk of change. Many organizations pursue DevOps to accelerate their software delivery pipelines and improve reliability. Yet a significant number of these initiatives fall short of their goals. Understanding why DevOps fails is the first step toward preventing it.</p>



<h2 class="wp-block-heading">Why DevOps Transformations Fail</h2>



<p class="wp-block-paragraph">Applying DevOps principles—such as continuous integration, automated testing, infrastructure as code, and integrated configuration management—can be genuinely difficult in established enterprises. The following are the most common failure modes, along with actionable ways to address each one.</p>



<h3 class="wp-block-heading">1. Creating a Separate &#8220;DevOps Department&#8221;</h3>



<p class="wp-block-paragraph">One of the most counterproductive moves an organization can make is forming a dedicated &#8220;DevOps team&#8221; or &#8220;DevOps department&#8221; that is expected to impose the transformation on everyone else. DevOps is fundamentally about breaking down silos between development, operations, QA, and security. Adding a new silo to manage the elimination of silos is self-defeating.</p>



<p class="wp-block-paragraph"><strong>What to do instead:</strong> Embed DevOps practices within existing cross-functional product teams. Use internal advocates and coaches to spread knowledge organically. Establish a Center of Excellence (CoE) if central coordination is needed, but ensure its role is enabling—not gatekeeping.</p>



<h3 class="wp-block-heading">2. Treating DevOps as Purely an Automation Exercise</h3>



<p class="wp-block-paragraph">Automation is a critical enabler of DevOps—CI/CD pipelines, infrastructure provisioning, automated testing, and monitoring all depend on it. However, organizations that equate DevOps with &#8220;we bought a pipeline tool&#8221; miss the point. Automation without cultural alignment, shared ownership, and process improvement produces faster delivery of the same broken workflows.</p>



<p class="wp-block-paragraph"><strong>What to do instead:</strong> Treat automation as a means to an end, not the end itself. Start by mapping your value stream to identify bottlenecks and handoff points. Automate the steps that cause the most friction, but pair every automation initiative with clear ownership and a feedback loop so teams can improve the process continuously.</p>



<h3 class="wp-block-heading">3. Lack of Visibility Across Teams</h3>



<p class="wp-block-paragraph">When teams work in silos—each with its own tools, dashboards, and reporting cadence—visibility into the health of the overall delivery pipeline is limited. Problems go undetected until they become expensive incidents. Release failures, quality regressions, and performance degradation are often discovered too late because no one had a shared view of the system.</p>



<p class="wp-block-paragraph"><strong>What to do instead:</strong> Establish shared dashboards that surface build status, deployment frequency, change failure rate, mean time to recovery (MTTR), and key application metrics to all relevant stakeholders. Tools such as Grafana, Datadog, or open-source alternatives can aggregate signals from across the pipeline. Make pipeline visibility a first-class requirement alongside feature delivery.</p>



<h3 class="wp-block-heading">4. Setting Unrealistic Goals and Timelines</h3>



<p class="wp-block-paragraph">Organizations frequently underestimate how long a genuine cultural and process transformation takes. Leadership may set aggressive targets—&#8221;deploy to production daily within three months&#8221;—without accounting for the learning curve, technical debt remediation, or the organizational change management work required. Early slowdowns are misread as failures, which can cause leadership to abandon the initiative prematurely.</p>



<p class="wp-block-paragraph"><strong>What to do instead:</strong> Define incremental, measurable milestones. For example, a realistic first milestone might be reducing manual steps in your build process by 50% within 60 days. Normalize an initial productivity dip as part of any major process change. Communicate to stakeholders that short-term disruption is expected and is a sign the transformation is happening—not failing.</p>



<h3 class="wp-block-heading">5. Inadequate Training and Knowledge Transfer</h3>



<p class="wp-block-paragraph">Expecting engineers and operators to adopt new tools, practices, and collaborative behaviors without structured enablement is a recipe for frustration. Resistance to change often stems from a lack of understanding—people push back on what they don&#8217;t yet know how to use or why it benefits them.</p>



<p class="wp-block-paragraph"><strong>What to do instead:</strong> Invest in a planned training program that covers not just tool usage but the underlying principles: why continuous delivery matters, how shared on-call responsibility improves quality, and how feedback loops accelerate learning. Pair formal training with hands-on labs, internal hack days, and mentoring from practitioners who have done this before.</p>



<h3 class="wp-block-heading">6. Failing to Define Roles and Responsibilities</h3>



<p class="wp-block-paragraph">Ambiguity about who owns what is damaging in any environment, but it is especially harmful in a DevOps transition where traditional role boundaries are deliberately being blurred. If no one is clearly accountable for pipeline reliability, incident response, or infrastructure provisioning, those functions will be neglected.</p>



<p class="wp-block-paragraph"><strong>What to do instead:</strong> Clearly document responsibilities—even as they evolve. Use frameworks like RACI (Responsible, Accountable, Consulted, Informed) to map ownership during the transition. Revisit and update these definitions as teams mature. Accountability should be distributed across the team, not concentrated in a single &#8220;DevOps person.&#8221;</p>



<h3 class="wp-block-heading">7. Ignoring Risk Assessment</h3>



<p class="wp-block-paragraph">Increasing deployment frequency without a corresponding improvement in your ability to detect and recover from failures increases risk—not reduces it. Organizations that skip change risk assessment, rollback planning, and canary or blue-green deployment strategies can turn faster delivery into faster failure.</p>



<p class="wp-block-paragraph"><strong>What to do instead:</strong> Build risk assessment into your delivery process from the start. Implement feature flags so incomplete features can be merged safely. Use progressive delivery techniques (canary releases, ring deployments) to limit blast radius. Define rollback procedures before they are needed, and practice them in non-production environments.</p>



<h3 class="wp-block-heading">8. Operating Without Metrics</h3>



<p class="wp-block-paragraph">If you cannot measure the impact of your DevOps transformation, you cannot demonstrate its value—to leadership, to the team, or to yourself. Organizations that run DevOps initiatives without baseline metrics and ongoing measurement have no way to know whether they are improving, stagnating, or regressing.</p>



<p class="wp-block-paragraph"><strong>What to do instead:</strong> Establish baseline measurements before the transformation begins. The DORA (DevOps Research and Assessment) four key metrics provide a well-regarded framework: deployment frequency, lead time for changes, change failure rate, and mean time to recovery. Collect these metrics continuously, review them in team retrospectives, and use them to guide prioritization decisions.</p>



<h2 class="wp-block-heading">The Role of Leadership</h2>



<p class="wp-block-paragraph">Every successful DevOps transformation has visible, sustained leadership support. Leaders need to model the behaviors they want to see—psychological safety, blameless post-mortems, and a tolerance for the productive failure that comes with experimentation. Without that sponsorship, middle-management resistance and organizational inertia will outlast any tooling investment.</p>



<p class="wp-block-paragraph">Strong leadership means removing blockers, funding the training and tooling that teams need, and communicating clearly and consistently about why the change is happening and what success looks like. It also means patience: a genuine DevOps transformation in a large enterprise typically takes years, not quarters.</p>



<h2 class="wp-block-heading">Summary: A Checklist for Preventing DevOps Failures</h2>



<ul class="wp-block-list">
<li><strong>Avoid creating a siloed DevOps department.</strong> Embed practices within product teams.</li>
<li><strong>Don&#8217;t reduce DevOps to automation alone.</strong> Address culture and process first.</li>
<li><strong>Establish shared visibility.</strong> Shared dashboards and metrics surface problems early.</li>
<li><strong>Set realistic, incremental goals.</strong> Normalize early productivity dips.</li>
<li><strong>Invest in structured training.</strong> People need to understand both the how and the why.</li>
<li><strong>Define clear ownership.</strong> Accountability must be explicit, even as roles evolve.</li>
<li><strong>Build risk management in.</strong> Progressive delivery and rollback plans reduce blast radius.</li>
<li><strong>Measure everything.</strong> Baseline metrics before you start; review them continuously.</li>
<li><strong>Secure leadership commitment.</strong> Visible sponsorship is non-negotiable.</li>
</ul>



<p class="wp-block-paragraph">DevOps is a long-term investment in how your organization builds and operates software. The failures described above are common, but they are not inevitable. With deliberate planning, honest measurement, and genuine cultural commitment, teams can navigate these pitfalls and deliver the reliability and velocity that DevOps promises.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/preventing-devops-failures/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Secure DevOps: A Practical Plan to Deliver Business Value Without Sacrificing Security</title>
		<link>https://www.bestdevops.com/secure-devops-a-simple-plan-to-deliver-business-value/</link>
					<comments>https://www.bestdevops.com/secure-devops-a-simple-plan-to-deliver-business-value/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 21 Mar 2017 10:05:53 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Business value]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[SecDevOps]]></category>
		<category><![CDATA[Secure DevOps]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Security Teams]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=1003</guid>

					<description><![CDATA[Security teams that cling to waterfall-era testing cycles risk becoming irrelevant in a DevOps world. Here's how to shift security left, embed it into CI/CD pipelines, and make infosec a business enabler rather than a blocker.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DevOps—the movement to break down organizational silos, accelerate software delivery, and create better customer experiences—has moved well beyond startups and early adopters into mainstream enterprise IT. That creates an uncomfortable question for security teams: how do you maintain rigorous security practices inside a culture that prizes speed and continuous change?</p>



<p class="wp-block-paragraph">James Wickett, a senior DevOps engineer, speaker, author, and founder of the <strong>Gauntlt Rugged Testing Framework</strong>, argues that the answer is not to slow DevOps down, but to rethink how security fits into it entirely.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Traditional information security is going to die if we don&#8217;t respond to the way the business is moving.&#8221;</p><cite>—James Wickett</cite></blockquote>



<h2 class="wp-block-heading">Why Security Must Evolve in a DevOps World</h2>



<p class="wp-block-paragraph">Businesses have learned that letting code sit on the shelf accumulates technical debt and erodes competitive advantage. Historically, security reviews and compliance checks have been a primary cause of slow releases—large, manual testing gates clustered at the end of monolithic release cycles.</p>



<p class="wp-block-paragraph">That model is no longer sustainable. In a continuous delivery environment, a security process that takes weeks doesn&#8217;t fit into a pipeline that ships multiple times per day. Security teams that fail to adapt will be bypassed, not respected.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Security&#8217;s new role is to not be a blocker, but to help deliver audited, compliant, and security-tested code faster.&#8221;</p><cite>—James Wickett</cite></blockquote>



<p class="wp-block-paragraph">Reforming your testing processes is the cornerstone of this shift. But before the tooling changes, you need a cultural shift that gets security practitioners thinking about how security serves the business—not just how it constrains it.</p>



<h2 class="wp-block-heading">From Black Hat to Many Hats: Breaking the Security Silo</h2>



<p class="wp-block-paragraph">One of the most damaging patterns in enterprise security is self-imposed isolation. Security teams often rely on specialized tooling and internal processes that the rest of the organization never sees or understands. That opacity breeds mistrust and slows collaboration.</p>



<p class="wp-block-paragraph">Wickett recommends a deliberate effort to integrate security people into the broader organization:</p>



<ul class="wp-block-list">
<li><strong>Diversify conference attendance.</strong> Instead of sending security staff exclusively to events like RSA or Black Hat, consider sending them to cross-functional engineering conferences focused on agile delivery, infrastructure, and operations. Exposure to how other parts of the business think reshapes assumptions.</li>
<li><strong>Embed security in cross-functional meetings.</strong> Security engineers who participate in sprint planning, architecture reviews, and incident retrospectives naturally become advisors rather than auditors.</li>
<li><strong>Conduct value stream mapping.</strong> Map the full flow of work from idea to production and identify where security adds friction. This exercise helps security teams see their work in the context of the organization&#8217;s highest-level business goals—and gives them concrete data about where to focus improvement efforts.</li>
</ul>



<p class="wp-block-paragraph">The goal is for security people to align themselves with the business mission and understand why DevOps practices are being adopted, not just what those practices are.</p>



<h2 class="wp-block-heading">Waterfall&#8217;s Last Stand: Moving Past the Big-Bang Security Review</h2>



<p class="wp-block-paragraph">DevOps works by uniting development and operations into a single, continuous feedback loop. For security, that means abandoning the traditional model that clusters all testing at the end of a long release cycle or ties it exclusively to quarterly audit windows.</p>



<p class="wp-block-paragraph">Wickett recommends that security team leads focus their initial efforts on two concrete areas:</p>



<h3 class="wp-block-heading">1. Inject Security Testing Directly Into Your Delivery Pipeline</h3>



<p class="wp-block-paragraph">The shift here is moving security tests from a manual gate that happens after development to automated checks that run continuously alongside the code. Concretely, this means:</p>



<ul class="wp-block-list">
<li>Integrating static analysis security testing (SAST) tools into your CI server so they run on every commit or pull request.</li>
<li>Adding dependency vulnerability scanning to your build pipeline to catch known-vulnerable libraries before they reach production.</li>
<li>Automating compliance checks so that policy validation is a standard pipeline step, not a manual pre-release scramble.</li>
<li>Using tools like Gauntlt or similar security acceptance-testing frameworks to write security tests that live alongside functional tests in the same repository.</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Moving your security tests closer to where the code is being written is where the information security team can add real value to the DevOps movement.&#8221;</p><cite>—James Wickett</cite></blockquote>



<p class="wp-block-paragraph">When security tests are automated checkpoints rather than manual gates, they stop creating bottlenecks and start providing fast feedback to developers—at the point in the workflow where fixes are cheapest and fastest to make.</p>



<h3 class="wp-block-heading">2. Instrument, Monitor, and Respond in Real Time</h3>



<p class="wp-block-paragraph">Modern development and operations teams have rich dashboards and real-time telemetry covering application performance, error rates, and infrastructure health. Security, by contrast, has often operated from periodic reports and after-the-fact log analysis.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Right now, dev and ops have more dashboards, monitors, switches, levers, and knobs to know what is happening and make changes to the site in real time. Security needs to adopt instrumentation and monitoring that can be added into these dashboards and monitors, thus becoming more transparent in the organization.&#8221;</p><cite>—James Wickett</cite></blockquote>



<p class="wp-block-paragraph">Integrating security signals into the same observability stack used by the rest of engineering closes that gap. Practical steps include:</p>



<ul class="wp-block-list">
<li>Feeding authentication anomalies, privilege escalation events, and unusual traffic patterns into the same monitoring platform used by the operations team.</li>
<li>Setting up real-time alerting on security-relevant metrics so that the response window shrinks from days to minutes.</li>
<li>Making security dashboards visible to developers and operations engineers, not just the security team, so that the whole organization develops security awareness.</li>
</ul>



<p class="wp-block-paragraph">With continuous delivery, you are always releasing new code. A solid attack detection and monitoring strategy is not optional—it is the safety net that makes fast delivery responsible.</p>



<h2 class="wp-block-heading">Culture Before Tooling</h2>



<p class="wp-block-paragraph">A critical caution: purchasing new security tools will not fix a cultural or organizational alignment problem. If security teams are still seen as the department of &#8220;no,&#8221; if developers don&#8217;t understand why security checks exist, or if there is no shared ownership of risk across the organization, the tooling will be ignored or worked around.</p>



<p class="wp-block-paragraph">Wickett is direct on this point: &#8220;Tooling is not going to help you if you have significant deficits in those areas.&#8221; Business alignment and cultural acceptance of agile practices must come first. Once those foundations are in place, automation and monitoring amplify the effort rather than substitute for it.</p>



<h2 class="wp-block-heading">Key Takeaways for Security and DevOps Teams</h2>



<ul class="wp-block-list">
<li><strong>Security as an enabler:</strong> Reframe the security team&#8217;s mission from blocking releases to accelerating safe releases.</li>
<li><strong>Break the silo:</strong> Embed security engineers in cross-functional teams, events, and meetings.</li>
<li><strong>Shift left:</strong> Move security testing into the CI/CD pipeline, as close to the point of code authorship as possible.</li>
<li><strong>Monitor continuously:</strong> Integrate security telemetry into the same real-time dashboards used by development and operations.</li>
<li><strong>Culture first:</strong> Align security with business goals before investing in new tooling.</li>
</ul>



<p class="wp-block-paragraph">The organizations that will succeed are those that treat security as a shared engineering discipline, not a separate function that reviews work after the fact. That is the practical foundation of Secure DevOps—and the competitive advantage it delivers is real.</p>



<p class="wp-block-paragraph"><em>Original insights attributed to James Wickett, founder of the Gauntlt Rugged Testing Framework, as reported by TechBeacon.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/secure-devops-a-simple-plan-to-deliver-business-value/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Broken DevOps Pipeline? Fix it with ARA</title>
		<link>https://www.bestdevops.com/broken-devops-pipeline-fix-it-with-ara/</link>
					<comments>https://www.bestdevops.com/broken-devops-pipeline-fix-it-with-ara/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 18 Mar 2017 08:12:48 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Application Release Automation]]></category>
		<category><![CDATA[ARA]]></category>
		<category><![CDATA[ARA tools]]></category>
		<category><![CDATA[Broken DevOps Pipeline]]></category>
		<category><![CDATA[DevOps Pipeline]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=978</guid>

					<description><![CDATA[Source:- xebialabs.com DevOps has brought big changes—and even bigger benefits—to the way applications are developed and deployed: shortened delivery timelines, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:- xebialabs.com</p>
<p>DevOps has brought big changes—and even bigger benefits—to the way applications are developed and deployed: shortened delivery timelines, cleaned up build processes, reduced downtime and risk, and increased likelihood that a release could be performed today if needed. But it hasn’t solved all of IT’s problems.</p>
<p>Many organizations, for example, still struggle with structural changes longer than they do with tool implementations. And the scripting required to achieve many of the benefits that these tools offer imposes its own form of technical debt.</p>
<p>The thing that many companies have not yet significantly improved is the process of going all the way from first build to repeatable deployment in production. To be able to say at any time, “set up the environment, install the app, and run tests.” It’s gotten better, but the end-to-end process is anything but smooth. It’s eluded many IT teams simply because it crosses the line between release automation and operations automation. Release automation will get you the application package(s) required, but then most of the time, a hand-off gives it to Operations to install. Even if the teams work very well together, it’s still breaks the flow and speed of the delivery pipeline.</p>
<p>Fortunately, Application Release Automation (ARA) keeps the flow going for end-to-end DevOps.</p>
<h4>Application Release Automation for End-to-End DevOps</h4>
<p>Maybe Application Release Automation (ARA) is a new phrase to you. Or maybe you’ve been put off by the publicly available descriptions. Yet a clear understanding shows that it’s the next step in DevOps development. Here’s a great definition from XebiaLabs’ CEO, Derek Langone:</p>
<blockquote><p>“ARA tools…provide the framework required for managing the roll out applications at unprecedented levels of scale and speed. Application release automation frameworks provide hooks into all the products and services that make up the application development and release process. IT operations teams not only gain access to dashboards that enable them to precisely determine the status of any application development project, they can model those processes in a way that drives a desired set of best practices. In effect, application development and operations teams can now orchestrate the entire application development process on an end-to-end basis to drive development of higher-quality applications faster than ever before.”</p></blockquote>
<p>While some ARA tools indirectly take both sides under control (calling on them as needed), and some are a lighter touch on the development side, they all can take a package and build it onto predefined infrastructure resources in a repeatable manner. Changes in specification (open ports, shared disk, etc.,) required of the environment can be entered into the plan for deployment while first making the app work in test. Then the same environment (with any required changes) can be rolled out to production.</p>
<p>By calling on application provisioning tools, these systems can make use of what you’re likely already using today (e.g., Puppet and Chef), while offering another layer of automation. By generating reports on the mapping of application pieces to infrastructure, issues and bottlenecks can quickly be identified, and if there is a blocking error, most Application Release Automation tools will allow rollback for upgrades and generate detailed error information for use in figuring out the discrepancies.</p>
<p>No more problems like “You need that port open? No one told us!” since it would be part of the deployment specification that development (or Development with Operations) can generate.</p>
<h4>Nailing Down the Process</h4>
<p>If you’re planning to provide an end-to-end DevOps experience for the business, Application Release Automation is a necessary step to achieving that goal. By covering the space between development operations (DEVops) and operational development (devOPS), the entire ecosystem, from first build to final deployment, can be taken in hand and placed into repeatable patterns. That makes updates far more predictable and applications far more stable as they are tested in environments similar to production. Deployment is standardized, and the process is nailed down early, while allowing for changes as the needs of the application change and grow.</p>
<p>Reducing or eliminating the problems associated with marathon deployment exercises of big new applications is also a benefit. The core, however, comes from the ability to deploy production-ready code as needed without disrupting a large portion of IT to make the system functional in a production environment.</p>
<p>If your organization is already using <a href="http://www.scmgalaxy.com/courses/agenda/devops/devops-training-course-online.html"><strong>DevOps</strong></a> in both Development and Operations, ARA increases DevOps coverage to 100%, and is well worth some research to see if it will solve some of your problems. As is often the case with automation, the other side benefit is immeasurable—a good night’s sleep for Operations and application owners soon after a new rollout.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/broken-devops-pipeline-fix-it-with-ara/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Integrate Business Priorities into the DevOps Process: A BizDevOps Guide</title>
		<link>https://www.bestdevops.com/how-to-integrate-business-priorities-into-the-devops-process/</link>
					<comments>https://www.bestdevops.com/how-to-integrate-business-priorities-into-the-devops-process/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 09 Mar 2017 06:03:59 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[App Delivery]]></category>
		<category><![CDATA[BizDevOps]]></category>
		<category><![CDATA[BizDevOps Toolchain]]></category>
		<category><![CDATA[DevOps Business Value]]></category>
		<category><![CDATA[Mobile app development]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=903</guid>

					<description><![CDATA[DevOps alone cannot guarantee that software delivers real business value. Learn how BizDevOps bridges the gap between business strategy and the DevOps pipeline to improve app success rates and align development to measurable outcomes.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a piece originally published on App Developer Magazine (March 2017). The core arguments around BizDevOps remain relevant to any organisation struggling to align engineering velocity with business outcomes.</em></p>



<h2 class="wp-block-heading">The Hidden Problem with DevOps-Only Thinking</h2>



<p class="wp-block-paragraph">DevOps has transformed how software teams build, test, and ship software. Faster release cycles, automated pipelines, and continuous feedback loops have made development teams significantly more productive. Yet for many organisations—particularly those investing heavily in mobile application development—speed of delivery has not translated into business success.</p>



<p class="wp-block-paragraph">The core problem is a dangerous assumption baked into many DevOps implementations: that by shipping faster and monitoring defects and user feedback closely, business value will follow automatically. In practice, it often does not. Releasing a product quickly only accelerates the discovery of a product that was misaligned with business or customer needs from the start.</p>



<p class="wp-block-paragraph">The missing link is an explicit, traceable connection between the DevOps pipeline and the business initiatives it is supposed to serve. Without that connection, teams optimise for engineering metrics—deployment frequency, mean time to recovery, defect rates—while the business continues to measure success by outcomes such as user adoption, revenue impact, and customer satisfaction.</p>



<h2 class="wp-block-heading">Why Mobile Apps Illustrate the Gap So Sharply</h2>



<p class="wp-block-paragraph">The mobile application market makes this misalignment especially costly. Users form rapid and lasting opinions about an application after a single poor experience. A slow, buggy, or feature-poor app does not just lose downloads—it can damage the broader corporate brand. Research cited in the original source indicates that a significant proportion of users develop a negative perception of a company&#8217;s brand when an app fails to meet their expectations around performance, stability, security, privacy, or compliance.</p>



<p class="wp-block-paragraph">Unlike web applications, where iterative improvement is relatively invisible, app store ratings are public and persistent. Failure to meet user needs on launch is very difficult to recover from, making upfront alignment between business goals and development priorities essential—not optional.</p>



<h2 class="wp-block-heading">What Is BizDevOps?</h2>



<p class="wp-block-paragraph">BizDevOps is an extension of the DevOps model that explicitly incorporates business stakeholders, business goals, and measurable business outcomes into the software development lifecycle (SDLC). Where DevOps connects development and operations, BizDevOps extends that connection upstream to include product management, business strategy, compliance, and customer experience functions.</p>



<p class="wp-block-paragraph">The goal is a closed-loop cycle of continuous innovation in which every feature, user story, and release can be traced directly back to a defined business objective. This makes it possible to measure whether the DevOps pipeline is actually delivering business value—not just working software.</p>



<p class="wp-block-paragraph">BizDevOps does not replace Agile or DevOps. It extends and operationalises them by adding orchestration and automation to the front end of the SDLC, where business intent is defined.</p>



<h2 class="wp-block-heading">Extending the DevOps Toolchain: Four Upstream Stages</h2>



<p class="wp-block-paragraph">To implement BizDevOps, organisations need to extend their standard DevOps toolchain with four additional upstream stages:</p>



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



<p class="wp-block-paragraph">IT and business stakeholders work together at this stage to define business initiatives and strategic roadmaps. The emphasis is on shared ownership of goals rather than handing a specification document from business to engineering.</p>



<h3 class="wp-block-heading">2. Alignment</h3>



<p class="wp-block-paragraph">Teams agree on a shared model of what must be delivered. Critical business objectives—customer experience improvements, legacy modernisation, regulatory compliance, risk mitigation—are articulated here. Opportunities to share requirements and identify dependencies across initiatives are also surfaced at this stage.</p>



<h3 class="wp-block-heading">3. Definition</h3>



<p class="wp-block-paragraph">Business initiatives are broken down to the feature and user story level, with explicit traceability back to the business objectives defined during alignment. This is the stage where business intent becomes engineering input.</p>



<h3 class="wp-block-heading">4. Approval</h3>



<p class="wp-block-paragraph">Stakeholders review and formally approve initiatives before development begins. At this point, development and test artefacts can be automatically generated to initiate downstream DevOps processes, ensuring that what engineering builds matches what the business approved.</p>



<p class="wp-block-paragraph">Together, these four stages break down the silos between business and IT, enabling teams to deliver solutions driven by validated goals—even as those goals evolve over time.</p>



<h2 class="wp-block-heading">Key Capabilities to Look for in a BizDevOps Toolchain</h2>



<p class="wp-block-paragraph">BizDevOps depends on tooling that can automate and orchestrate business-level activities alongside the engineering pipeline. When evaluating tools, look for the following capabilities:</p>



<ul class="wp-block-list">
<li><strong>Value stream and process mapping:</strong> Visualise current and target-state processes and how they map to higher-level value streams. Critically, these tools should be usable by business stakeholders without requiring technical training.</li>
<li><strong>Goals and business needs management:</strong> Define and track business needs alongside quantitative, measurable outcomes. This information should integrate with value stream mapping to give a unified view of business intent.</li>
<li><strong>Automatic generation of downstream artefacts:</strong> User stories, acceptance criteria, and test cases should be generated automatically from approved business requirements. This reduces the translation overhead between business and engineering and keeps both in sync as requirements change.</li>
<li><strong>Collaboration and review workflows:</strong> In large enterprises, cross-functional collaboration is essential but difficult at scale. Tooling should support asynchronous review, structured input, and approval workflows with a full audit trail of decisions and discussions.</li>
<li><strong>AI-assisted pattern recognition:</strong> An AI layer can analyse requirements flowing through the toolchain, identify recurring patterns, and suggest reusable building blocks. This accelerates delivery, improves consistency, and reduces the risk of compliance gaps.</li>
<li><strong>Traceability and impact analysis:</strong> Every business goal should be traceable through detailed requirements all the way to development tasks and test results. Impact analysis enables teams to understand the downstream consequences of changing a requirement before committing to the change.</li>
<li><strong>Requirements reuse:</strong> Many categories of requirements—security controls, performance standards, regulatory compliance clauses—apply across multiple projects. A reuse library allows organisations to define these once and apply them consistently, reducing rework and improving quality.</li>
</ul>



<h2 class="wp-block-heading">Measuring Success by Business Outcomes, Not Vanity Metrics</h2>



<p class="wp-block-paragraph">One of the most important practical shifts that BizDevOps enables is a change in how success is measured. Traditional project delivery celebrates on-time and on-budget completion. DevOps engineering metrics celebrate deployment frequency and low change failure rates. Neither of these directly tells you whether the software is achieving its intended business purpose.</p>



<p class="wp-block-paragraph">BizDevOps ties measurement to business outcomes: user adoption, customer satisfaction scores, revenue contribution, compliance status, and similar indicators. Because every feature is explicitly traced to a business objective, it becomes possible to assess whether delivering that feature actually moved the target metric—and to feed that information back into future planning.</p>



<h2 class="wp-block-heading">Practical Steps for Getting Started</h2>



<ol class="wp-block-list">
<li><strong>Audit your current DevOps pipeline</strong> and identify where business input enters the process. In most organisations, this happens informally and inconsistently, usually only at the requirements-gathering stage.</li>
<li><strong>Map your value streams</strong> from business initiative to deployed feature. Look for handoff points where business intent is lost or mistranslated.</li>
<li><strong>Establish a shared vocabulary</strong> between business and engineering. Business goals should be expressed as measurable outcomes, not feature descriptions.</li>
<li><strong>Introduce lightweight collaboration tooling</strong> that allows business stakeholders to participate in backlog prioritisation, requirement review, and release approval without needing to learn engineering tools.</li>
<li><strong>Implement end-to-end traceability</strong> from strategic goal to user story to test result. Even a simple spreadsheet-based approach is better than no traceability at all.</li>
<li><strong>Define business outcome metrics upfront</strong> for each initiative, and review them as part of your retrospective process.</li>
</ol>



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



<p class="wp-block-paragraph">DevOps is a powerful engineering practice, but engineering excellence alone does not guarantee that software delivers business value. BizDevOps addresses this gap by extending the DevOps model to include business stakeholders, goals, and outcome measurement as first-class citizens of the delivery lifecycle.</p>



<p class="wp-block-paragraph">For organisations building mobile applications or undergoing broader digital transformation, this alignment is not a luxury—it is a prerequisite for success. Shipping faster only matters if what you are shipping is the right thing. BizDevOps helps ensure that it is.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-to-integrate-business-priorities-into-the-devops-process/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DevOps Implementation Without Containers</title>
		<link>https://www.bestdevops.com/devops-implementation-without-containers/</link>
					<comments>https://www.bestdevops.com/devops-implementation-without-containers/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 09 Mar 2017 05:22:50 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Containers]]></category>
		<category><![CDATA[DevOps Implementation]]></category>
		<category><![CDATA[DevOps practices]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=886</guid>

					<description><![CDATA[Containers and DevOps are often treated as inseparable, but they are not. Learn how to implement a successful DevOps practice using automation, continuous integration, and continuous testing—no containers required.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a piece originally published at informationweek.com.</em></p>



<h2 class="wp-block-heading">The Container Assumption in DevOps</h2>



<p class="wp-block-paragraph">One of the primary goals of a DevOps approach to software delivery is eliminating bottlenecks in your production deployment pipeline. For server-side software, those bottlenecks typically involve several interrelated layers:</p>



<ul class="wp-block-list">
  <li>The application environment, including operating system parameters and configuration</li>
  <li>Third-party components such as application servers, web servers, and databases</li>
  <li>Your own application software that runs on top of all of the above</li>
</ul>



<p class="wp-block-paragraph">DevOps addresses these bottlenecks by breaking down barriers between development and IT operations teams, fostering a collaborative environment where both groups share responsibility for keeping production and development environments in sync. Containers—Docker being the most prominent example—have proven to be an excellent tool for achieving this alignment. They work so well in this context that containers and DevOps have become almost synonymous in many organizations, to the point where some teams treat containers as a prerequisite for DevOps adoption.</p>



<p class="wp-block-paragraph">That dependency, however, is not required. You can implement a mature, effective DevOps practice without containers. Here is how.</p>



<h2 class="wp-block-heading">Why Containers Are Useful—But Not Mandatory</h2>



<p class="wp-block-paragraph">Before arguing against the dependency, it is worth understanding why containers appeal to DevOps practitioners in the first place. Containers are lightweight OS-level abstractions that isolate running processes, restrict resource usage, and package software dependencies together in a portable unit. Unlike full virtual machines, containers operate closer to the application layer rather than the hardware layer, which makes them significantly more efficient to spin up and tear down.</p>



<p class="wp-block-paragraph">Containers shine in specific DevOps scenarios:</p>



<ul class="wp-block-list">
  <li><strong>Microservices architectures</strong>, where individual services need to be deployed, scaled, and destroyed independently and frequently</li>
  <li><strong>Agile dev/test cycles</strong>, where short-lived, reproducible environments reduce inconsistency between developer laptops and CI pipelines</li>
  <li><strong>Cloud-native deployments</strong>, where ephemeral infrastructure benefits from the fast startup times containers offer</li>
</ul>



<p class="wp-block-paragraph">When developers build and test inside a container, the entire runtime environment can be packaged and shipped to production servers with high confidence that behavior will be consistent. That efficiency directly supports DevOps goals. Even so, containers are a <em>tool</em> that serves DevOps principles—they are not the principles themselves.</p>



<h2 class="wp-block-heading">Legitimate Reasons to Avoid Containers</h2>



<p class="wp-block-paragraph">There are real-world situations where a containerized deployment approach is impractical or inappropriate:</p>



<ul class="wp-block-list">
  <li><strong>Skill gaps:</strong> Container expertise requires meaningful investment in training and tooling. Teams without that foundation may introduce new risks rather than reduce them.</li>
  <li><strong>Performance-sensitive systems:</strong> Real-time systems or applications with strict latency requirements may be negatively affected by container overhead or networking abstractions.</li>
  <li><strong>Unsupported environments:</strong> Embedded systems, specialized legacy operating systems, or proprietary hardware may not support container runtimes at all.</li>
  <li><strong>Regulatory or compliance constraints:</strong> Some environments impose restrictions on how software is packaged or isolated that conflict with standard container tooling.</li>
  <li><strong>Existing infrastructure investment:</strong> Organizations with mature, stable bare-metal or VM-based infrastructure may gain little from containerizing proven deployments.</li>
</ul>



<p class="wp-block-paragraph">In any of these cases, pursuing containers for their own sake risks adding complexity without proportional benefit. The good news is that the core of DevOps does not depend on them.</p>



<h2 class="wp-block-heading">Three Enablers of DevOps Without Containers</h2>



<p class="wp-block-paragraph">Whether you are working with a mainframe, a monolithic application, a legacy enterprise system, or a cloud-native microservice, the following three practices form the foundation of any DevOps implementation:</p>



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



<p class="wp-block-paragraph">Identify every manual step in your build, test, and deployment pipeline and work systematically to automate it. Manual steps are the primary source of inconsistency and error in deployment processes. Tools exist across every technology tier—from configuration management tools like Ansible, Chef, and Puppet for infrastructure provisioning, to shell scripts and CI servers for build orchestration. The goal is not to automate everything at once but to reduce human intervention at each stage progressively.</p>



<h3 class="wp-block-heading">2. Continuous Integration</h3>



<p class="wp-block-paragraph">Integrate software modules, components, and services together continuously throughout the development cycle—not just before a major release. A CI server (Jenkins, GitLab CI, GitHub Actions, and similar tools) can trigger automated builds and unit tests on every code commit. This surfaces integration problems early, when they are cheap to fix, rather than allowing them to accumulate into a painful, high-risk integration event at the end of a release cycle.</p>



<h3 class="wp-block-heading">3. Continuous Testing</h3>



<p class="wp-block-paragraph">Testing must be a continuous activity, not a phase that happens after development is complete. With continuous integration in place, every build should be verified against a growing suite of automated tests—unit, integration, and where feasible, end-to-end. The aim is for the system to be theoretically releasable at any point. This creates a fast feedback loop that tells developers—immediately—whether a change breaks something downstream.</p>



<h2 class="wp-block-heading">The Three Organizational Practices That Drive Results</h2>



<p class="wp-block-paragraph">Specific tools help, but the biggest gains from DevOps come from sustained organizational behavior changes. Three practices matter most:</p>



<ol class="wp-block-list">
  <li><strong>Constant build-and-test cycles:</strong> Software is never developed in isolation for extended periods. Small increments are built, tested, and validated continuously.</li>
  <li><strong>Frequent deployments to production-like environments:</strong> Deploying often to staging or pre-production environments that mirror production closely means deployment itself becomes routine rather than a high-risk event.</li>
  <li><strong>Immediate feedback loops back to developers:</strong> When something breaks in integration, test, or deployment, developers hear about it right away. Delayed feedback allows problems to compound and context to be lost.</li>
</ol>



<p class="wp-block-paragraph">Together, these practices ensure that development and operations teams continuously verify that what is being built will actually deploy and operate as expected in production. Because integration, testing, and deployment activities happen in parallel from the start—rather than in sequential phases—there are no late-stage surprises and no blame-shifting between teams when things go wrong at release time.</p>



<h2 class="wp-block-heading">People and Communication Are the Real Foundation</h2>



<p class="wp-block-paragraph">Tools, including containers, are enablers. The actual foundation of a successful DevOps implementation is people, communication, and metrics. A team with strong collaborative habits, shared ownership of deployment quality, and clear visibility into system health will outperform a team that has adopted every fashionable tool but operates in organizational silos.</p>



<p class="wp-block-paragraph">When crunch time arrives—and it always does—the teams that have practiced continuous integration, continuous testing, and frequent deployments throughout the development cycle will not be scrambling to understand what their deployment process does. They will already know, because they will have effectively been deploying all along.</p>



<p class="wp-block-paragraph">This is why DevOps is described as a <strong>practice</strong> rather than a process, toolset, or job title. Containers can be an excellent addition to a DevOps practice, particularly for managing application environments at scale. But they are not the starting point. Focus on the practice first—automation, continuous integration, continuous testing, and collaborative culture—then adopt containers where they genuinely solve a problem you have.</p>



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



<ul class="wp-block-list">
  <li>Containers support DevOps goals efficiently but are not a prerequisite for DevOps adoption.</li>
  <li>Legitimate technical, organizational, and regulatory constraints may make containers impractical in your environment.</li>
  <li>Automation, continuous integration, and continuous testing are the non-negotiable pillars of any DevOps implementation, with or without containers.</li>
  <li>Organizational behavior—frequent deployments, fast feedback, and cross-team collaboration—delivers more DevOps value than any single tool.</li>
  <li>Adopt containers where they solve a real problem; do not adopt them simply because the industry has conflated them with DevOps itself.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/devops-implementation-without-containers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>10 questions every DevOps candidate should answer</title>
		<link>https://www.bestdevops.com/10-questions-every-devops-candidate-should-answer/</link>
					<comments>https://www.bestdevops.com/10-questions-every-devops-candidate-should-answer/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 04 Mar 2017 07:00:50 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[IT Training]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[DevOps Interview Questions]]></category>
		<category><![CDATA[DevOps Questions]]></category>
		<category><![CDATA[DevOps Questions & Answers]]></category>
		<category><![CDATA[Interview Questions]]></category>
		<category><![CDATA[Top DevOps Questions]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=878</guid>

					<description><![CDATA[Source:- techbeacon.com Strong DevOps teams require individuals with very special skills. The DevOps professionals you recruit must be able to [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:- techbeacon.com</p>
<p>Strong DevOps teams require individuals with very special skills. The DevOps professionals you recruit must be able to balance coding chops with continuous integration/continuous deployment (CI/CD) competence, for example. If they’re heading up DevOps, they should also have a track record of being an active liaison with the business.</p>
<p>Many companies trying out the model have had negative experiences. They have failed to realize hoped-for advantages such as more frequent code delivery and greater application stability. Without the right people in place—those who understand DevOps as a cultural shift—to both serve in leadership roles and work on applications and services being delivered, things can easily go wrong, says the digital/cloud strategist Jeanne Morain.</p>
<p>Smart businesses are determined to avoid that scenario. “Like executive roles, these positions are expensive to fix if you make a mistake,” says Greg Scharer, COO at Perrone Robotics, which develops software for self-driving vehicles and general-purpose robotics and is actively looking to fill a senior DevOps management role. “So we over-invest in talking to candidates.”</p>
<p>That’s good advice for anyone involved in the DevOps hiring process. If that describes you, here are 10 questions you should ask to make sure your investment pays off.</p>
<p><strong>General questions</strong></p>
<p><strong>Who would you include in efforts to create processes and policies for delivering applications in a DevOps environment?</strong></p>
<p>This question gets to the heart of whether your candidate understands DevOps as a cultural shift—one that requires development and operations experts working together from the start on implementation strategy, and that acknowledges the need to actively include business counterparts in the dialogue, Morain says.</p>
<p>“If they can’t answer, or if they don’t include the business, that’s bad,” she says. The same is true if they don’t talk about engaging not just with executives on the business side, but also with end users. “How do you develop processes for users if you don’t know how it will impact them?” she says.</p>
<p><strong>What has been your approach to resolving conflicts among team members?</strong></p>
<p>Good communications skills and being able to calmly and effectively intermediate disputes matters, Scharer says, given that “sometimes DevOps can be a tinderbox for conflict.” It’s not uncommon for sparks to ignite when, for instance, something goes awry upon an integration build of multiple developers’ code compilations. No one wants to think their documentation or check-in timing error was responsible for a problem.</p>
<p>“Developers can wind up in fights among themselves and it’s very important for the DevOps manager to bring people together, asking them for help in ways that make them believe they are respected and valued,” Scharer says. Ideally, your candidate can offer a thoughtful and logical answer of how to sort through intra-team conflicts and proactively keep similar issues from arising in the future. “If they can articulate how they overcame a challenging conflict like that, that is useful feedback for me,” he says.</p>
<p><strong>What to ask about past experience</strong></p>
<p><strong>Why did your previous/current company embrace DevOps and how did you support that?</strong></p>
<p>The interpretation and methodology of DevOps in each company is different. So, it&#8217;s important to know what candidates have been mandated to accomplish – whether it be database optimization, driving migrations to different tools/infrastructure, or fostering CI/CD pipelines – and what impact that work had on the engineering team’s overall strategy and objectives, says Danny An, technical recruiter for Influitive. The discussion should help you gain insight into things like how involved they were in testing, or what tools they have used.</p>
<p>“Since [DevOps] is so broad, learning more about where candidates are coming from and how that experience aligns with what you are doing or hoping to do can mitigate the risk of a false-positive hire,” he says.</p>
<p><strong>How did the last system that you worked on as a DevOps engineer change from the time you started to the time you left, and who drove those changes?</strong></p>
<p>Candidates’ answers should display an unquenchable desire to keep looking for improvements, and the willpower to make sure those improvements happen. “A great candidate will have transformed their systems for the better, by their own initiative,” says Brian Kelly, vice president of engineering at the DevSecOps company Conjur. Bonus points if they tell you they rallied others to their cause rather than just acted as a lone hero.</p>
<p>Candidates’ technical knowledge is important, of course, but that innate personal drive to improve the efficiency and velocity of systems is vital, says Kelly, who’s hired for DevOps roles at three different companies over the last five years.</p>
<p>Give me an example of a CI/CD failure you’ve experienced, and what you learned from it.</p>
<p>“Everyone who has learned the <a href="http://www.scmgalaxy.com/courses/agenda/devops/devops-training-and-certification.html"><strong>DevOps process</strong></a> will have hit a level of failure at some point,” says Morain, so you want to hear how those failures helped the candidate become a better candidate to work for your business.</p>
<p>One DevOps pro recalled to Morain how his team had not created a process to automate finding, fixing and immediately addressing issues that arose during a parallel implementation process as part of rolling out CI/CD. “It took days and they had to parachute someone in to rip everything out,” she says.</p>
<p>That hurts. But he walked away from the experience realizing the importance of testing a pilot production environment first, which is where a strong partnership with operations helps. People who can admit to such mistakes and explain how they are the wiser because of them are assets in waiting.</p>
<p><strong>Questions that probe technical knowledge</strong></p>
<p><strong>Describe your cloud expertise.</strong></p>
<p>As the world moves to the cloud, many companies want DevOps engineers who have experience with cloud-based technologies, says Joseph Kotlinski, partner and manager at talent acquisition firm WinterWyman&#8217;s Information Technology Search practice. Some of these include the highly popular Amazon Web Server (AWS) and RackSpace, OpenStack, Google Elastic Cloud and Microsoft Azure, he says.</p>
<p>“It is important to understand not only the cloud technologies a candidate has worked with but also the depth of the candidate’s experience,” Kotlinski says. “A few years ago, all DevOps engineers had to say was they had worked with AWS. These days, if someone claims to have experience with AWS, you should probe further, and ask have they worked with EC2, S3, EBS, Glacier, Snowball, RedShift, Route53, etcetera.”</p>
<p>Good candidates also will be happy to tell you how many cloud instances they’re currently working with; if they’ve ever designed, implemented and/or led a migration to the cloud or scaled an environment from small to large; and how much of their time is spent working in the cloud in mixed environments.</p>
<p><strong>What issues or deficiencies are “must fix ASAP”?</strong></p>
<p>In DevOps, there’s always a balance to maintain between striving for technical perfection and meeting business goals. But candidates should demonstrate an understanding that there are some places where compromise isn’t appropriate if they are to maintain high personal standards of work quality, says Kelly.</p>
<p>“Great DevOps people will have a few things that they consider too sacred to break. For example, unreliable CI/CD systems, failing tests, or very slow release pipelines should always be getting fixed, rather than left to fester and worsen,” he says.</p>
<p><strong>What are critical DevOps tool-chain integration points in relation to increased software release velocity?</strong></p>
<p>Chris Ciborowski, CEO and principal consultant at enterprise DevOps consulting firm Nebulaworks, says that an integrated toolchain is the key to flow in the DevOps process. Candidates should be able to talk about the tools (version control, configuration management, continuous integration and so on) they like to put in place, why, and in what context.</p>
<p>A strong candidate who understands the need to deploy applications automatically to multiple environments (public cloud and on-premise) could say, for example, that he believes a key tool-chain integration point is to have automated code deployment using Jenkins, Ciborowski says. To be infrastructure-agnostic and provide a consistent mechanism to deploy applications in a familiar and easily documented fashion to upstream team members, the candidate may also talk about taking advantage of Jenkins plug-ins.</p>
<p>You can’t help but appreciate that approach, “which removes the need for a developer or release manager to understand the operational details of the downstream deployment endpoint, and could provide multiple deployment options without slowing releases into various infrastructure types,” Ciborowski says.</p>
<p><strong>How-to questions</strong></p>
<p><strong>How would you get a web app from a developer’s laptop into production from zero?</strong></p>
<p>Adam Serediuk, director of operations at intelligent communications platform vendor xMatters, uses this as an open-ended question that leaves candidates plenty of room to show whether they’re more focused on a particular skill-set or in possession of a broad range of DevOps skills.</p>
<p>“I want to find out about their knowledge of the whole stack.” he says. “I want them to look at building the app, version control, deployment, making sure the dev environment is a mirror of production, monitoring, and metrics like response time.” It’s a red flag if they make assumptions, if they don’t know continuous delivery, or if they don’t produce repeatable artifacts, he says.</p>
<p><strong>You must design a system to onboard Shadow IT cloud applications quickly to your hybrid cloud infrastructure to reduce security and compliance risks. How do you do it?</strong></p>
<p>It’s good news if your DevOps candidate talks up the idea of quickly pulling in others to form an incubator team that includes business, audit, and security to determine what the compliance and security risks are for applications to be on-boarded, says Morain.</p>
<p>It&#8217;s equally good news if the candidate discusses how, based on compliance risk posture, the group would categorize the applications with the most significant profiles to prioritize resources and onboarding activities, she says, and also provide guidance or different solutions on how they would automate some of the legacy processes around change, incident, and problem management.</p>
<p>Another indication that interviewees are worth serious consideration is if they bring up implementing new solutions such as self-healing and automatic updates to IT service management systems, to avoid issues down the line with supporting them.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/10-questions-every-devops-candidate-should-answer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Make Mobile App Security Testing Automation a DevOps Reality</title>
		<link>https://www.bestdevops.com/how-to-make-mobile-app-security-testing-automation-a-devops-reality/</link>
					<comments>https://www.bestdevops.com/how-to-make-mobile-app-security-testing-automation-a-devops-reality/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Wed, 01 Mar 2017 06:29:03 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Application security]]></category>
		<category><![CDATA[DevOps toolchain]]></category>
		<category><![CDATA[Mobile app security]]></category>
		<category><![CDATA[Security Testing]]></category>
		<category><![CDATA[Testing Automation]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=837</guid>

					<description><![CDATA[Most enterprises have adopted DevOps, yet far fewer mobile apps undergo automated security testing. Learn how to close that gap by integrating automated mobile app security testing into your CI/CD pipeline.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Most enterprises have adopted DevOps practices, yet a surprisingly small proportion of mobile apps undergo any form of automated security testing. That gap represents real risk. The good news is that teams already running CI/CD pipelines for mobile development are well-positioned to layer in automated security testing with relatively little additional overhead. This article explains what mobile app security testing automation is, why it matters, and exactly where and how to integrate it into a DevOps toolchain.</p>



<p><em>This article is based on a piece originally published on nowsecure.com. Statistics cited (RightScale 2016 State of the Cloud Report; Ponemon Institute 2017 Study on Mobile IoT Application Security) originate from that source and have not been independently verified.</em></p>



<h2 class="wp-block-heading">What Is Mobile App Security Testing Automation?</h2>



<p class="wp-block-paragraph">Mobile app security testing automation means running static and dynamic security analysis against a mobile app automatically — typically triggered by a build event — before the app is deployed. Security testing surfaces vulnerabilities that arise from an app&#8217;s permissions model, network connections, data storage, third-party libraries, and other components of the mobile attack surface.</p>



<p class="wp-block-paragraph">Integrated into a DevOps pipeline, automated security tests run alongside functional, integration, compatibility, and performance tests. This is the practical definition of <strong>DevSecOps</strong>: security becomes a continuous, automated step in the software delivery lifecycle (SDLC) rather than a one-off gate at the end. The earlier in the SDLC a defect is found, the cheaper it is to fix — a well-established principle that applies equally to security bugs.</p>



<h2 class="wp-block-heading">Why Automate Mobile App Security Testing?</h2>



<p class="wp-block-paragraph">Traditional mobile app security testing is manual. A typical manual process involves:</p>



<ul class="wp-block-list">
  <li>Navigating an app&#8217;s UI by hand to trigger different code paths</li>
  <li>Observing behavior across attack scenarios — for example, proxying traffic through a man-in-the-middle (MITM) setup, or running the app on a jailbroken or rooted device</li>
  <li>Collecting output from various testing tools and comparing it between builds</li>
</ul>



<p class="wp-block-paragraph">A skilled penetration tester performing a thorough assessment remains the gold standard for security coverage. However, penetration testing is time-consuming, and mobile release cycles have accelerated dramatically. As build frequency increases, manual security testing simply cannot keep pace. Security analysts are forced to focus only on recently changed code, leaving unreviewed functionality exposed.</p>



<p class="wp-block-paragraph">Many manual security checks are inherently repetitive — verifying that a debug flag is disabled in a production build, confirming that certificate pinning is in place, checking that sensitive data is not written to device logs. Repetitive, deterministic checks are exactly the tasks that automation handles well. Automating these checks frees security analysts to focus on exploratory, context-driven penetration testing where human judgment genuinely adds value.</p>



<h2 class="wp-block-heading">Benefits of Mobile App Security Testing Automation</h2>



<ul class="wp-block-list">
  <li><strong>Parallelization:</strong> Security tests run concurrently with functional, compatibility, and performance tests — adding no wall-clock time to the pipeline when cloud-based device farms are used.</li>
  <li><strong>Shift-left security:</strong> Defects are reported during the build phase, when developers still have full context and fixes are inexpensive.</li>
  <li><strong>Regression protection:</strong> Every build is scanned, so a security regression introduced in a code change is caught immediately rather than at a quarterly pen-test.</li>
  <li><strong>Script reuse:</strong> Existing UI automation scripts (written in XCTest, Appium, or similar frameworks) can drive automated dynamic security analysis with minimal additional effort.</li>
  <li><strong>More time for deep testing:</strong> Analysts are freed from repetitive checks and can invest time in nuanced, exploratory testing that automation cannot replicate.</li>
</ul>



<h2 class="wp-block-heading">Overcoming Common Challenges</h2>



<p class="wp-block-paragraph">Integrating automated security testing into a mobile DevOps pipeline is achievable, but there are real challenges to address up front.</p>



<h3 class="wp-block-heading">Coverage Challenges</h3>



<p class="wp-block-paragraph">Static analysis — examining source code or a compiled binary without running the app — is straightforward to automate and fast to run. However, it provides limited coverage on its own. Many security vulnerabilities only manifest at runtime: how the app handles network responses, what it writes to disk under certain conditions, or how it behaves on a compromised device.</p>



<p class="wp-block-paragraph">Dynamic analysis closes that gap by running the app on a real or virtual device and observing its runtime behavior. Automating dynamic analysis is more complex because it requires scripting realistic user interactions through the UI. Using a physical device rather than an emulator is preferable for accuracy, because emulators do not reproduce all hardware behaviors. The good news is that UI automation scripts already written for functional QA can be reused or extended to drive security-focused dynamic analysis.</p>



<h3 class="wp-block-heading">False Positives and Alert Fatigue</h3>



<p class="wp-block-paragraph">Static-only analysis tools frequently generate a high rate of false positives — flagging code patterns that look suspicious but are not actually exploitable in context. When developers are routinely asked to investigate false alarms, they lose trust in the tooling and begin to ignore findings altogether. This is the classic alert-fatigue problem. Combining static and dynamic analysis reduces false positive rates, because dynamic analysis can confirm whether a potential vulnerability is actually reachable and exploitable at runtime.</p>



<h3 class="wp-block-heading">Reporting Quality</h3>



<p class="wp-block-paragraph">A binary pass/fail report is insufficient. Developers need to understand <em>why</em> a finding is a security risk, <em>how</em> to reproduce it, and <em>what</em> the recommended remediation is. Quality automated security test reports should include:</p>



<ul class="wp-block-list">
  <li>A clear description of the vulnerability and the risk it represents</li>
  <li>Evidence or proof-of-concept that confirms the issue exists (not just a static code pattern match)</li>
  <li>Specific remediation guidance, not generic advice</li>
  <li>Severity classification so teams can prioritize</li>
</ul>



<p class="wp-block-paragraph">When reports meet these criteria, security findings can flow directly into an issue tracker such as Jira, where they are treated like any other development task — triaged, prioritized, assigned, and tracked to resolution.</p>



<h2 class="wp-block-heading">Who Owns Mobile App Security Testing Automation?</h2>



<p class="wp-block-paragraph">Ownership typically splits across two dimensions:</p>



<ul class="wp-block-list">
  <li><strong>Tool selection and findings review:</strong> The security team should own these. Security engineers have the expertise to evaluate tooling, interpret findings, validate results, and escalate genuine vulnerabilities.</li>
  <li><strong>Automation scripting:</strong> Development and QA teams are often better placed to write and maintain the UI automation scripts that drive dynamic analysis, because they already own functional test automation. Adding security-specific interactions to existing scripts — or configuring a security testing framework to consume those scripts — is usually low-overhead work for teams already fluent in Appium, XCTest, or XCode UI Automation.</li>
</ul>



<p class="wp-block-paragraph">The goal is for security testing to run at the same frequency as other automated UI tests, triggered automatically on every build, with no manual intervention required for standard checks.</p>



<h2 class="wp-block-heading">Where Does Security Testing Sit in the DevOps Toolchain?</h2>



<p class="wp-block-paragraph">The recommended insertion point is at the build stage — immediately after the CI server produces a compiled build artifact. The general flow looks like this:</p>



<ol class="wp-block-list">
  <li><strong>Developer pushes code</strong> to source control (e.g., GitHub, GitLab, Bitbucket).</li>
  <li><strong>CI server</strong> (e.g., Jenkins, Bitrise, Buddybuild, CircleCI) compiles the build.</li>
  <li><strong>Automated test suite</strong> runs — unit, integration, UI functional tests, and security tests execute in parallel against the build artifact.</li>
  <li><strong>Security testing framework</strong> receives the compiled app, runs static and dynamic analysis, and returns findings.</li>
  <li><strong>Issue tracker</strong> (e.g., Jira) ingests findings and creates or updates tickets, which enter the development team&#8217;s normal sprint workflow.</li>
  <li><strong>Build is promoted or blocked</strong> based on configurable severity thresholds — for example, blocking deployment if any critical vulnerabilities are found.</li>
</ol>



<p class="wp-block-paragraph">Inserting security testing at the build stage keeps it out of the critical path for developers during active coding, while still surfacing findings early enough to fix them before release.</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.nowsecure.com/wp-content/uploads/2017/02/mobile-app-security-testing-automation-continuous-integration.png" alt="Diagram showing mobile app security testing automation integrated into a CI/CD pipeline, with code moving from source control through CI build, security analysis, and into Jira issue tracking" /></figure>



<h2 class="wp-block-heading">Getting Started: Practical Steps</h2>



<p class="wp-block-paragraph">Teams that already have CI/CD pipelines for mobile development can begin integrating automated security testing with the following steps:</p>



<ol class="wp-block-list">
  <li><strong>Inventory existing test automation.</strong> Identify UI automation scripts (Appium, XCTest, Espresso, etc.) already in use for functional testing. These can often drive dynamic security analysis with minimal modification.</li>
  <li><strong>Select a mobile security testing tool</strong> that supports your platform (iOS, Android, or both), integrates with your CI server via an API or plugin, and provides actionable reporting. Evaluate whether the tool supports both static and dynamic analysis.</li>
  <li><strong>Integrate at the build stage.</strong> Configure your CI pipeline to pass the compiled build artifact to the security testing framework automatically on each build.</li>
  <li><strong>Connect findings to your issue tracker.</strong> Set up the integration between the security testing tool and your issue tracker so that findings automatically generate tickets with severity, description, and remediation guidance.</li>
  <li><strong>Define quality gates.</strong> Decide which severity levels should block a build from progressing to the next pipeline stage. Start conservatively — block only on critical findings — and tighten thresholds as the team builds familiarity with the tooling.</li>
  <li><strong>Review and tune regularly.</strong> Work with the security team to review reported findings, identify persistent false positives, and adjust tool configuration to improve signal-to-noise ratio over time.</li>
</ol>



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



<p class="wp-block-paragraph">Mobile app security testing automation is not a separate, heavyweight initiative — it is another layer in a testing stack that most mobile DevOps teams are already building. Static and dynamic security analysis can be triggered automatically on every build, driven by existing UI automation scripts, and reported through existing issue-tracking workflows. The result is a DevSecOps model where security defects are caught early, fixed cheaply, and tracked with the same discipline as functional bugs.</p>



<p class="wp-block-paragraph">If your team has already invested in CI/CD for mobile, the incremental effort to add automated security testing is small relative to the risk reduction it delivers. The remaining gap between DevOps adoption and mobile security testing coverage is a solvable problem — and solving it starts with treating security as just another automated test.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-to-make-mobile-app-security-testing-automation-a-devops-reality/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Test-Driven Development for JavaScript: A Practical Guide</title>
		<link>https://www.bestdevops.com/test-driven-development-for-javascript/</link>
					<comments>https://www.bestdevops.com/test-driven-development-for-javascript/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Wed, 01 Mar 2017 05:34:23 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JavaScript TDD]]></category>
		<category><![CDATA[JavaScript Test Coverage]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[TDD practices]]></category>
		<category><![CDATA[Test-Driven Development]]></category>
		<category><![CDATA[Testing JavaScript]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=831</guid>

					<description><![CDATA[JavaScript applications carry increasing amounts of client-side logic, yet frontend code is often under-tested. This guide explains how to apply Test-Driven Development (TDD) to JavaScript, what makes it different from server-side TDD, and walks through a concrete EmberJS example.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">JavaScript is one of the trickiest languages to test well. It is also one of the most widely used. Modern web applications increasingly push significant business logic to the browser, yet testing practices have not always kept pace. Historically, developers covered server-side code with unit and functional tests and relied on integration tests to verify the client-side. That approach made sense when JavaScript was mostly decorative — but it falls short when the frontend carries real application logic.</p>



<p class="wp-block-paragraph">This article explores how to apply Test-Driven Development (TDD) to client-side JavaScript: what stays the same compared with server-side TDD, what genuinely differs, and how to structure your test suite when both sides of the stack carry meaningful code.</p>



<h2 class="wp-block-heading">Why Integration Tests Alone Are No Longer Enough</h2>



<p class="wp-block-paragraph">For a long time, integration tests — tools that drive a real browser and assert on what appears in the DOM — were a reasonable proxy for client-side quality. If the right text appeared on the page, the reasoning went, the JavaScript must be working.</p>



<p class="wp-block-paragraph">The problem is that integration tests describe <em>outputs</em>, not <em>logic</em>. They tell you that a number appears on screen, but not whether the calculation that produced it is correct. They do not help you pinpoint which function broke when something goes wrong. And they are slow, fragile, and expensive to maintain at scale.</p>



<p class="wp-block-paragraph">As applications have grown to include complex state management, data transformation, and business rules in the browser, integration tests have become insufficient on their own. Unit and functional tests at the JavaScript layer are now necessary to achieve reliable coverage.</p>



<h2 class="wp-block-heading">The TDD Cycle Applied to JavaScript</h2>



<p class="wp-block-paragraph">The TDD workflow is the same regardless of language or runtime:</p>



<ol class="wp-block-list">
<li><strong>Write a failing test</strong> that describes the expected behaviour of code that does not yet exist.</li>
<li><strong>Write the minimum code</strong> needed to make that test pass.</li>
<li><strong>Refactor</strong> — clean up the implementation while keeping all tests green.</li>
</ol>



<p class="wp-block-paragraph">Repeat this cycle for each new behaviour you want to add. The discipline forces you to think about the interface before the implementation, and it leaves you with a test suite that documents exactly what your code is supposed to do.</p>



<h2 class="wp-block-heading">A Practical TDD Example with EmberJS</h2>



<p class="wp-block-paragraph">EmberJS (via Ember CLI) ships with a testing setup out of the box, making it a clear illustration of JavaScript TDD. When you generate a model with:</p>


<pre class="wp-block-code"><span><code class="hljs">ember g model user</code></span></pre>


<p class="wp-block-paragraph">Ember CLI creates two files automatically: <code>app/models/user.js</code> and <code>tests/unit/models/user-test.js</code>. Running <code>ember test</code> at this point passes a single boilerplate assertion confirming the model exists.</p>



<h3 class="wp-block-heading">Step 1 — Write Failing Tests</h3>



<p class="wp-block-paragraph">Suppose you need the <code>User</code> model to store a <code>name</code> and expose a computed <code>karma</code> property (defined as <code>upvotes</code> minus <code>downvotes</code>). Write the tests first, before touching the model:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">// tests/unit/models/user-test.js</span>
<span class="hljs-keyword">import</span> { moduleForModel, test } <span class="hljs-keyword">from</span> <span class="hljs-string">'ember-qunit'</span>;

moduleForModel(<span class="hljs-string">'user'</span>, <span class="hljs-string">'Unit | Model | user'</span>, {});

test(<span class="hljs-string">'it exists'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">assert</span>) </span>{
  <span class="hljs-keyword">let</span> model = <span class="hljs-keyword">this</span>.subject();
  assert.ok(!!model);
});

test(<span class="hljs-string">'must contain a name'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">assert</span>) </span>{
  <span class="hljs-keyword">let</span> model = <span class="hljs-keyword">this</span>.subject({ <span class="hljs-attr">name</span>: <span class="hljs-string">'testing name'</span> });
  assert.equal(model.get(<span class="hljs-string">'name'</span>), <span class="hljs-string">'testing name'</span>);
});

<span class="hljs-comment">// Karma = upvotes minus downvotes</span>
test(<span class="hljs-string">'should be able to retrieve the karma of a user'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">assert</span>) </span>{
  <span class="hljs-keyword">let</span> model = <span class="hljs-keyword">this</span>.subject({ <span class="hljs-attr">name</span>: <span class="hljs-string">'karma user'</span>, <span class="hljs-attr">upvotes</span>: <span class="hljs-number">10</span>, <span class="hljs-attr">downvotes</span>: <span class="hljs-number">5</span> });
  assert.equal(model.get(<span class="hljs-string">'karma'</span>), <span class="hljs-number">5</span>);
});</code></span></pre>


<p class="wp-block-paragraph">Running <code>ember test</code> now produces two failures. That is expected — and correct. The red state confirms your tests are actually exercising something.</p>



<h3 class="wp-block-heading">Step 2 — Write Code to Pass the Tests</h3>



<p class="wp-block-paragraph">Update the model with the minimum implementation needed:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-comment">// app/models/user.js</span>
<span class="hljs-keyword">import</span> Ember <span class="hljs-keyword">from</span> <span class="hljs-string">'ember'</span>;
<span class="hljs-keyword">import</span> DS <span class="hljs-keyword">from</span> <span class="hljs-string">'ember-data'</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> DS.Model.extend({
  <span class="hljs-attr">name</span>:      DS.attr(<span class="hljs-string">'string'</span>),
  <span class="hljs-attr">upvotes</span>:   DS.attr(<span class="hljs-string">'number'</span>),
  <span class="hljs-attr">downvotes</span>: DS.attr(<span class="hljs-string">'number'</span>),
  <span class="hljs-attr">karma</span>: Ember.computed(<span class="hljs-string">'upvotes'</span>, <span class="hljs-string">'downvotes'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
    <span class="hljs-keyword">return</span> <span class="hljs-keyword">this</span>.get(<span class="hljs-string">'upvotes'</span>) - <span class="hljs-keyword">this</span>.get(<span class="hljs-string">'downvotes'</span>);
  })
});</code></span></pre>


<p class="wp-block-paragraph">Run the tests again — all three assertions pass. The implementation is deliberately minimal: only what the tests demanded was written.</p>



<h3 class="wp-block-heading">Step 3 — Refactor</h3>



<p class="wp-block-paragraph">For this simple example, refactoring adds little value. In real-world code, this is the stage where you extract shared logic, improve naming, and eliminate duplication — always with the test suite running to catch regressions.</p>



<h2 class="wp-block-heading">Tooling Beyond EmberJS</h2>



<p class="wp-block-paragraph">Ember CLI&#8217;s integrated test runner is convenient, but most JavaScript projects assemble their own testing stack. Common options include:</p>



<ul class="wp-block-list">
<li><strong>Jest</strong> — widely adopted, zero-config for many projects, includes coverage reporting and mocking utilities.</li>
<li><strong>Mocha</strong> — flexible test runner often paired with the Chai assertion library.</li>
<li><strong>Jasmine</strong> — a batteries-included framework with built-in assertions and spies.</li>
<li><strong>Vitest</strong> — a fast, Vite-native test runner with a Jest-compatible API.</li>
</ul>



<p class="wp-block-paragraph">The TDD cycle is identical regardless of which tool you choose. Select the one that integrates cleanly with your build pipeline.</p>



<h2 class="wp-block-heading">What Makes JavaScript TDD Genuinely Different</h2>



<p class="wp-block-paragraph">The workflow is familiar, but the environment introduces real constraints you must account for.</p>



<h3 class="wp-block-heading">Client-side code cannot access the database directly</h3>



<p class="wp-block-paragraph">Server-side tests can set up fixture data in a real database and tear it down afterwards. Client-side JavaScript cannot. In your browser-side unit tests, you must supply data as fixtures or mocks and treat it as gospel. The correctness of the data itself is the server&#8217;s responsibility; your client-side tests focus on what the code <em>does</em> with that data.</p>



<h3 class="wp-block-heading">You end up with more test layers, not fewer</h3>



<p class="wp-block-paragraph">Splitting your application into two independently-tested domains means your overall test suite grows. A fully covered full-stack application may include all of the following:</p>



<ul class="wp-block-list">
<li>Server-side unit tests</li>
<li>Server-side functional tests</li>
<li>Client-side unit tests</li>
<li>Client-side functional tests</li>
<li>End-to-end (integration) tests</li>
</ul>



<p class="wp-block-paragraph">This is not overhead for its own sake. Each layer catches a different class of defect. Unit tests isolate logic; functional tests verify behaviour within a boundary; integration tests confirm the two sides work together. The increased volume is a direct consequence of increased complexity in the codebase.</p>



<h3 class="wp-block-heading">The runtime environment varies</h3>



<p class="wp-block-paragraph">Server-side code runs in a controlled environment you own. Client-side JavaScript runs in browsers you do not control, with varying APIs, timing behaviours, and rendering engines. Unit tests typically run in Node.js with a DOM simulation (such as jsdom) or inside a headless browser. Keep this in mind when writing assertions that depend on browser APIs — mock or stub them rather than assuming availability.</p>



<h2 class="wp-block-heading">Practical Advice for Getting Started</h2>



<ul class="wp-block-list">
<li><strong>Start small.</strong> Apply TDD to one module or utility function before rolling it out project-wide. Building the habit on contained, low-risk code is easier than starting on a complex component.</li>
<li><strong>Test behaviour, not implementation.</strong> Write tests that describe what your code should do, not how it does it. Tests coupled to internal details break every time you refactor.</li>
<li><strong>Treat external data as a contract.</strong> Mock API responses and database payloads at the boundary. Your client-side tests should not depend on a live server.</li>
<li><strong>Run tests on every save.</strong> Most modern test runners support watch mode. Keeping a tight feedback loop is what makes TDD productive rather than a chore.</li>
<li><strong>Refactor with confidence.</strong> The whole point of TDD is that the suite catches regressions, so use it. Do not skip the refactor step — accumulated technical debt is harder to pay down later.</li>
</ul>



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



<p class="wp-block-paragraph">TDD for JavaScript follows the same red-green-refactor cycle you would use anywhere else. What changes is the environment: you are working in a browser context, you cannot hit the database directly, and you need to account for an additional set of test layers on top of your existing server-side suite. That extra weight is justified. As JavaScript applications take on more responsibility, the cost of under-testing the frontend grows accordingly. A disciplined TDD practice — even applied incrementally — produces cleaner interfaces, fewer regressions, and a codebase that is easier to reason about as it evolves.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/test-driven-development-for-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DevOps from the Front Lines: Enterprise Adoption Principles and Pitfalls</title>
		<link>https://www.bestdevops.com/devops-from-the-front-lines-enterprise-adoption-principles-and-pitfalls/</link>
					<comments>https://www.bestdevops.com/devops-from-the-front-lines-enterprise-adoption-principles-and-pitfalls/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 25 Feb 2017 06:47:34 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[DevOps Adoption]]></category>
		<category><![CDATA[DevOps Principles]]></category>
		<category><![CDATA[Pitfalls]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=783</guid>

					<description><![CDATA[Enterprise DevOps adoption requires more than good intentions. Learn the governance principles that support a successful rollout and the four most common pitfalls that cause initiatives to fail.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on practitioner experience with enterprise DevOps adoption. Original source attribution: sys-con.com.</em></p>



<h2 class="wp-block-heading">Why Enterprise DevOps Adoption Is Different</h2>



<p class="wp-block-paragraph">When a company says it wants to adopt DevOps, the first practical question is scale: how large is the organization, and how far does it intend to take the transformation? The answer changes everything. For smaller teams, DevOps adoption can be relatively organic. For large enterprises managing dozens of applications, hundreds of developers, and deeply entrenched organizational boundaries, the complexity grows dramatically.</p>



<p class="wp-block-paragraph">At enterprise scale, a successful DevOps initiative requires two foundational commitments: first, a clear directive on how people and processes will be organized to manage application lifecycles and their interdependencies; and second, deliberate selection of the technologies that will manage those lifecycles and delivery pipelines. Without both, even well-funded initiatives stall.</p>



<h2 class="wp-block-heading">DevOps Governance: What It Must Cover</h2>



<p class="wp-block-paragraph">Governance is not a bureaucratic afterthought — it is the scaffolding that allows multiple teams to move in the same direction. Effective DevOps governance should explicitly address each of the following areas:</p>



<ul class="wp-block-list">
<li><strong>Cloud-based infrastructure services</strong> — both private and public options, with clear policies on provisioning and access</li>
<li><strong>Development workstation standards and images</strong> — reducing environment drift before code ever reaches a pipeline</li>
<li><strong>Source control standards</strong> — branching strategies, naming conventions, and repository ownership</li>
<li><strong>Continuous Integration (CI)</strong> — build triggers, artifact management, and failure response</li>
<li><strong>Continuous Delivery (CD)</strong> — promotion gates, environment promotion policies, and rollback procedures</li>
<li><strong>Testing methods and required coverage</strong> — unit, integration, security, and performance testing thresholds</li>
<li><strong>Configuration management</strong> — how infrastructure and application configuration is defined, versioned, and applied</li>
<li><strong>Continuous monitoring</strong> — what is measured, who owns alerts, and how incidents feed back into development</li>
<li><strong>Standardized health reporting</strong> — a consistent method for communicating Business Health, Operational Health, Testing Health, Development Health, and Pipeline Health across all applications</li>
</ul>



<p class="wp-block-paragraph">Leadership also has a strategic responsibility: carefully selecting which applications in the enterprise will genuinely benefit from DevOps practices first. Not every application is an ideal candidate for an initial rollout, and choosing poorly wastes political capital and resources.</p>



<h2 class="wp-block-heading">The Four Biggest Pitfalls in Enterprise DevOps Adoption</h2>



<h3 class="wp-block-heading">1. No Comprehensive Plan</h3>



<p class="wp-block-paragraph">This is the most damaging pitfall. IT executives often have the ambition to adopt DevOps but fail to commit to a clear, well-defined plan for the full transition. Without a single top-down approach and active executive sponsorship, DevOps initiatives fracture. Infrastructure, testing, project management, development, and operations teams end up with different — and often conflicting — priorities. The result is a DevOps team broken into factions, each championing its own interpretation of what DevOps means for the organization.</p>



<p class="wp-block-paragraph">Watch for these tell-tale symptoms of fragmentation:</p>



<ol class="wp-block-list">
<li>Cloud services are unavailable or inaccessible to application teams.</li>
<li>Configuration management tools exist but are not consistently used.</li>
<li>Feedback loops only function within specific groups, not across team boundaries.</li>
<li>Development teams do not prioritize DevOps-related tasks in their sprint planning.</li>
<li>Agile practices are applied only within development, not across the full delivery pipeline.</li>
<li>Departmental silos persist and actively suppress cross-team innovation.</li>
<li>Individual groups spend excessive effort justifying DevOps to other departments rather than practicing it.</li>
</ol>



<h3 class="wp-block-heading">2. No Cross-Functional Training</h3>



<p class="wp-block-paragraph">Many organizations suffer from a significant gap between the tools and processes they adopt and the training investment they make in the people who must use them. A common pattern: the application team is nominally cross-functional on paper, but individuals from other departments continue to operate in their traditional siloed roles, never learning the adjacent technologies or workflows that DevOps depends on.</p>



<p class="wp-block-paragraph">When teams are not educated on cross-functional processes and technologies, DevOps adoption degrades slowly and painfully. People revert to familiar patterns, handoffs accumulate latency, and the pipeline never achieves the flow it was designed for. Training must be a planned, budgeted, ongoing activity — not an afterthought left to individuals to pursue on their own time.</p>



<h3 class="wp-block-heading">3. Missing DevOps Roles</h3>



<p class="wp-block-paragraph">A lack of planning and training directly creates a third problem: critical roles and responsibilities are simply absent from the organizational structure. This often goes unnoticed until something breaks and there is no clear owner to fix it.</p>



<p class="wp-block-paragraph">The remedy is deliberate org design. A well-structured cross-functional agile team should be built around a specific application pipeline — not assembled from representatives of separate departments who remain primarily loyal to their original team. Ownership of the pipeline, the product, and the delivery process must live in one unified team with clear divisions of responsibility and accountability.</p>



<h3 class="wp-block-heading">4. Information Stuck in Silos</h3>



<p class="wp-block-paragraph">Large organizations typically accumulate valuable data: operational dashboards, test result reports, deployment metrics, and development status indicators. Individual teams often build impressive internal tooling and refine processes within their own scope. The problem is that without an agreed-upon, centralized standard for sharing this information across the organization, all of that insight remains local.</p>



<p class="wp-block-paragraph">Siloed information means siloed innovation. If the operations team has discovered an effective monitoring pattern, but development never sees it, the benefit is contained. If testing surfaces a recurring defect category, but it never reaches architecture discussions, the root cause is never addressed. A shared information standard — covering how dashboards are structured, what metrics are reported, and how frequently — ensures that individual improvements compound into organizational improvement.</p>



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



<p class="wp-block-paragraph">Enterprise DevOps adoption is fundamentally an organizational challenge as much as a technical one. The principles are consistent across companies that succeed:</p>



<ul class="wp-block-list">
<li>Start with a comprehensive, documented adoption plan backed by executive commitment.</li>
<li>Define governance across all pipeline domains before selecting tools.</li>
<li>Invest in cross-functional training as a first-class activity, not an optional supplement.</li>
<li>Build teams around pipelines and products, not around traditional departmental boundaries.</li>
<li>Establish a shared information standard so that insights from any team benefit all teams.</li>
</ul>



<p class="wp-block-paragraph">The best DevOps adoption initiatives are driven from the top, backed by coordinated leadership, and structured so that every functional area has both a stake and a role in the outcome. Without that foundation, even the best toolchain and the most capable engineers will struggle to deliver lasting results.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/devops-from-the-front-lines-enterprise-adoption-principles-and-pitfalls/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Automating Configuration Management for DevOps Test Environments</title>
		<link>https://www.bestdevops.com/automating-configuration-management-for-devops-test-environments/</link>
					<comments>https://www.bestdevops.com/automating-configuration-management-for-devops-test-environments/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 31 Jan 2017 07:49:04 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Automating]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[configuration management]]></category>
		<category><![CDATA[Environment Management]]></category>
		<category><![CDATA[Test Environments]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=472</guid>

					<description><![CDATA[Manual configuration management is a bottleneck in cloud-based DevOps pipelines. Learn how automated CM tools like Puppet, Chef, Ansible, and Salt help teams provision consistent test environments on demand and accelerate delivery.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a white paper originally published by Capgemini covering configuration management challenges in cloud-based DevOps test environments.</em></p>



<h2 class="wp-block-heading">Background: Why Configuration Management Matters in Modern DevOps</h2>



<p class="wp-block-paragraph">The shift toward customer-centric digital businesses, combined with the adoption of agile and DevOps practices, has accelerated enterprise migration to cloud platforms. Moving legacy IT systems to the cloud offers clear advantages: global development reach, shorter deployment cycles, and faster time to market for new features.</p>



<p class="wp-block-paragraph">From a quality assurance perspective, this shift places new demands on test environment management. Testers need environments that spin up quickly, match production configurations accurately, and remain consistent across iterations. In traditional software development, configuration management (CM) was largely a manual discipline focused on maintaining the consistency of a platform&#8217;s functional and physical attributes. In a cloud-native DevOps context, that manual approach becomes a significant bottleneck.</p>



<p class="wp-block-paragraph">Modern projects require automated environment provisioning that is both instantaneous and repeatable — ensuring that each new environment mirrors its predecessors exactly. Configuration management is therefore a foundational challenge when building a robust test environment management framework on cloud infrastructure.</p>



<h2 class="wp-block-heading">Types of Test Environments</h2>



<p class="wp-block-paragraph">Test environments in cloud-based DevOps pipelines generally fall into several categories. According to the World Quality Report 2016, testing typically occurs across the following environment types:</p>



<ul class="wp-block-list">
<li><strong>Permanent, cloud-based environments:</strong> Long-lived environments hosted on cloud infrastructure, used for sustained integration or regression testing.</li>
<li><strong>Temporary, cloud-based environments:</strong> On-demand environments that are provisioned for a specific test run and then decommissioned to reduce cost.</li>
<li><strong>Virtualized test environments:</strong> Environments running on virtual machines or containers, enabling rapid cloning and parallel test execution.</li>
<li><strong>Temporary, non-cloud environments:</strong> Short-lived environments built on on-premises infrastructure for isolated or compliance-driven testing scenarios.</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2017/01/test-environment-types.jpg" alt="Diagram illustrating the different types of test environments used in DevOps projects" /></figure>
</div>


<h2 class="wp-block-heading">Configuration and Environment Management on Cloud: Scope and Challenges</h2>



<p class="wp-block-paragraph">A well-defined configuration management policy is central to determining whether test environments are genuinely ready to operate in the cloud. The scope of CM services for test environments covers three core activities:</p>



<ol class="wp-block-list">
<li>Defining and implementing configuration management policies</li>
<li>Establishing reference configurations for each environment type</li>
<li>Developing and maintaining a configuration management plan</li>
</ol>



<p class="wp-block-paragraph">Beyond these strategic activities, day-to-day CM operations for test environments typically include:</p>



<ul class="wp-block-list">
<li>Administering the configuration management toolset</li>
<li>Monitoring and continuously improving CM processes and assets</li>
<li>Validating and deploying software releases</li>
<li>Promoting configuration changes across development, testing, staging, and production environments</li>
<li>Automating configuration deployment and compliance reporting tasks</li>
<li>Validating and publishing release notes</li>
</ul>



<p class="wp-block-paragraph">The primary objective of test environment management is fast setup time combined with on-demand availability. Meeting this objective requires accelerating the deployment pipeline and stabilising environments at each stage. Delays in promoting code from development through testing to staging must be eliminated through automation.</p>



<p class="wp-block-paragraph">The World Quality Report 2016 identified managing multiple versions of ERP test environments as a persistent challenge, attributing much of the difficulty to the absence of automated CM tooling for cloud-hosted test environments.</p>



<h2 class="wp-block-heading">Building an Automated Configuration Management Toolset</h2>



<p class="wp-block-paragraph">The foundation of automated CM for test environments is a toolset capable of discovering system state, generating compliance reports, and executing configuration changes consistently across environments. The following step-by-step approach provides a practical implementation path:</p>



<ol class="wp-block-list">
<li><strong>Identify configuration items (CIs):</strong> Catalogue the OS-level items (firewall rules, hostnames, network settings) and application-level items that need to be managed and tracked.</li>
<li><strong>Select and install a CM tool:</strong> Choose a configuration management engine suited to your stack and team skill set. Common options include <a href="https://www.puppet.com/">Puppet</a>, <a href="https://www.chef.io/">Chef</a>, <a href="https://www.ansible.com/">Ansible</a>, and <a href="https://saltproject.io/">Salt</a>. Each uses a different paradigm (agent-based vs. agentless, declarative vs. procedural), so evaluate them against your environment constraints.</li>
<li><strong>Integrate supporting tooling:</strong> Connect your CM tool to version control (Git), a CI server (Jenkins), and a build tool (Maven or equivalent) to create a fully automated pipeline from code commit to environment deployment.</li>
<li><strong>Generate baseline reports:</strong> Produce &#8220;as-is&#8221; configuration reports to document the current state of all managed environments before making changes.</li>
<li><strong>Write deployment scripts:</strong> Build CM scripts (Puppet manifests, Chef cookbooks, Ansible playbooks, or Salt states) that codify desired environment configurations.</li>
<li><strong>Establish an automated deployment workflow:</strong> Define the promotion workflow so that tested configurations move automatically from development to test to staging environments with minimal manual intervention.</li>
<li><strong>Document procedures:</strong> Record deployment procedures, rollback plans, and environment specifications so the process is repeatable by any team member.</li>
<li><strong>Release for operational use:</strong> Publish the validated CM scripts and workflows for use by development, QA, and operations teams.</li>
</ol>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2017/01/configuration-management-tools.jpg" alt="Diagram showing common tools used for configuration management automation in DevOps pipelines" /></figure>
</div>


<h2 class="wp-block-heading">Choosing the Right Configuration Management Tool</h2>



<p class="wp-block-paragraph">The four most widely adopted open-source CM tools each have distinct characteristics worth understanding before committing to one:</p>



<figure class="wp-block-table"><table><thead><tr><th>Tool</th><th>Architecture</th><th>Language</th><th>Best suited for</th></tr></thead><tbody><tr><td>Puppet</td><td>Agent/master</td><td>Puppet DSL (Ruby-based)</td><td>Large, heterogeneous infrastructure with strong compliance requirements</td></tr><tr><td>Chef</td><td>Agent/server</td><td>Ruby</td><td>Teams comfortable with Ruby and needing fine-grained control</td></tr><tr><td>Ansible</td><td>Agentless (SSH)</td><td>YAML</td><td>Rapid adoption, simpler environments, no agent overhead</td></tr><tr><td>Salt</td><td>Agent/master or agentless</td><td>Python/YAML</td><td>High-speed execution at scale, event-driven automation</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">In practice, many teams combine tools: for example, using Terraform for infrastructure provisioning, Ansible for configuration management, and Jenkins for orchestrating the end-to-end pipeline.</p>



<h2 class="wp-block-heading">Benefits of Automating Configuration Management</h2>



<p class="wp-block-paragraph">Automating configuration management across test environments delivers measurable improvements to DevOps delivery pipelines:</p>



<ul class="wp-block-list">
<li><strong>Consistency and repeatability:</strong> Codified configurations eliminate environment drift, ensuring that every provisioned environment is identical to its predecessors.</li>
<li><strong>Faster environment provisioning:</strong> On-demand spin-up and teardown reduces idle environment costs and unblocks testers waiting for environments.</li>
<li><strong>Better pipeline control and asset utilisation:</strong> Automated management improves visibility into environment state, enabling smarter scheduling and reducing total cost of ownership (TCO).</li>
<li><strong>Improved productivity:</strong> Integrating health checks and smoke tests (shakedowns) into automated build and deployment workflows means teams spend less time diagnosing environment issues and more time testing product functionality.</li>
<li><strong>Audit and compliance:</strong> Automated CM reports provide an auditable record of configuration state at every stage of the pipeline.</li>
</ul>



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



<p class="wp-block-paragraph">As cloud adoption accelerates and DevOps pipelines grow in complexity, manual configuration management can no longer keep pace. Automating CM across test environments — using tools like Puppet, Chef, Ansible, or Salt, integrated with Git, Jenkins, and complementary tooling — enables teams to provision consistent, on-demand environments at the speed the business demands. The result is a more focused development and testing practice with lower operational overhead and higher confidence in release quality.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/automating-configuration-management-for-devops-test-environments/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Turn Your DevOps Volume Up to 11: Seizing the Full Business Opportunity</title>
		<link>https://www.bestdevops.com/turn-your-devops-volume-up-to-11-and-seize-the-business-opportunity/</link>
					<comments>https://www.bestdevops.com/turn-your-devops-volume-up-to-11-and-seize-the-business-opportunity/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 19 Jan 2017 05:29:54 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[DevOps practices]]></category>
		<category><![CDATA[Digital]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=387</guid>

					<description><![CDATA[Velocity alone won't win in DevOps. Learn 11 practical toolchain integrations that let you crank up quality, resilience, compliance, and release speed — all at once.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Originally sourced from cloudcomputing-news.net (January 2017). Expanded and updated for a DevOps engineering audience.</em></p>



<h2 class="wp-block-heading">Why &#8220;Going to 11&#8221; Is the Wrong Goal — Unless You Do It Right</h2>



<p class="wp-block-paragraph">&#8220;These go to 11.&#8221; The immortal line from the 1984 mockumentary <em>This Is Spinal Tap</em>, where fictional guitarist Nigel Tufnel proudly reveals that his amplifier&#8217;s volume dial goes one notch beyond the standard maximum. It&#8217;s absurd — and that&#8217;s exactly the point.</p>



<p class="wp-block-paragraph">Applied to DevOps, the metaphor holds up surprisingly well. Continuous delivery pipelines make it technically possible to crank deployment frequency to seemingly absurd levels: hundreds of releases per day, every code commit pushed straight to production. But raw deployment volume — like a volume dial cranked to 11 — is meaningless if the signal is distorted. Speed without quality, resilience, or compliance is just noise.</p>



<p class="wp-block-paragraph">Mature DevOps practitioners understand this intuitively. The real goal is to push <em>every</em> dimension of software delivery to its maximum simultaneously: deployment frequency, application quality, test coverage, observability, compliance, and supportability. That requires more than a fast pipeline — it requires deeply integrated toolchains that make quality a built-in property of every release, not an afterthought.</p>



<h2 class="wp-block-heading">11 Toolchain Integrations That Amplify DevOps Across Every Dimension</h2>



<p class="wp-block-paragraph">The following integrations address the cross-functional collaboration and automation that separate high-performing DevOps teams from those that simply deploy frequently. Consider them a starting checklist, not an exhaustive list.</p>



<h3 class="wp-block-heading">1. Auto-Generate Test Cases From Agile User Stories</h3>



<p class="wp-block-paragraph">Connect your agile planning tool to your test management platform so that user stories automatically produce the minimum viable set of test cases covering 100% of the described functionality. Each test case should link to the correct test data and expected outcomes, reducing manual translation effort and the risk of untested acceptance criteria slipping into production.</p>



<h3 class="wp-block-heading">2. Real-Time Release Content Dashboards</h3>



<p class="wp-block-paragraph">Give every stakeholder — dev, QA, ops, and business — a unified, live view of what is in each release: which user stories, features, bug fixes, and dependencies are moving through the pipeline and at what stage. A shared dashboard reduces the coordination overhead that typically kills release velocity and helps teams reconcile cross-application dependencies before they become production incidents.</p>



<h3 class="wp-block-heading">3. Environment-Aware Test Data Attachment</h3>



<p class="wp-block-paragraph">Automatically attach test data criteria to test cases at the point of creation in your agile planning tool. As a feature is promoted from development to test to pre-production, the test execution engine should automatically resolve and use data that already exists in the target environment — eliminating the classic &#8220;works on my machine&#8221; failure mode caused by mismatched data sets.</p>



<h3 class="wp-block-heading">4. APM-Gated Continuous Integration Builds</h3>



<p class="wp-block-paragraph">Integrate Application Performance Management (APM) directly into your CI system so that every build is evaluated against defined pass/fail performance thresholds — not just functional test results. Developers should be able to trigger this check from within the tools they already use (such as the Jenkins dashboard) and be linked directly to the relevant APM data when a build fails, shortening the feedback loop from hours to minutes.</p>



<h3 class="wp-block-heading">5. Service Virtualization With Integrated Test Data Management</h3>



<p class="wp-block-paragraph">Use service virtualization to simulate downstream services and APIs that are unavailable, unstable, or cost-prohibitive to use in test environments. Combine this with a test data management layer that injects referentially correct, compliant data into those virtual services. This combination dramatically increases test environment availability and fidelity while reducing the compliance risk associated with using real production data in non-production environments.</p>



<h3 class="wp-block-heading">6. Automated Test Data Generation and Reservation in Deployment Workflows</h3>



<p class="wp-block-paragraph">Embed test data provisioning directly into your deployment pipeline. Rather than requiring testers to manually request and configure data before a test run, each deployment workflow should automatically generate, reserve, and assign the necessary test data sets. This removes a common bottleneck that inflates cycle time between code completion and validated release.</p>



<h3 class="wp-block-heading">7. Automated Test Execution Tied to Go/No-Go Promotion Gates</h3>



<p class="wp-block-paragraph">Automatically trigger the appropriate test suites when a build reaches a new pipeline stage and feed the results back into the release management system. Define promotion rules — pass rates, severity thresholds, coverage minimums — so that promotion to the next environment happens automatically when criteria are met and is blocked when they are not. This removes human latency from routine promotion decisions without sacrificing quality control.</p>



<h3 class="wp-block-heading">8. Virtual Environment Provisioning Within Deployment Workflows</h3>



<p class="wp-block-paragraph">Provision virtual services and spin up complete virtual test environments as a native step in the deployment pipeline, rather than requiring separate infrastructure requests. Teams no longer need to wait for physical or cloud environments to be built, configured, and stabilised before testing can begin. This is particularly impactful for integration and system testing stages, which traditionally carry the longest environment lead times.</p>



<h3 class="wp-block-heading">9. APM Deployment as Part of the Release Workflow</h3>



<p class="wp-block-paragraph">Treat APM instrumentation and configuration as a first-class deployment artifact. When an application is deployed, APM agents and dashboards should be automatically configured alongside it, with baseline performance metrics captured immediately before and after the release event. This gives operations teams a clean before/after comparison for every deployment rather than discovering regressions during incidents.</p>



<h3 class="wp-block-heading">10. API Management Integrated With APM for Business Transaction Tracing</h3>



<p class="wp-block-paragraph">Combine API gateway telemetry with APM data to gain end-to-end visibility into how specific APIs affect application performance and customer experience. The integration should support proactive alerting on emerging performance degradation and the ability to trace the full interaction chain of APIs involved in a specific business transaction — not just individual service health checks in isolation.</p>



<h3 class="wp-block-heading">11. Load Test Scenarios Embedded in APM Business Analysis</h3>



<p class="wp-block-paragraph">Allow APM users to incorporate load test results — including throughput, response time distributions, and error rates under synthetic load — directly into their performance dashboards and business analysis workflows. This connects synthetic performance data with real-world APM metrics, enabling earlier detection of capacity and scalability issues before they manifest under production traffic.</p>



<h2 class="wp-block-heading">The Underlying Principle: Data, Metrics, and Context Flow Across the Whole Pipeline</h2>



<p class="wp-block-paragraph">What these 11 integrations share is a common architectural principle: the right data and context must be available to the right person in the right tool at the right moment in the pipeline. A test result is only actionable if a developer can see it in their CI dashboard. An APM alert is only useful if it&#8217;s tied to a specific deployment event. A go/no-go gate only works if the criteria are grounded in business requirements, not just technical thresholds.</p>



<p class="wp-block-paragraph">When toolchains are integrated with this level of intentionality, no individual discipline — development, testing, or operations — becomes a bottleneck. Each function operates with full context, and the pipeline as a whole moves with purpose rather than lurching from handoff to handoff.</p>



<h2 class="wp-block-heading">Start With the Integrations That Address Your Biggest Constraint</h2>



<p class="wp-block-paragraph">Not every team needs all 11 integrations immediately, and implementing them all at once without a clear value hypothesis is a recipe for a slow, expensive toolchain project that never ships. A more pragmatic approach:</p>



<ul class="wp-block-list">
<li>Identify where your pipeline currently loses the most time or quality signal.</li>
<li>Pick the one or two integrations from this list that directly address that constraint.</li>
<li>Instrument the before/after: measure cycle time, defect escape rate, or mean time to restore before and after implementing the integration.</li>
<li>Use those results to justify and prioritise the next integration.</li>
</ul>



<p class="wp-block-paragraph">DevOps maturity is incremental. The teams that sustain the highest deployment frequencies with the lowest failure rates didn&#8217;t build their toolchains overnight. They built them deliberately, one well-justified integration at a time — and they measured the outcome of each one.</p>



<p class="wp-block-paragraph">So go ahead: crank every dial to 11. Just make sure every dial is wired up correctly first.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/turn-your-devops-volume-up-to-11-and-seize-the-business-opportunity/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Puppet Launches Sixth Annual State of DevOps Survey for 2017</title>
		<link>https://www.bestdevops.com/puppet-announces-sixth-annual-state-of-devops-survey/</link>
					<comments>https://www.bestdevops.com/puppet-announces-sixth-annual-state-of-devops-survey/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Wed, 18 Jan 2017 07:22:30 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Events]]></category>
		<category><![CDATA[DevOps News]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[DevOps practices]]></category>
		<category><![CDATA[DevOps Research]]></category>
		<category><![CDATA[DevOps Summit]]></category>
		<category><![CDATA[Reports]]></category>
		<category><![CDATA[Survey]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=379</guid>

					<description><![CDATA[Puppet and DORA announced the 2017 State of DevOps Survey, the sixth edition of the industry's most comprehensive IT professional survey, exploring infrastructure architecture, team experimentation, and broader business outcomes.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Originally announced via Marketwired on January 17, 2017. Source: Yahoo Finance / Marketwired press release.</em></p>



<h2 class="wp-block-heading">Puppet and DORA Launch the 2017 State of DevOps Survey</h2>



<p class="wp-block-paragraph">Puppet, the infrastructure automation platform, announced in January 2017 the launch of its sixth annual State of DevOps Survey, produced in collaboration with DevOps Research &amp; Assessment (DORA). Having surveyed more than 25,000 IT professionals over five previous editions, the State of DevOps Report is widely regarded as one of the most comprehensive longitudinal studies of DevOps adoption and outcomes in the industry.</p>



<p class="wp-block-paragraph">Each year the report examines how technical practices and workplace culture influence IT team performance and broader organizational outcomes. The 2017 edition builds on prior years while introducing several new research areas.</p>



<h2 class="wp-block-heading">What the Previous Five Years Revealed</h2>



<p class="wp-block-paragraph">Data gathered in earlier editions of the survey consistently showed a dramatic performance gap between high-performing and low-performing IT organizations. According to the press release, high performers demonstrated:</p>



<ul class="wp-block-list">
<li><strong>200× more frequent deployments</strong> than low-performing peers</li>
<li><strong>2,555× faster lead times</strong> from code commit to production</li>
<li><strong>One-third the change failure rate</strong> of low performers</li>
</ul>



<p class="wp-block-paragraph">Beyond raw delivery metrics, previous reports also examined the human side of DevOps, including the effects of burnout, organizational culture, and employee engagement on team and business performance.</p>



<h2 class="wp-block-heading">New Research Areas in the 2017 Survey</h2>



<p class="wp-block-paragraph">The 2017 edition expands on established themes while introducing three new areas of investigation:</p>



<h3 class="wp-block-heading">1. Infrastructure Architecture Patterns</h3>



<p class="wp-block-paragraph">Containers attracted significant attention in DevOps circles heading into 2017, but the survey recognizes that sound infrastructure strategy involves more than simply containerizing workloads. This research strand explores how different infrastructure architecture decisions influence DevOps outcomes, giving practitioners data-backed guidance beyond the hype.</p>



<h3 class="wp-block-heading">2. Experimentation in Software Development</h3>



<p class="wp-block-paragraph">The fail-fast principle is a common DevOps talking point, but the 2017 survey sets out to measure its real-world impact. Researchers investigated the role of structured team experimentation in software development and delivery pipelines, looking for evidence of how a culture of experimentation correlates with delivery performance.</p>



<h3 class="wp-block-heading">3. Business Outcomes Beyond Profit</h3>



<p class="wp-block-paragraph">Earlier editions demonstrated that IT performance drives commercial results—productivity, profitability, and market share. The 2017 survey broadened this lens to include organizations that are not profit-driven, such as government agencies and non-profits. By adding success metrics relevant to public-sector and mission-driven teams, the report aimed to make its findings actionable for the full range of organizations adopting DevOps.</p>



<h2 class="wp-block-heading">What Industry Leaders Said</h2>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;I&#8217;m always struck by how much people rely on the DevOps Report for guidance, for understanding how DevOps can help, and for making the case for DevOps within their organizations. The data we gather this year will build on our understanding of DevOps, and we hope will reveal how people are practicing DevOps today, what new practices are emerging, and how the culture of DevOps is changing.&#8221;</p><cite>— Nigel Kersten, Chief Technical Strategist, Puppet</cite></blockquote>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;I am very excited about this year&#8217;s research, because we&#8217;ll be exploring aspects of leadership and architecture to show how it enables DevOps outcomes, as well as how it may achieve objectives that organizational leaders care about most. By doing this, we&#8217;ll understand better than ever what impacts DevOps performance—and how to better show its value to everyone in the organization.&#8221;</p><cite>— Gene Kim, Co-founder, DORA; Co-author of <em>The Phoenix Project</em> and <em>The DevOps Handbook</em></cite></blockquote>



<h2 class="wp-block-heading">Survey Sponsors</h2>



<p class="wp-block-paragraph">The 2017 State of DevOps Report was sponsored by Atlassian, Amazon Web Services (AWS), Hewlett Packard Enterprise (HPE), and Splunk, Inc.</p>



<h2 class="wp-block-heading">Why the State of DevOps Report Matters</h2>



<p class="wp-block-paragraph">For DevOps practitioners, the State of DevOps Report serves as an evidence base for internal advocacy. The quantitative performance gaps documented across six years of research give engineering leaders concrete data to justify investment in CI/CD pipelines, automation, blameless postmortems, and cultural change programs. The expansion into non-profit and government contexts in 2017 was a notable signal that DevOps principles were maturing beyond their Silicon Valley origins into broader enterprise and public-sector adoption.</p>



<p class="wp-block-paragraph">The research methodology, developed in collaboration with DORA, uses validated survey instruments and statistical analysis to identify causal relationships rather than simple correlations—a key reason the report has maintained credibility with both practitioners and executives over its multi-year run.</p>



<h2 class="wp-block-heading">About DORA and the Accelerate Research</h2>



<p class="wp-block-paragraph">DORA (DevOps Research &amp; Assessment) was co-founded by Gene Kim, Dr. Nicole Forsgren, and Jez Humble. The organization&#8217;s research eventually formed the backbone of the book <em>Accelerate: The Science of Lean Software and DevOps</em> (2018), which formalized the four key metrics—deployment frequency, lead time for changes, mean time to restore, and change failure rate—that are now widely used to measure software delivery performance. The 2017 survey was a direct predecessor to that work.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/puppet-announces-sixth-annual-state-of-devops-survey/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DevOps Tools and Agile Teams &#8211; Best DevOps articles from around the web</title>
		<link>https://www.bestdevops.com/devops-tools-and-agile-teams-best-devops-articles-from-around-the-web/</link>
					<comments>https://www.bestdevops.com/devops-tools-and-agile-teams-best-devops-articles-from-around-the-web/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 17 Jan 2017 16:36:49 +0000</pubDate>
				<category><![CDATA[DevOps News]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[DevOps Updates]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Article]]></category>
		<category><![CDATA[DevOps Zone]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Updates]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=372</guid>

					<description><![CDATA[Source &#8211; Dzone.com Nothing is immune to change, including software delivery practices. As DevOps continues to mature, for example, and [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Source &#8211;</strong> Dzone.com</p>
<p>Nothing is immune to change, including software delivery practices. As DevOps continues to mature, for example, and become more deeply ingrained in the enterprise, new revelations are discovered and expanded upon throughout the industry. However, three basic tenets will always remain at the core of DevOps: people, processes and tools. While each of the three is equally important to a DevOps transformation, we found this week’s top news dives specifically into the DevOps toolchain.  Continue reading to learn which configuration management tools to choose and how to use the toolchain to scale successfully. Even with all the hype around DevOps, we still haven’t forgotten about another popular method – Agile (or, is it a mindset?).</p>
<p>Continue reading for more on the latest DevOps news and trends, and, as always, stay tuned to all the news coming from @ElectricCloud on DevOps and Continuous Delivery throughout the week.</p>
<h3>1) What is DevOps? Gene Kim Explains</h3>
<p>Gene Kim is an author of the popular DevOps Novel, The Phoenix Project, and the upcoming DevOps Handbook, currently scheduled for release in October. He was formerly the founder and CTO of Tripwire, but these days you can find him writing books, organizing the DevOps Enterprise Summit, and working on research and other projects as a co-founder of IT Revolution.</p>
<h3>2) The Secret to Successful Scaling: Use the DevOps Toolchain to Become a Well-Oiled Machine</h3>
<p>One of the most exciting challenges young companies face is the prospect of scaling up. Successful growth is not just about gaining traction, but about implementing a smart business model that allows you to expand your customer base without increasing overhead at the same rate. Ideally, a scalable strategy will enable exponential revenue growth alongside more incremental cost increases.</p>
<h3>3) An Agile Dilemma: Mindset or Method?</h3>
<p>There’s an intriguing dialogue happening in the world of Agile software development that may be relevant for anyone interested in how business works in a rapidly changing world. For those readers who are not familiar with Agile, this innovative approach to creating software emerged out of a February 2001 gathering of seventeen software developers in Snowbird, Utah. Among them were Jeff Sutherland and Ken Schwaber, the coauthors of what has come to be known as Scrum, and Ward Cunningham, the originator of the wiki, which became popularized with the explosive growth of Wikipedia.</p>
<h3>4) DevOps Experts Unite on Video Podcast Series</h3>
<p>To remain competitive in today’s software-driven economy, organizations of all sizes are investing in DevOps to become better at releasing software. Although the ROI is evident in the IT and business performance of organizations that have successfully implemented DevOps practices, the journey still can be challenging.</p>
<h3>5) Select The Best Configuration Management Tools For Your Company</h3>
<p>Choosing the best configuration management tools is not easy. There is a raft of options on the market, ranging from simple command-line interface scripting tools to full-blown packaging and provisioning systems, as well as application release automation and orchestration tools. The key to selecting the best configuration management tools is to focus on what the organization needs are and analyze which of the many offerings will suit your enterprise.</p>
<h3>6) A Transformation Journey to Modernized IT | @BigDataExpo #Cloud #BigData #DigitalTransformation</h3>
<p>Improving end-user experiences and leveraging big data analytics helps Aimia head off digital disruption and improve core operations and processes. The next BriefingsDirect Voice of the Customer digital business transformation case study examines how loyalty management innovator Aimia is modernizing, consolidating, and standardizing its global IT infrastructure.</p>
<h3>7) New IT Salary Research Shows Most DevOps Practitioners Earn $100K or More</h3>
<p>Puppet recently released its 2016 DevOps Salary Report which indicates that most DevOps practitioners in the United States earn $100,000 or more in annual salary. The annual report also found that 43 percent of IT managers earn $150,000 or more, up from 26 percent last year. The salary report is based on data gathered from more than 4,600 respondents to the survey.</p>
<h3>8) Small Things Matter: What Developers Should Really Care About</h3>
<p>Hey boy, are you doing microservices? Sure you are. Everybody does. Have you moved to 4-tier architecture already? Are your applications cloud-native? Have you container-dockerized yourself? All of it? Then, I bet you also have strong DevOps culture. Of course, none of these could be achieved without Management 3000.0 and Modern Agile. Oh boy, you’re so awesome! But wait, wait. We’re not done yet. You’re using Marathon or Kubernetes, right? And Big Data, you have to do Big Data! What about your APIs? Are they RESTful enough?</p>
<h3>9) Testing In Production Comes Out Of The Shadows</h3>
<p>For enterprise testing organizations, the world of software development is somewhat similar to the world of legalized marijuana. There’s a saying in the legal pot world: “Out of the shadows and into the light.” This is used to describe the way users of illegal weed are now able to come out of hiding and talk about their usage in public without fear of reprisal.</p>
<h3>10) Agile in Dispersed or Distributed Teams</h3>
<p>Cross-cultural team building enables collaboration and teamwork in dispersed or distributed agile teams. You need to invest to get the best out of a dispersed team argues Nienke Alma, a people oriented Agile enthusiast working as a Scrum master and agile coach. Several more people wrote about what is needed to make agile work with dispersed or distributed teams.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/devops-tools-and-agile-teams-best-devops-articles-from-around-the-web/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>7 Reasons Why Containers Are a Natural Fit for DevOps Teams</title>
		<link>https://www.bestdevops.com/7-reasons-why-containers-are-a-natural-fit-for-devops-teams/</link>
					<comments>https://www.bestdevops.com/7-reasons-why-containers-are-a-natural-fit-for-devops-teams/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 13 Jan 2017 16:41:57 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[DevOps Updates]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Reason]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=332</guid>

					<description><![CDATA[Containers and DevOps go hand in hand. From security isolation to rapid deployment automation, here are seven reasons why container technologies are a natural match for modern DevOps teams.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Containers have become one of the most discussed technologies in enterprise IT, and their rise is closely tied to the growth of DevOps practices. Their ability to package, isolate, and deploy application workloads consistently across environments aligns almost perfectly with what DevOps teams need: speed, reliability, and repeatability.</p>



<p class="wp-block-paragraph">While adoption in production environments has historically lagged behind general interest — mirroring the early, cautious uptake of cloud services — the trajectory is clear. Technologies such as Docker and Kubernetes have matured rapidly, and container-based architectures are now a mainstream consideration for any team pursuing continuous delivery or microservices.</p>



<p class="wp-block-paragraph">Below are seven core reasons why containers fit so naturally into a DevOps workflow.</p>



<h2 class="wp-block-heading">1. Containers Boost Data and Application Security</h2>



<p class="wp-block-paragraph">One of the most immediate security benefits of containers is isolation. Each container encapsulates its own application code and dependencies, keeping workloads separated from one another even when they share the same underlying host kernel. Using kernel namespaces and control groups (cgroups), ops teams can enforce strict boundaries between test and production environments, preventing accidental cross-environment contamination.</p>



<p class="wp-block-paragraph">Access controls can be applied at the container level, ensuring that only designated users and services can interact with a container&#8217;s contents. This gives security and operations teams fine-grained control over their architecture without requiring dedicated hardware per workload.</p>



<h2 class="wp-block-heading">2. Containers Enable Consistent, Reproducible Environments</h2>



<p class="wp-block-paragraph">One of the most persistent pain points in software delivery is environment drift — the &#8220;it works on my machine&#8221; problem. Containers solve this by bundling the application together with its runtime dependencies, libraries, and configuration into a single portable image. That same image runs identically on a developer&#8217;s laptop, a CI/CD pipeline runner, a staging server, or a production cluster.</p>



<p class="wp-block-paragraph">This consistency is foundational for DevOps teams practicing continuous integration and continuous delivery (CI/CD), where predictable builds and deployments are non-negotiable.</p>



<h2 class="wp-block-heading">3. Containers Accelerate Deployment Automation</h2>



<p class="wp-block-paragraph">Containers are inherently automation-friendly. Container images are defined in code (e.g., a <code>Dockerfile</code>), which means the entire build-and-deploy process can be scripted, version-controlled, and integrated into automated pipelines. Orchestration platforms such as Kubernetes extend this further, automating scheduling, scaling, health checking, and rollbacks.</p>



<p class="wp-block-paragraph">For DevOps teams, this means less manual intervention during deployments and a faster path from code commit to production.</p>



<h2 class="wp-block-heading">4. Containers Support Microservices Architecture</h2>



<p class="wp-block-paragraph">Microservices decompose an application into small, independently deployable services. Containers are the natural packaging unit for microservices: each service runs in its own container, with its own dependencies, and can be developed, deployed, and scaled independently of the others.</p>



<p class="wp-block-paragraph">This architectural pattern aligns directly with DevOps principles of small, frequent releases and team autonomy. Individual teams can own and deploy their services without coordinating large, monolithic release cycles.</p>



<h2 class="wp-block-heading">5. Containers Improve Resource Efficiency</h2>



<p class="wp-block-paragraph">Unlike virtual machines, containers do not require a full guest operating system per workload. They share the host OS kernel, which means they start faster and consume significantly less memory and CPU overhead. This efficiency allows ops teams to run many more workloads on the same hardware, reducing infrastructure costs and improving density.</p>



<p class="wp-block-paragraph">Faster startup times also translate directly into faster scaling responses — a container can be ready to serve traffic in seconds, compared to the minutes a VM might take to boot.</p>



<h2 class="wp-block-heading">6. Containers Facilitate Easier Rollbacks and Version Control</h2>



<p class="wp-block-paragraph">Because container images are immutable and versioned, rolling back a deployment becomes a straightforward operation: redeploy the previous image tag. There is no need to unpick configuration changes or patch an existing environment. This immutability also makes auditing easier — the exact state of any deployment is recorded in the image and its associated registry.</p>



<p class="wp-block-paragraph">For DevOps teams practicing continuous delivery, this dramatically reduces the risk associated with each release and shortens the mean time to recovery (MTTR) when issues arise.</p>



<h2 class="wp-block-heading">7. Containers Bridge the Dev–Ops Divide</h2>



<p class="wp-block-paragraph">At its core, DevOps is about breaking down the wall between development and operations. Containers help structurally. Developers define the container image and its runtime requirements; operations teams are responsible for running and orchestrating those containers in production. The contract between the two sides is the image itself — a shared, concrete artifact both teams understand and can reason about.</p>



<p class="wp-block-paragraph">This shared ownership model reduces friction at handoff points and encourages the kind of collaborative culture that DevOps promotes.</p>



<h2 class="wp-block-heading">Looking Ahead</h2>



<p class="wp-block-paragraph">Container adoption has followed a trajectory similar to cloud computing&#8217;s early days: initial scepticism, followed by a tipping point of maturity and tooling, followed by rapid mainstream uptake. With Kubernetes now widely available across major cloud providers and a rich ecosystem of tooling around security, observability, and service mesh, the barriers to production adoption are lower than ever.</p>



<p class="wp-block-paragraph">For DevOps teams that have not yet made the move, the question is less <em>whether</em> to adopt containers and more <em>how</em> to do so in a way that fits their organisation&#8217;s delivery goals and operational maturity.</p>



<p class="wp-block-paragraph"><em>This article draws on foundational concepts originally discussed in industry coverage from eWeek, with additional independent technical explanation provided by the editors of BestDevOps.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/7-reasons-why-containers-are-a-natural-fit-for-devops-teams/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cloud &#038; DevOps: An Evolving Relationship for a Better Future</title>
		<link>https://www.bestdevops.com/cloud-devops-an-evolving-relationship-for-a-better-future/</link>
					<comments>https://www.bestdevops.com/cloud-devops-an-evolving-relationship-for-a-better-future/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 13 Jan 2017 06:39:05 +0000</pubDate>
				<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[DevOps Updates]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=321</guid>

					<description><![CDATA[Cloud computing and DevOps are no longer separate disciplines. Together they accelerate digital transformation, enable automation, and help enterprises deliver faster, higher-quality software. Here is how the relationship has evolved and why it matters.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a piece originally published on siliconindia.com (January 2017). The concepts discussed remain foundational to modern cloud-native DevOps practice.</em></p>



<h2 class="wp-block-heading">Why Cloud and DevOps Belong Together</h2>



<p class="wp-block-paragraph">The relationship between cloud computing and DevOps has strengthened steadily over the past decade. Both disciplines share the same core goals: speed, automation, flexibility, and reliability. Neither is as effective in isolation as it is when the two are deliberately combined. Understanding why requires looking at what each brings to the table — and what each demands from the other.</p>



<h2 class="wp-block-heading">From Product-Centric to Service-Centric: The Driver Behind the Shift</h2>



<p class="wp-block-paragraph">Modern enterprises no longer compete purely on product features. Users increasingly evaluate the <em>total experience</em> a company delivers — encompassing the product, the supporting services, the update cadence, and the reliability of the platform. Consider how Apple bundles hardware, iCloud storage, and the iTunes and App Store ecosystems: the iPhone is not just a device; it is an entry point into a continuously updated service experience. Apple&#8217;s ability to release software updates, manage scale fluctuations in iCloud, and ship new features rapidly is only possible because development, release, and operations are tightly coordinated.</p>



<p class="wp-block-paragraph">This shift from product-centricity to service-centricity is the underlying societal pressure that makes DevOps — and cloud — strategically essential. Organisations that cannot ship fast, operate reliably, and scale on demand will lose ground to those that can.</p>



<h2 class="wp-block-heading">What DevOps Contributes</h2>



<p class="wp-block-paragraph">DevOps is a cultural and technical practice that breaks down the traditional wall between software development and IT operations teams. Its core outcomes include:</p>



<ul class="wp-block-list">
<li><strong>Agility:</strong> Shorter release cycles and faster response to changing requirements.</li>
<li><strong>Quality:</strong> Automated testing and continuous integration catch defects earlier and reduce costly production incidents.</li>
<li><strong>Affordability:</strong> Automation reduces the manual effort — and therefore the cost — of repetitive deployment and configuration tasks.</li>
<li><strong>Collaboration:</strong> Cross-functional teams that share responsibility for both building and running software are more aligned and more effective.</li>
</ul>



<h2 class="wp-block-heading">What Cloud Contributes</h2>



<p class="wp-block-paragraph">Cloud platforms accelerate nearly every DevOps practice:</p>



<ul class="wp-block-list">
<li><strong>On-demand infrastructure:</strong> Development, staging, and production environments can be provisioned and torn down programmatically, eliminating the lead times associated with physical hardware.</li>
<li><strong>Standardised APIs:</strong> Cloud providers expose well-documented APIs that allow pipelines, monitoring tools, and applications to communicate with back-end services consistently.</li>
<li><strong>Managed automation services:</strong> Infrastructure-as-code tools, managed Kubernetes services, serverless compute, and CI/CD integrations are now first-class features on every major cloud platform.</li>
<li><strong>Elasticity:</strong> Scaling up to handle a product launch or a traffic spike, then scaling back down to control cost, is a native cloud capability that supports operational excellence.</li>
</ul>



<h2 class="wp-block-heading">A Transformational Match: Cloud + DevOps in Practice</h2>



<p class="wp-block-paragraph">The combination of cloud and DevOps is not merely additive — it is multiplicative. When DevOps practices are executed on a cloud platform, several capabilities emerge that would be difficult or impossible to achieve on-premises alone:</p>



<ul class="wp-block-list">
<li><strong>Automated delivery pipelines:</strong> Code changes can move from a developer&#8217;s workstation through automated tests to a cloud-hosted production environment with minimal manual intervention.</li>
<li><strong>Version-controlled infrastructure:</strong> Infrastructure-as-code (IaC) tools such as Terraform or AWS CloudFormation allow infrastructure to be treated like application code — versioned, reviewed, and rolled back when necessary.</li>
<li><strong>Cross-team visibility:</strong> Cloud-native monitoring and logging services give development and operations teams a shared view of system health, removing the blame-shifting that siloed tooling encourages.</li>
<li><strong>Hybrid and multi-cloud DevOps:</strong> Modern DevOps pipelines can span multiple cloud providers and on-premises environments, giving organisations flexibility and reducing vendor lock-in risk.</li>
</ul>



<p class="wp-block-paragraph">A concrete example is the redesign of the Manchester United digital platform (referenced in the original 2017 article). The platform integrates multiple sub-systems, external service providers, content management, digital asset management, and a mobile application backend — several of which are hosted on public cloud infrastructure. The goal is a richer fan experience and better insight into audience behaviour. Coordinating the development and operation of such a complex, multi-vendor system at scale is exactly the problem that DevOps practices and cloud capabilities are designed to solve together.</p>



<h2 class="wp-block-heading">Cloud as the Accelerator for DevOps Success</h2>



<p class="wp-block-paragraph">Cloud providers recognised early that DevOps teams are heavy platform consumers, and they have responded by building DevOps-oriented services directly into their offerings. Platform-as-a-Service (PaaS) products integrate build, test, deploy, and monitor capabilities into a coherent environment, so teams spend less time wiring together disparate tools and more time shipping features.</p>



<p class="wp-block-paragraph">Services such as AWS CodePipeline, Google Cloud Build, and Azure DevOps are examples of cloud-native CI/CD offerings. AWS CloudFormation and Google Cloud Deployment Manager handle infrastructure provisioning declaratively. These tools embody the principle that automation should be a first-class, platform-supported capability — not an afterthought bolted on by individual teams.</p>



<p class="wp-block-paragraph">The practical implication is that the cloud platform is increasingly <em>the</em> DevOps toolchain, with third-party tools integrating into it rather than standing separately. Organisations evaluating their DevOps maturity should assess not only their internal practices but also how well they are exploiting the automation capabilities their chosen cloud platform already provides.</p>



<h2 class="wp-block-heading">DevOps Brings Harmony to Cloud Adoption</h2>



<p class="wp-block-paragraph">The relationship is bidirectional. Just as cloud accelerates DevOps, DevOps accelerates successful cloud adoption. Many organisations have discovered that migrating workloads to the cloud without also adopting DevOps practices produces disappointing results: the infrastructure is more elastic, but the delivery process is still slow and manual, and the collaboration problems between development and operations teams remain unsolved.</p>



<p class="wp-block-paragraph">DevOps practices — particularly continuous integration, infrastructure-as-code, and shared observability — are the cultural and technical prerequisites that allow cloud infrastructure to be used effectively. Without them, cloud elasticity is underutilised, and the promised cost savings fail to materialise.</p>



<h2 class="wp-block-heading">Key Challenges to Address</h2>



<p class="wp-block-paragraph">Combining cloud and DevOps effectively is not without friction. Organisations regularly encounter the following challenges:</p>



<ul class="wp-block-list">
<li><strong>Skills gaps:</strong> DevOps requires engineers who are comfortable spanning development, operations, security, and cloud-specific tooling. This breadth is in short supply and takes time to build.</li>
<li><strong>Cultural resistance:</strong> Breaking down silos between development and operations teams requires sustained leadership commitment. Technology alone does not achieve it.</li>
<li><strong>Multi-cloud complexity:</strong> Supporting workloads across multiple cloud providers introduces tooling, networking, and governance complexity that needs deliberate architecture.</li>
<li><strong>Security and compliance:</strong> Automation speeds up deployment, but it can also propagate misconfigurations quickly. DevSecOps — integrating security into the pipeline from the start — is the answer, but it adds scope and requires additional expertise.</li>
<li><strong>Automation scope:</strong> Not every process benefits equally from automation. Organisations should identify the highest-value bottlenecks in their delivery pipeline and automate those first, rather than attempting to automate everything at once.</li>
</ul>



<h2 class="wp-block-heading">Practical Steps for Organisations Getting Started</h2>



<p class="wp-block-paragraph">For teams looking to deepen their cloud-DevOps integration, a prioritised approach helps:</p>



<ol class="wp-block-list">
<li><strong>Audit your current pipeline</strong> to identify where manual handoffs slow delivery down the most.</li>
<li><strong>Adopt infrastructure-as-code</strong> so that environment configuration is reproducible and version-controlled.</li>
<li><strong>Implement a CI/CD pipeline</strong> that automatically builds, tests, and deploys application changes to a cloud environment.</li>
<li><strong>Invest in shared observability</strong> — logs, metrics, and traces — so that development and operations teams work from the same data.</li>
<li><strong>Train for breadth:</strong> Encourage engineers to develop skills that span both development and operations disciplines. T-shaped engineers — broad awareness with deep expertise in at least one area — are particularly valuable.</li>
<li><strong>Integrate security early</strong> by adding automated security scanning and policy checks to your pipeline rather than treating them as a final gate.</li>
</ol>



<h2 class="wp-block-heading">Conclusion: A Win-Win Relationship</h2>



<p class="wp-block-paragraph">Cloud computing and DevOps are complementary forces. Cloud gives DevOps teams the elastic, API-driven infrastructure they need to automate and scale delivery pipelines. DevOps gives cloud investments a structured, collaborative operating model that extracts their full value. Together, they shift organisational focus away from firefighting outages toward continuous improvement, swift deployment, and new functionality — the outcomes that define competitive software organisations today.</p>



<p class="wp-block-paragraph">Organisations that treat cloud and DevOps as independent initiatives will capture only a fraction of the available benefit. Those that deliberately combine the two — with the right tooling, the right culture, and the right talent — position themselves to deliver better software, faster, at lower cost.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/cloud-devops-an-evolving-relationship-for-a-better-future/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How Not to Write Your Git Update Hooks: Performance Pitfalls and Smarter Patterns</title>
		<link>https://www.bestdevops.com/how-not-to-write-your-git-update-hooks/</link>
					<comments>https://www.bestdevops.com/how-not-to-write-your-git-update-hooks/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 12 Jan 2017 07:25:39 +0000</pubDate>
				<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[DevOps Updates]]></category>
		<category><![CDATA[Test Driven DevOps]]></category>
		<category><![CDATA[DevOps tool]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Git Hooks]]></category>
		<category><![CDATA[Git Tutorials]]></category>
		<category><![CDATA[Hook scripts]]></category>
		<category><![CDATA[script]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=313</guid>

					<description><![CDATA[Learn how to write efficient Git update hooks that enforce central repository rules without slowing down your development workflow. Covers commit verification, file-size checks, and commit-message validation.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Originally sourced from DZone. This article expands on the lessons learned when optimizing Git hook performance after migrating a central repository from SVN to Git.</em></p>



<h2 class="wp-block-heading">Background: Why Git Hooks Matter After an SVN Migration</h2>



<p class="wp-block-paragraph">Switching a team&#8217;s primary code repository from SVN to Git brings considerable freedom — but also new responsibilities. One powerful mechanism Git provides is <strong>hooks</strong>: executable scripts placed in the <code>.git/hooks</code> directory (or <code>your_repo.git/hooks</code> for a bare repository) that run automatically at specific points in the Git workflow. Hooks can write output to the console during a push or commit, and can even abort those operations entirely.</p>



<p class="wp-block-paragraph">Common use cases for hooks on a central (bare) repository include:</p>



<ul class="wp-block-list">
<li>Preventing large binary files from being pushed into the repository.</li>
<li>Enforcing a commit-message naming convention (e.g., requiring an issue tracker ID).</li>
<li>Blocking pushes to protected branches without passing CI checks.</li>
</ul>



<p class="wp-block-paragraph">The hook covered in depth here is the <strong>update hook</strong>, which is the right tool for enforcing rules on a central shared repository.</p>



<h2 class="wp-block-heading">Understanding the Update Hook</h2>



<p class="wp-block-paragraph">The update hook fires on the <em>server side</em> every time someone pushes to a repository. It runs once <strong>per ref</strong> being updated, meaning a push that updates three branches will invoke the hook three times.</p>



<p class="wp-block-paragraph">Git passes three positional arguments to the hook:</p>



<ol class="wp-block-list">
<li><strong>The ref name</strong> being updated — for example, <code>refs/heads/my_fancy_branch</code>.</li>
<li><strong>The old object SHA-1</strong> — the commit currently at the tip of that ref in the remote repository.</li>
<li><strong>The new object SHA-1</strong> — the commit at the tip of the ref in the developer&#8217;s local repository.</li>
</ol>



<p class="wp-block-paragraph">Exit with a non-zero status to reject the push; exit with zero to accept it. Because the hook runs before branch labels are updated, you can inspect exactly which commits are new without worrying about race conditions with other pushes.</p>



<h2 class="wp-block-heading">The Naive Approach — and Why It Falls Apart</h2>



<p class="wp-block-paragraph">The most obvious implementation iterates over every commit between <code>$old_ref</code> and <code>$new_ref</code> and checks each one individually:</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment"># Pseudo-code — do not copy verbatim</span>
commits=$(git rev-<span class="hljs-keyword">list</span> $old_ref..$new_ref)

<span class="hljs-keyword">for</span> commit in $commits; <span class="hljs-keyword">do</span>
    <span class="hljs-keyword">if</span> ! check_commit <span class="hljs-string">"$commit"</span>; then
        <span class="hljs-keyword">echo</span> <span class="hljs-string">"Commit $commit failed the check."</span>
        <span class="hljs-keyword">exit</span> <span class="hljs-number">1</span>
    fi
done</code></span></pre>


<p class="wp-block-paragraph">This works in simple cases but has three serious problems:</p>



<ol class="wp-block-list">
<li><strong>Slow per-commit overhead.</strong> Each call to <code>check_commit</code> typically spawns one or more subprocesses (e.g., <code>grep</code>, <code>awk</code>, <code>git cat-file</code>). Process-spawn overhead accumulates quickly across hundreds of commits.</li>
<li><strong>Early exit hides multiple problems.</strong> The script exits on the first bad commit. Developers must fix issues one at a time and re-push repeatedly before they see all violations — a frustrating experience.</li>
<li><strong>Merge commits inflate the revision range.</strong> <code>git rev-list $old_ref..$new_ref</code> returns <em>all</em> reachable commits, including those pulled in from <code>master</code> via a merge. Those commits were already validated when they landed on <code>master</code>; re-checking them wastes time and can push hook execution into the minutes range on long-running feature branches.</li>
</ol>



<h3 class="wp-block-heading">The Merge-Inflation Problem Illustrated</h3>



<p class="wp-block-paragraph">Consider this common workflow:</p>



<ul class="wp-block-list">
<li>Developer works on <code>feature_branch</code>.</li>
<li>Developer merges <code>master</code> into <code>feature_branch</code> to stay current.</li>
<li>Developer adds a few more commits on <code>feature_branch</code>.</li>
<li>Developer pushes.</li>
</ul>



<p class="wp-block-paragraph">The naive <code>rev-list</code> call returns every commit reachable from <code>$new_ref</code> but not from <code>$old_ref</code> — including potentially hundreds of commits that came from <code>master</code>. On a busy repository, a feature branch delayed by a few weeks could drag hook execution to several minutes per push. That is unacceptable for developer experience.</p>



<h2 class="wp-block-heading">The Smarter Approach</h2>



<p class="wp-block-paragraph">Two goals drive the improved design:</p>



<ol class="wp-block-list">
<li>Skip commits that are already reachable from existing branches (i.e., already verified).</li>
<li>Validate all remaining commits in a single pipeline rather than one at a time.</li>
</ol>



<h3 class="wp-block-heading">Filtering Already-Known Commits</h3>



<p class="wp-block-paragraph">The key insight is that the update hook runs <em>after</em> all new objects have been received but <em>before</em> any branch labels are moved. That means existing branch labels still point to where they were before the push. You can exploit this to exclude any commit reachable from a known branch:</p>


<pre class="wp-block-code"><span><code class="hljs language-php">git rev-<span class="hljs-keyword">list</span> $old_ref..$new_ref --not --branches=<span class="hljs-string">'*'</span></code></span></pre>


<p class="wp-block-paragraph">The <code>--not --branches='*'</code> flag tells Git to exclude any commit reachable from any local branch ref. Because branch labels haven&#8217;t moved yet, this effectively limits the output to commits that are genuinely new to the repository — exactly the set that needs checking.</p>



<h3 class="wp-block-heading">Processing Commits in One Pipeline</h3>



<p class="wp-block-paragraph">Instead of looping and spawning a process per commit, pipe the entire set of new commits through a sequence of Git and Unix commands in one shot. Collect all violations at once, report them all, and then exit with a failure code if any exist. Developers see all problems in a single push attempt.</p>



<h2 class="wp-block-heading">Practical Example 1: Block Oversized Files</h2>



<p class="wp-block-paragraph">Large binary files committed to a Git repository cause repository bloat that is painful to undo. Here is an efficient pipeline to detect and reject them:</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment"># Step 1: list SHA1 hashes and paths of all objects touched by new commits</span>
git rev-<span class="hljs-keyword">list</span> --objects $old_ref..$new_ref --not --branches=<span class="hljs-string">'*'</span> \

<span class="hljs-comment"># Step 2: for each object, print its SHA1, size in bytes, and path</span>
  | git cat-file --batch-check=<span class="hljs-string">'%(objectname) %(objectsize) %(rest)'</span> \

<span class="hljs-comment"># Step 3: filter objects exceeding the size limit, remove duplicates</span>
  | awk -v limit=<span class="hljs-string">"$FILESIZE_LIMIT_BYTES"</span> <span class="hljs-string">'$2 &gt; limit { print }'</span> \
  | sort \
  | uniq --skip-fields=<span class="hljs-number">2</span></code></span></pre>


<p class="wp-block-paragraph">The output is a list of <code>SHA1 size path</code> triplets for every oversized object. If the output is non-empty, print a helpful message listing each offending file and its size, then exit 1 to reject the push.</p>



<p class="wp-block-paragraph"><strong>Why this is fast:</strong> <code>git cat-file --batch-check</code> reads all objects in a single pass without checking out file contents. The entire pipeline runs in roughly constant time relative to the number of commits, not file sizes.</p>



<h2 class="wp-block-heading">Practical Example 2: Enforce Commit-Message Format</h2>



<p class="wp-block-paragraph">If your team requires every commit message to reference an issue tracker ID (e.g., <code>PROJ-1234</code>), the following pipeline validates all new commits in one pass:</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment"># List SHA1 and subject line for non-merge commits only</span>
git log --no-merges --pretty=<span class="hljs-string">'%H %s'</span> $old_ref..$new_ref --not --branches=<span class="hljs-string">'*'</span> \

<span class="hljs-comment"># Filter out commits whose subject line matches the required pattern</span>
  | grep -Ev <span class="hljs-string">"$MESSAGE_REGEX"</span></code></span></pre>


<p class="wp-block-paragraph">Any line remaining after the <code>grep -Ev</code> filter represents a commit that violates the naming convention. Collect the output, print the offending commit hashes and subjects as a single error block, and exit 1 only after showing everything. This way developers can fix all non-conforming messages in one go before re-pushing.</p>



<p class="wp-block-paragraph"><strong>Note:</strong> The <code>--no-merges</code> flag skips merge commits, which typically have auto-generated messages that do not follow the team convention.</p>



<h2 class="wp-block-heading">Edge Cases to Handle</h2>



<p class="wp-block-paragraph">The examples above cover the common push case. Real-world hooks also need to handle:</p>



<ul class="wp-block-list">
<li><strong>New branch creation:</strong> <code>$old_ref</code> will be the null SHA-1 (<code>0000000000000000000000000000000000000000</code>). Your script must detect this and adjust the <code>rev-list</code> range accordingly — otherwise the range is invalid.</li>
<li><strong>Branch deletion:</strong> <code>$new_ref</code> will be the null SHA-1. There are no commits to check; just allow or deny based on policy.</li>
<li><strong>Force pushes:</strong> The old and new refs may not share a common ancestor. Consider whether your checks should still apply and how your <code>rev-list</code> range behaves.</li>
<li><strong>Tags:</strong> The ref name will start with <code>refs/tags/</code> rather than <code>refs/heads/</code>. Decide whether your hook logic applies to tag objects.</li>
</ul>



<h2 class="wp-block-heading">General Principles for Hook Performance</h2>



<ul class="wp-block-list">
<li><strong>Prefer batch operations over per-commit loops.</strong> Unix pipelines and Git&#8217;s built-in batch modes (<code>--batch-check</code>, <code>--pretty</code> format strings) are far more efficient than spawning a subprocess per commit.</li>
<li><strong>Report all violations before exiting.</strong> Collect every problem, display them all at once, then exit. Never make developers push multiple times just to discover new errors.</li>
<li><strong>Exclude already-verified commits.</strong> Use <code>--not --branches='*'</code> to avoid re-checking work that is already on an accepted branch.</li>
<li><strong>Keep hooks focused.</strong> One hook file can chain multiple checks, but each check should be independently understandable and testable.</li>
<li><strong>Test hooks locally before deploying.</strong> Hooks can be copied into a local <code>.git/hooks</code> directory and invoked manually with representative SHA-1 arguments.</li>
</ul>



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



<p class="wp-block-paragraph">Git&#8217;s update hook is a powerful enforcement point on a central repository, but a naïve per-commit loop can turn every push into a slow, frustrating experience. By using <code>--not --branches='*'</code> to skip already-accepted commits and processing the remaining set in a single pipeline, you can enforce rules like file-size limits and commit-message conventions in a matter of seconds. The result is a hook infrastructure that protects code quality without getting in developers&#8217; way.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-not-to-write-your-git-update-hooks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
