<?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>Process &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/tag/process/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 13:37:10 +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>Architecting with Google Cloud: Design and Process</title>
		<link>https://www.bestdevops.com/architecting-with-google-cloud-design-and-process/</link>
					<comments>https://www.bestdevops.com/architecting-with-google-cloud-design-and-process/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Mon, 04 Jan 2021 05:44:15 +0000</pubDate>
				<category><![CDATA[Google Cloud]]></category>
		<category><![CDATA[Architecting]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Google cloud]]></category>
		<category><![CDATA[Memorystore]]></category>
		<category><![CDATA[Process]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=15321</guid>

					<description><![CDATA[Source:-https://google.qwiklabs.com This course features a combination of lectures, design activities, and hands-on labs to show you how to use proven [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:-https://google.qwiklabs.com</p>
<p>This course features a combination of lectures, design activities, and hands-on labs to show you how to use proven design patterns on Google Cloud to build highly reliable and efficient solutions and operate deployments that are highly available and cost-effective. This course was created for those who have already completed the Architecting with Google Compute Engine or Architecting with Google Kubernetes Engine course.</p>
<p>Prerequisites:<br />
To get the most out of this course, participants should: ●Have completed Architecting with Google Compute Engine, Architecting with Google Kubernetes Engine, or have equivalent experience ●Have basic proficiency with command-line tools ●Have systems operations experience, including deploying and managing applications, either on-premises or in a public cloud environment<br />
Objectives:<br />
●Apply a tool set of questions, techniques and design considerations ●Define application requirements and express them objectively as KPIs, SLO&#8217;s and SLI&#8217;s ●Decompose application requirements to find the right microservice boundaries ●Leverage Google Cloud developer tools to set up modern, automated deployment pipelines ●Choose the appropriate Google Cloud Storage services based on application requirements ●Architect cloud and hybrid networks ●Implement reliable, scalable, resilient applications balancing key performance metrics with cost ●Choose the right Google Cloud deployment services for your applications ●Secure cloud applications, data and infrastructure ●Monitor service level objectives and costs using Stackdriver tools<br />
Audience:<br />
●Cloud Solutions Architects, Site Reliability Engineers, Systems Operations professionals, DevOps Engineers, IT managers. ●Individuals using Google Cloud Platform to create new solutions or to integrate existing systems, application environments, and infrastructure with the Google Cloud Platform.<br />
Course Outline<br />
The course includes presentations, demonstrations, and hands-on labs.<br />
Module 1: Defining the Service</p>
<p>Describe users in terms of roles and personas.<br />
Write qualitative requirements with user stories.<br />
Write quantitative requirements using key performance indicators (KPIs).<br />
Evaluate KPIs using SLOs and SLIs.<br />
Determine the quality of application requirements using SMART criteria.<br />
Module 2: Microservice Design and Architecture</p>
<p>Decompose monolithic applications into microservices.<br />
Recognize appropriate microservice boundaries.<br />
Architect stateful and stateless services to optimize scalability and reliability.<br />
Implement services using 12-factor best practices.<br />
Build loosely coupled services by implementing a well-designed REST architecture.<br />
Design consistent, standard RESTful service APIs.<br />
Module 3: DevOps Automation</p>
<p>Automate service deployment using CI/CD pipelines.<br />
Leverage Cloud Source Repositories for source and version control.<br />
Automate builds with Cloud Build and build triggers.<br />
Manage container images with Google Container Registry.<br />
Create infrastructure with code using Deployment Manager and Terraform.<br />
Module 4: Choosing Storage Solutions</p>
<p>Choose the appropriate Google Cloud data storage service based on use case, durability, availability, scalability and cost.<br />
Store binary data with Cloud Storage.<br />
Store relational data using Cloud SQL and Spanner.<br />
Store NoSQL data using Firestore and Cloud Bigtable.<br />
Cache data for fast access using Memorystore.<br />
Build a data warehouse using BigQuery.<br />
Module 5: Google Cloud and Hybrid Network Architecture</p>
<p>Design VPC networks to optimize for cost, security, and performance.<br />
Configure global and regional load balancers to provide access to services.<br />
Leverage Cloud CDN to provide lower latency and decrease network egress.<br />
Evaluate network architecture using the Cloud Network Intelligence Center.<br />
Connect networks using peering and VPNs.<br />
Create hybrid networks between Google Cloud and on-premises data centers using Cloud Interconnect.<br />
Module 6: Deploying Applications to Google Cloud</p>
<p>Choose the appropriate Google Cloud deployment service for your applications.<br />
Configure scalable, resilient infrastructure using Instance Templates and Groups.<br />
Orchestrate microservice deployments using Kubernetes and GKE.<br />
Leverage App Engine for a completely automated platform as a service (PaaS).<br />
Create serverless applications using Cloud Functions.<br />
Module 7: Designing Reliable Systems</p>
<p>Design services to meet requirements for availability, durability, and scalability.<br />
Implement fault-tolerant systems by avoiding single points of failure, correlated failures, and cascading failures.<br />
Avoid overload failures with the circuit breaker and truncated exponential backoff design patterns.<br />
Design resilient data storage with lazy deletion.<br />
Analyze disaster scenarios and plan for disaster recovery using cost/risk analysis.<br />
Module 8: Security</p>
<p>Design secure systems using best practices like separation of concerns, principle of least privilege, and regular audits.<br />
Leverage Cloud Security Command Center to help identify vulnerabilities.<br />
Simplify cloud governance using organizational policies and folders.<br />
Secure people using IAM roles, Identity-Aware Proxy, and Identity Platform.<br />
Manage the access and authorization of resources by machines and processes using service accounts.<br />
Secure networks with private IPs, firewalls, and Private Google Access.<br />
Mitigate DDoS attacks by leveraging Cloud DNS and Cloud Armor.<br />
Module 9: Maintenance and Monitoring</p>
<p>Manage new service versions using rolling updates, blue/green deployments, and canary releases.<br />
Forecast, monitor, and optimize service cost using the Google Cloud pricing calculator and billing reports and by analyzing billing data.<br />
Observe whether your services are meeting their SLOs using Cloud Monitoring and Dashboards.<br />
Use Uptime Checks to determine service availability.<br />
Respond to service outages using Cloud Monitoring Alerts.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/architecting-with-google-cloud-design-and-process/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cisco Extends Ansible Support on SAN Platforms to Advance DevOps Automation</title>
		<link>https://www.bestdevops.com/cisco-extends-ansible-support-to-advance-devops/</link>
					<comments>https://www.bestdevops.com/cisco-extends-ansible-support-to-advance-devops/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Wed, 11 Sep 2019 06:11:11 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Tools]]></category>
		<category><![CDATA[advance]]></category>
		<category><![CDATA[Ansible]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=7618</guid>

					<description><![CDATA[Cisco has added Ansible automation support to its MDS 9700 SAN platform, enabling IT operations teams to automate storage configuration tasks and close the gap between developer expectations and on-premises infrastructure delivery.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a Cisco announcement originally reported by DevOps.com in September 2019.</em></p>



<h2 class="wp-block-heading">Cisco Brings Ansible Automation to SAN Infrastructure</h2>



<p class="wp-block-paragraph">Cisco Systems announced expanded support for the open-source Ansible automation framework on its storage area network (SAN) platform, specifically targeting the <strong>Cisco MDS 9700</strong> series. The move is part of a broader initiative to bring DevOps-style automation practices to enterprise IT infrastructure—an area that has historically lagged behind the automation maturity of application development pipelines.</p>



<p class="wp-block-paragraph">With the updated MDS 9700 platform modules, IT operations teams can automate common SAN configuration tasks including:</p>



<ul class="wp-block-list">
<li>VSAN (Virtual SAN) configuration</li>
<li>Device-alias configuration</li>
<li>Zoning configuration</li>
</ul>



<p class="wp-block-paragraph">These are tasks that have traditionally required manual CLI work or vendor-specific tooling, making them slow, error-prone, and difficult to integrate into modern CI/CD workflows.</p>



<h2 class="wp-block-heading">Why Ansible? A Declarative Approach for Operations Teams</h2>



<p class="wp-block-paragraph">According to Adarsh Viswanathan, Cisco&#8217;s product manager for data center storage at the time, the choice of Ansible was deliberate. Cisco had previously invested in open APIs, OpenStack integration, and Python-based scripting—all of which required meaningful programming knowledge from IT operations staff.</p>



<p class="wp-block-paragraph">Ansible raises the abstraction level. Its declarative, YAML-based playbook model means that operations engineers can define <em>what</em> a storage configuration should look like without needing to write imperative code to achieve it. This lowers the barrier to automation adoption significantly, especially in enterprise IT teams that are not primarily composed of software developers.</p>



<p class="wp-block-paragraph">Key characteristics of Ansible that make it well-suited for infrastructure automation in this context include:</p>



<ul class="wp-block-list">
<li><strong>Agentless architecture:</strong> No software needs to be installed on managed devices, which matters for network and storage appliances.</li>
<li><strong>Idempotent playbooks:</strong> Running the same playbook multiple times produces the same result, reducing the risk of configuration drift.</li>
<li><strong>Large ecosystem:</strong> Ansible Galaxy and vendor-maintained collections (including Cisco&#8217;s own) provide ready-made modules for network and storage tasks.</li>
<li><strong>Low programming prerequisite:</strong> YAML-based playbooks are readable and writable by operations engineers without deep development skills.</li>
</ul>



<h2 class="wp-block-heading">Additional Platform Updates: NVMe, All-Flash, and SAN Analytics</h2>



<p class="wp-block-paragraph">Alongside the Ansible announcement, Cisco outlined several hardware and software updates for the MDS 9700 platform:</p>



<ul class="wp-block-list">
<li><strong>64G line card support:</strong> Higher-bandwidth line cards were planned to be supported when they became available.</li>
<li><strong>NVMe and All-Flash array support:</strong> Recognizing the shift toward low-latency NVMe-based storage, Cisco added protocol-level support for these environments.</li>
<li><strong>SAN Analytics extension:</strong> Cisco extended its SAN Analytics software to support the <strong>NVMe/Fibre Channel</strong> protocol, complementing existing <strong>SCSI/Fibre Channel</strong> support. This enables telemetry and performance monitoring across both legacy and modern storage protocols from a single platform.</li>
</ul>



<h2 class="wp-block-heading">The DevOps Pressure on IT Operations</h2>



<p class="wp-block-paragraph">The underlying driver for this type of announcement is a well-documented tension in enterprise IT: development teams accustomed to the on-demand, self-service model of public cloud providers increasingly expect the same experience from on-premises infrastructure. When they don&#8217;t get it, they route around IT operations—spinning up cloud resources directly and creating shadow IT sprawl.</p>



<p class="wp-block-paragraph">At the time of this announcement, a significant majority of enterprise workloads still ran in on-premises data centers despite more than a decade of cloud adoption. IT operations teams managing those environments needed tools that let them respond to developer requests at cloud-like speed—provisioning and reconfiguring storage dynamically rather than through slow manual change-control processes.</p>



<p class="wp-block-paragraph">Frameworks like Ansible directly address this gap by enabling <strong>infrastructure as code (IaC)</strong> practices for storage and networking, not just compute and application layers.</p>



<h2 class="wp-block-heading">Cloud-Native Workloads and the SAN Challenge</h2>



<p class="wp-block-paragraph">Cloud-native applications built on microservices architectures add a further dimension to the problem. As the number of discrete application services sharing a common pool of SAN-attached infrastructure grows, the frequency and granularity of required storage configuration changes increases correspondingly. Manual processes simply cannot keep pace.</p>



<p class="wp-block-paragraph">Ansible-based automation for platforms like the Cisco MDS 9700 means that zoning changes, VSAN provisioning, and device alias updates can be triggered programmatically—integrated into deployment pipelines or executed via self-service portals—rather than queued as manual tickets to a storage administrator.</p>



<h2 class="wp-block-heading">Practical Takeaways for DevOps and Storage Engineers</h2>



<p class="wp-block-paragraph">If you manage Cisco MDS SAN environments and are evaluating automation strategies, the following points are worth considering:</p>



<ol class="wp-block-list">
<li><strong>Explore Cisco&#8217;s Ansible collections:</strong> Cisco publishes and maintains Ansible collections for its networking and storage platforms on Ansible Galaxy. These provide purpose-built modules for MDS management tasks.</li>
<li><strong>Start with idempotent playbooks for existing configurations:</strong> Before automating changes, use Ansible to codify your current desired-state configurations. This creates an auditable baseline and enables drift detection.</li>
<li><strong>Integrate with your CI/CD pipeline:</strong> Storage configuration changes triggered by application deployments can be orchestrated through the same pipeline tooling (Jenkins, GitLab CI, GitHub Actions) used for application code.</li>
<li><strong>Evaluate SAN Analytics alongside automation:</strong> Automated provisioning without observability creates blind spots. Cisco&#8217;s SAN Analytics capabilities, especially with NVMe/FC support, complement automation by surfacing performance anomalies that may result from configuration changes.</li>
<li><strong>Plan for NVMe adoption:</strong> If your organization is moving toward All-Flash or NVMe-based storage, verify that your SAN platform&#8217;s Ansible modules support NVMe/FC operations, not just legacy SCSI/FC.</li>
</ol>



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



<p class="wp-block-paragraph">Cisco&#8217;s expansion of Ansible support on the MDS 9700 SAN platform is a concrete step toward making enterprise storage infrastructure manageable through the same automation frameworks used across the rest of the DevOps toolchain. By adopting Ansible&#8217;s declarative model, IT operations teams gain a practical path to automating SAN configuration at scale—without requiring deep programming expertise—while simultaneously supporting the modern storage protocols (NVMe/FC) that high-performance, cloud-native workloads demand.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/cisco-extends-ansible-support-to-advance-devops/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Kubernetes Releases etcd v3.4: Better Backend Storage, Improved Raft Voting, and the New Learner Non-Voting Member</title>
		<link>https://www.bestdevops.com/box-vs-dropbox-which-cloud-computing-stock-is-the-better-investment/</link>
					<comments>https://www.bestdevops.com/box-vs-dropbox-which-cloud-computing-stock-is-the-better-investment/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 03 Sep 2019 06:41:11 +0000</pubDate>
				<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[member]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[voting]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=7438</guid>

					<description><![CDATA[etcd v3.4 brings significant stability and performance improvements to Kubernetes clusters, including fully concurrent backend read transactions, a pre-vote mechanism for safer leader elections, the new Learner non-voting member role, and a simplified client balancer failover logic.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The etcd maintainers released etcd v3.4, a milestone focused on stability, performance, and ease of operation for Kubernetes clusters. Key highlights include fully concurrent backend read transactions, a pre-vote phase for Raft leader elections, a new <em>Learner</em> non-voting member type, and a redesigned client balancer. This article walks through each improvement in detail.</p>



<h2 class="wp-block-heading">What Is etcd and Why Does It Matter for Kubernetes?</h2>



<p class="wp-block-paragraph">etcd is the distributed key-value store that Kubernetes uses as its primary backing store for all cluster state data — from node registrations and pod specs to service endpoints and configuration. Its reliability and performance directly affect the health of every Kubernetes cluster. etcd implements the <strong>Raft consensus algorithm</strong> to replicate data reliably across a cluster of nodes, tolerating failures as long as a quorum of members remains available.</p>



<h2 class="wp-block-heading">Key Features and Improvements in etcd v3.4</h2>



<h3 class="wp-block-heading">1. Better Backend Storage: Fully Concurrent Read Transactions</h3>



<p class="wp-block-paragraph">etcd v3.4 addresses a significant performance bottleneck that affected large-scale Kubernetes deployments: blocking between read and write transactions in the storage backend.</p>



<p class="wp-block-paragraph">Previously, the backend commit operation — which flushes pending writes — would block all incoming read transactions, even when there were no pending writes to flush. This caused read requests to queue up unnecessarily, sometimes surfacing as log warnings such as:</p>


<pre class="wp-block-code"><span><code class="hljs">read-only range request … took too long to execute</code></span></pre>


<p class="wp-block-paragraph">In v3.4, the commit operation no longer blocks reads, improving the performance of long-running read transactions significantly.</p>



<p class="wp-block-paragraph">The team went further and made backend read transactions <strong>fully concurrent</strong>. Prior to this change, ongoing long-running read transactions would block both writes and subsequent reads. According to the etcd release notes, this change resulted in:</p>



<ul class="wp-block-list">
<li><strong>~70% increase in write throughput</strong> when long-running reads are in progress.</li>
<li><strong>~90% reduction in P99 write latency</strong> under the same conditions.</li>
</ul>



<p class="wp-block-paragraph">The team validated these gains by running a Kubernetes 5,000-node scalability test on GCE and observed consistent improvements across the board.</p>



<h3 class="wp-block-heading">2. Improved Raft Voting Process: Pre-Vote</h3>



<p class="wp-block-paragraph">etcd uses the Raft consensus protocol for data replication. In a Raft cluster:</p>



<ul class="wp-block-list">
<li>A single <strong>leader</strong> is elected by the cluster members.</li>
<li>The leader replicates data to <strong>followers</strong> and sends periodic heartbeats to maintain authority.</li>
<li>Followers forward client proposals to the leader.</li>
<li>An entry is committed once a <strong>quorum</strong> of members acknowledges it.</li>
</ul>



<p class="wp-block-paragraph">In the standard Raft implementation, a leader immediately steps down to follower status upon receiving any message carrying a higher <em>term</em> number — without performing any cluster-wide health checks first. This behavior can be exploited accidentally by a flaky or rejoining node:</p>



<ol class="wp-block-list">
<li>A node drops off and reconnects intermittently, accumulating a higher term.</li>
<li>When it rejoins, it ignores messages with lower terms and broadcasts its higher term.</li>
<li>The current stable leader receives this message, steps down, and triggers an unnecessary re-election — disrupting cluster availability.</li>
</ol>



<p class="wp-block-paragraph">Network partitions amplify the problem: a partitioned node that regains connectivity can immediately force a leader re-election, even though the existing leader is perfectly healthy.</p>



<p class="wp-block-paragraph"><strong>The fix: Pre-Vote.</strong> etcd v3.4 introduces a new <code>pre-candidate</code> node state. Before incrementing its term and launching a real election, a pre-candidate must first solicit informal votes from a majority of peers to confirm it is sufficiently up-to-date. Only if it wins this pre-vote phase does it proceed to increment its term and start a formal election. This extra handshake means:</p>



<ul class="wp-block-list">
<li>Disruptive nodes cannot force re-elections unless they genuinely have the support of a quorum.</li>
<li>A healthy leader that maintains quorum connectivity stays in power, improving cluster stability.</li>
</ul>



<h3 class="wp-block-heading">3. New Raft Non-Voting Member: The &#8220;Learner&#8221;</h3>



<p class="wp-block-paragraph">Adding or removing members from a running etcd cluster (membership reconfiguration) is one of the riskiest operational tasks. Even when a reconfiguration does not change quorum size, it can expose latent issues that destabilise the cluster. A new member that joins without being caught up on the leader&#8217;s log is especially dangerous — it could inadvertently reduce the effective quorum before it has replicated enough state to participate meaningfully.</p>



<p class="wp-block-paragraph">etcd v3.4 introduces the <strong>Learner</strong> role to address this. A Learner:</p>



<ul class="wp-block-list">
<li>Joins the cluster as a <strong>non-voting member</strong>.</li>
<li>Receives all log updates from the leader, catching up to current state.</li>
<li><strong>Does not count toward quorum</strong>, so it cannot affect leader evaluation of peer activeness.</li>
<li>Serves only as a standby node until an operator explicitly promotes it to a full voting member.</li>
</ul>



<p class="wp-block-paragraph">By decoupling log replication from quorum participation, the Learner role makes membership changes far safer and reduces the window of increased cluster vulnerability during scaling operations.</p>



<h3 class="wp-block-heading">4. Simplified Client Balancer Failover Logic</h3>



<p class="wp-block-paragraph">etcd clusters are designed to tolerate node and network failures transparently, presenting clients with a single logical cluster view across multiple server endpoints. However, cluster-side fault tolerance does not automatically guarantee <em>client-side</em> liveness — if a client is connected to a failing endpoint, it needs its own mechanism to detect the failure and reconnect.</p>



<p class="wp-block-paragraph">Historically, the etcd client balancer was tightly coupled to an older gRPC interface. Every gRPC dependency upgrade risked breaking client failover behaviour, and fixing those regressions consumed a disproportionate share of engineering effort. The resulting code was complex and made fragile assumptions about server connectivity.</p>



<p class="wp-block-paragraph">In v3.4, the balancer failover logic was simplified significantly. Rather than maintaining a complex list of unhealthy endpoints, the new logic adopts a straightforward approach: when the client is disconnected from its current endpoint, it immediately tries the next available endpoint. This change makes the client easier to reason about, easier to test, and more resilient across gRPC version upgrades.</p>



<h2 class="wp-block-heading">Summary of etcd v3.4 Improvements</h2>



<figure class="wp-block-table"><table><thead><tr><th>Area</th><th>What Changed</th><th>Benefit</th></tr></thead><tbody><tr><td>Backend Storage</td><td>Commit no longer blocks reads; reads fully concurrent</td><td>Higher write throughput, lower P99 write latency under load</td></tr><tr><td>Raft Voting</td><td>Pre-Vote phase before term increment</td><td>Fewer disruptive re-elections; more stable leadership</td></tr><tr><td>Membership</td><td>Learner non-voting member role</td><td>Safer cluster scaling and membership reconfiguration</td></tr><tr><td>Client Balancer</td><td>Simplified failover; no unhealthy endpoint list</td><td>More predictable client behaviour across gRPC upgrades</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">What This Means for Kubernetes Operators</h2>



<p class="wp-block-paragraph">For teams running large Kubernetes clusters, etcd v3.4 is a meaningful upgrade:</p>



<ul class="wp-block-list">
<li><strong>Large clusters with heavy read traffic</strong> will see direct latency and throughput benefits from the concurrent read transaction work.</li>
<li><strong>Clusters that experience network instability</strong> will benefit from the pre-vote mechanism, which prevents flapping nodes from forcing unnecessary leader elections.</li>
<li><strong>Operators who regularly scale etcd clusters</strong> should use the Learner role when adding new members to reduce risk during the catch-up phase.</li>
<li><strong>Client application developers</strong> can expect more predictable reconnection behaviour from the etcd v3.4 client library.</li>
</ul>



<p class="wp-block-paragraph">As always, test etcd upgrades in a non-production environment first, review the official etcd changelog for any breaking API changes, and consult your Kubernetes distribution&#8217;s compatibility matrix before upgrading etcd on production clusters.</p>



<p class="wp-block-paragraph"><em>Source: Originally reported via Packt Publishing&#8217;s technology news coverage.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/box-vs-dropbox-which-cloud-computing-stock-is-the-better-investment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AWS Expands Container Services: CloudWatch Container Insights, Fluent Bit, and the Road to Managed Kubernetes</title>
		<link>https://www.bestdevops.com/aws-adds-to-container-services-lineup/</link>
					<comments>https://www.bestdevops.com/aws-adds-to-container-services-lineup/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 13 Jul 2019 06:13:35 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=6161</guid>

					<description><![CDATA[AWS announced CloudWatch Container Insights in preview and the general availability of AWS Fluent Bit at AWS Summit New York, continuing its push to become the default platform for enterprise container deployments.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>Original reporting source: <a href="https://containerjournal.com" rel="noopener">containerjournal.com</a>. Original announcement context: AWS Summit New York, July 2019.</em></p>



<h2 class="wp-block-heading">AWS Doubles Down on Containers at Summit New York</h2>



<p class="wp-block-paragraph">At its AWS Summit event in New York, Amazon Web Services made two significant container-related announcements in quick succession: the general availability of <strong>AWS Fluent Bit</strong> and the preview launch of <strong>Amazon CloudWatch Container Insights</strong>. Together, these releases signal AWS&#8217;s sustained effort to reduce the operational complexity of running containers at scale on its platform.</p>



<h2 class="wp-block-heading">AWS Fluent Bit: Centralised Container Log Routing</h2>



<p class="wp-block-paragraph">AWS Fluent Bit reached general availability alongside the Summit announcements. Fluent Bit is a lightweight, open-source log processor and forwarder that AWS integrated tightly into its ecosystem. In this AWS-managed form, it enables container logs to be routed to two primary destinations:</p>



<ul class="wp-block-list">
<li><strong>Amazon CloudWatch Logs</strong> — for centralised monitoring, search, and alerting.</li>
<li><strong>Amazon Kinesis Data Firehose</strong> — for streaming log data onward to long-term or analytical storage, including Amazon S3, Amazon OpenSearch Service (formerly Amazon Elasticsearch Service), or Amazon Redshift.</li>
</ul>



<p class="wp-block-paragraph">For teams already running containers on Amazon ECS, EKS, or AWS Fargate, Fluent Bit provides a low-overhead, AWS-native alternative to running a heavier log aggregation sidecar or daemon set.</p>



<h2 class="wp-block-heading">Amazon CloudWatch Container Insights (Preview)</h2>



<p class="wp-block-paragraph">CloudWatch Container Insights was announced in preview at the same event. It is designed to give operations and development teams a single observability surface for containerised applications and microservices running across AWS container services.</p>



<h3 class="wp-block-heading">Key Capabilities</h3>



<ul class="wp-block-list">
<li><strong>Automatic discovery</strong> — Container Insights automatically discovers container environments without manual configuration of each cluster or service.</li>
<li><strong>Operational dashboards</strong> — Pre-built dashboards surface aggregated operational data, reducing the time needed to get initial visibility.</li>
<li><strong>Granular performance metrics</strong> — CPU utilisation, memory usage, disk I/O, and network metrics are collected at the container, pod, task, and service level, enabling precise resource analysis.</li>
<li><strong>Troubleshooting tools</strong> — Integrated diagnostic tooling helps engineers identify and isolate issues within containerised workloads and microservices.</li>
</ul>



<p class="wp-block-paragraph">Container Insights works across Amazon ECS, Amazon EKS, and AWS Fargate, positioning it as a cross-service observability layer rather than a tool tied to any single container orchestrator.</p>



<h2 class="wp-block-heading">Werner Vogels on Containers and the Microservices Shift</h2>



<p class="wp-block-paragraph">AWS CTO Werner Vogels used his keynote address to frame the strategic importance of containers. His core argument: containers are essential to cloud-native development because they provide an elastic environment that makes scaling applications up or down straightforward. Equally important is that containers enable teams to decompose large monolithic applications into independently deployable microservices, each with its own build and deployment pipeline.</p>



<p class="wp-block-paragraph">Vogels cited McDonald&#8217;s as a real-world example of container workloads at scale, noting the fast-food chain uses Amazon Elastic Container Service (ECS) to power a home-delivery application capable of handling more than 20,000 orders per second. He attributed part of that scalability to ECS&#8217;s deep integration with the broader AWS service portfolio.</p>



<h2 class="wp-block-heading">Acknowledging the Kubernetes Management Problem</h2>



<p class="wp-block-paragraph">Notably, Vogels did not shy away from criticising the status quo. He described managing containers and Kubernetes as genuinely painful, identifying two distinct friction points:</p>



<ul class="wp-block-list">
<li><strong>Developer friction</strong> — Building and deploying containers still requires working with low-level tooling that slows down development cycles.</li>
<li><strong>Operations friction</strong> — Kubernetes clusters are complex to provision, upgrade, and manage dynamically, placing a heavy burden on platform and infrastructure teams.</li>
</ul>



<p class="wp-block-paragraph">Vogels framed AWS&#8217;s container roadmap as an effort to abstract away this complexity so that development teams can focus on application logic rather than cluster operations — a positioning consistent with AWS&#8217;s broader managed-services strategy and the trajectory of Amazon EKS.</p>



<h2 class="wp-block-heading">Containers as the Foundation for Serverless</h2>



<p class="wp-block-paragraph">AWS also highlighted the connection between containers and serverless computing. Internally, AWS uses containers extensively to power its serverless services. From a developer&#8217;s perspective, this means on-demand invocation of services — such as <strong>Amazon EventBridge</strong> for event-driven data routing between applications — without the need to manage the underlying container infrastructure. This model allows teams to benefit from container-based isolation and packaging without carrying the operational overhead of managing containers directly.</p>



<h2 class="wp-block-heading">The Vendor Lock-In Trade-Off</h2>



<p class="wp-block-paragraph">The announcements also highlight a well-understood trade-off in cloud-native architecture. As organisations adopt more AWS-native services — using CloudWatch for observability, Kinesis for log streaming, ECS or EKS for orchestration — they gain tighter integration and reduced operational overhead. However, they also accumulate dependencies on proprietary AWS APIs and service hooks that make workload portability progressively harder.</p>



<p class="wp-block-paragraph">For organisations with a genuine multi-cloud strategy, this creates a dilemma: AWS&#8217;s integrated toolchain is operationally compelling, but extending a consistent DevOps workflow across AWS, Azure, or Google Cloud becomes significantly more complex when each platform&#8217;s native services are deeply embedded into the application stack. Teams should evaluate container observability and logging tools — including open-source alternatives such as Prometheus, Grafana, and Fluent Bit running independently — against the operational convenience of the AWS-managed equivalents.</p>



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



<figure class="wp-block-table"><table><thead><tr><th>Service</th><th>Status at Announcement</th><th>Primary Use Case</th></tr></thead><tbody><tr><td>AWS Fluent Bit</td><td>Generally Available</td><td>Container log routing to CloudWatch, S3, Elasticsearch, Redshift</td></tr><tr><td>CloudWatch Container Insights</td><td>Preview</td><td>Container performance monitoring and troubleshooting across ECS, EKS, Fargate</td></tr><tr><td>Amazon EventBridge</td><td>Generally Available</td><td>Event-driven data routing between serverless and container workloads</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">AWS&#8217;s July 2019 container announcements reflect a clear product strategy: lower the observability and logging burden for container operators while deepening the integration of containers into the broader AWS platform. Teams evaluating these services should weigh the operational benefits against the long-term implications of increased platform dependency.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/aws-adds-to-container-services-lineup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>You Control How Continuous Your CI/CD Pipeline Actually Is</title>
		<link>https://www.bestdevops.com/control-your-continuous-integration-and-deployment/</link>
					<comments>https://www.bestdevops.com/control-your-continuous-integration-and-deployment/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 16 Feb 2017 06:01:39 +0000</pubDate>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[Continuous Deployment]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[Deploy]]></category>
		<category><![CDATA[DevOps environment]]></category>
		<category><![CDATA[Manage]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=681</guid>

					<description><![CDATA[Continuous integration and continuous deployment are not all-or-nothing mandates. Learn how to calibrate your CI/CD cadence to match your organisation's risk tolerance, team maturity, and business requirements.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on an original post attributed to 126kr.com, discussing how organisations can tune the frequency and depth of their CI/CD pipelines to suit their own risk profiles.</em></p>



<h2 class="wp-block-heading">The Most Common Misconception About DevOps</h2>



<p class="wp-block-paragraph">When organisations first explore moving to a DevOps model, a near-universal fear surfaces: &#8220;If a developer checks in a single line of code, is it going straight to production?&#8221; That fear is understandable, but it rests on a false premise. <strong>DevOps does not mandate that every commit triggers a live deployment.</strong></p>



<p class="wp-block-paragraph">The terms <em>continuous integration</em> (CI) and <em>continuous deployment</em> (CD) are often treated as binary switches — either you have them or you don&#8217;t — but in practice they are dials. Your team decides how far to turn each one based on risk appetite, tooling maturity, and the pace of change in your applications.</p>



<h2 class="wp-block-heading">Defining &#8220;Continuous&#8221;: It Is Not the Same for Every Team</h2>



<p class="wp-block-paragraph">&#8220;Continuous deployment&#8221; means moving completed developer changes into a production environment where end users can work with them. The word <em>deploy</em> has a fixed meaning; the word <em>continuous</em> does not. Your organisation owns the definition of continuous that fits your context.</p>



<p class="wp-block-paragraph">Automated deployment pipelines consume real resources — build agents, test infrastructure, environment capacity, and engineering attention. As a purely practical matter, teams have to decide how often it makes sense to marshal those resources. Common deployment cadences include:</p>



<ul class="wp-block-list">
<li><strong>On every commit</strong> — maximum feedback speed, lowest increment size per release</li>
<li><strong>Nightly</strong> — balances feedback with infrastructure cost</li>
<li><strong>Weekly</strong> — common in organisations still building automation confidence</li>
<li><strong>Monthly</strong> — acceptable for applications with a very low rate of change</li>
</ul>



<h3 class="wp-block-heading">The Increment of Functionality Problem</h3>



<p class="wp-block-paragraph">The longer the interval between deployments, the more changes accumulate in any single release. This accumulated set of changes — sometimes called the <em>increment of functionality</em> — is directly correlated with deployment risk. A release containing three small changes is far easier to validate, roll back, and diagnose than one containing three months of accumulated work. This is one of the strongest structural arguments for shorter deployment cycles, even when that feels counterintuitive.</p>



<h2 class="wp-block-heading">&#8220;Potentially Deployable&#8221; Does Not Mean &#8220;Must Deploy&#8221;</h2>



<p class="wp-block-paragraph">A nuance often lost in CI/CD discussions: the goal of a continuous deployment pipeline is to produce a <em>potentially deployable</em> artifact — not necessarily to deploy it immediately. Your pipeline can build, test, and validate a package against a production-like environment on every cycle without ever pushing it live until a human or a release gate approves it.</p>



<p class="wp-block-paragraph">This approach — sometimes distinguished as <em>continuous delivery</em> versus <em>continuous deployment</em> — gives organisations the safety net of frequent validation without the perceived disruption of frequent live releases. The pipeline proves the code <em>could</em> go to production; a separate decision determines when it <em>does</em>.</p>



<h3 class="wp-block-heading">The Hidden Cost of Infrequent Deployments</h3>



<p class="wp-block-paragraph">Choosing a longer deployment interval to reduce disruption trades one risk for another. The most significant hidden costs are:</p>



<ul class="wp-block-list">
<li><strong>Delayed user feedback.</strong> Real production feedback only arrives after an actual deployment. The longer the gap, the longer your team is building without knowing whether the previous release met user needs.</li>
<li><strong>Expensive rework.</strong> When a developer receives feedback on a feature shipped weeks or months ago, context has been lost. Fixing it takes longer and risks destabilising newer work built on top of the original change.</li>
<li><strong>Compounding integration risk.</strong> As features pile up between releases, isolating the cause of a production issue becomes progressively harder.</li>
</ul>



<p class="wp-block-paragraph">A common pattern in organisations adopting DevOps is to start with monthly or weekly deployments to build confidence in their automation, and then gradually shift toward shorter cycles as the team realises the risks of large increments outweigh the perceived safety of infrequent releases.</p>



<h2 class="wp-block-heading">How Integrated Should Your Integration Be?</h2>



<p class="wp-block-paragraph">Continuous integration means merging developers&#8217; changes into a shared mainline frequently, rather than leaving branches in isolation for days or weeks. The fundamental goal is that all developers are working from the same codebase at all times, preventing the &#8220;integration hell&#8221; that occurs when long-lived branches must eventually converge.</p>



<p class="wp-block-paragraph">Historically, the minimum bar for CI was simply that the application could still compile after a merge (the &#8220;don&#8217;t break the build&#8221; rule popularised by the Windows NT team, among others). Modern CI pipelines go much further, typically including:</p>



<ul class="wp-block-list">
<li>Automated unit tests run by the developer before or immediately after commit</li>
<li>Static code analysis and linting</li>
<li>Integration tests that exercise the merged application as a whole</li>
<li>Contract tests between services in a microservices architecture</li>
<li>Performance and stress tests (often deferred to a separate stage due to resource cost)</li>
</ul>



<p class="wp-block-paragraph">Developers can — and should — write automated unit tests that verify their own code in isolation. But bugs that only surface when components interact can only be caught during integration testing, after code is merged. This distinction matters when deciding where to place which tests in your pipeline.</p>



<h2 class="wp-block-heading">Calibrating Your Integration Testing Strategy</h2>



<p class="wp-block-paragraph">The ideal is to run all integration tests against a full duplicate of the production environment on every commit. In practice, cost and environment complexity force most teams to make trade-offs. Two variables determine where tests end up in your pipeline:</p>



<ul class="wp-block-list">
<li><strong>How easy it is to keep the integration environment in sync with production.</strong> Environment drift is a hidden tax on test reliability. If your integration environment frequently diverges from production, test results become less meaningful.</li>
<li><strong>How resource-intensive the tests are.</strong> Functional correctness tests are usually fast and cheap. Stress tests, user-acceptance tests, and full end-to-end tests can be slow and expensive to run on every commit.</li>
</ul>



<p class="wp-block-paragraph">A practical approach many teams use is a tiered test strategy:</p>



<ol class="wp-block-list">
<li><strong>On every commit:</strong> unit tests and fast integration smoke tests</li>
<li><strong>On every build (nightly or per-branch merge):</strong> full functional integration tests</li>
<li><strong>On release candidates:</strong> performance, stress, and user-acceptance tests</li>
</ol>



<p class="wp-block-paragraph">The important principle is that deferring a test increases the cost of fixing any defect it catches, because the developer must re-establish context from work done further in the past. As your pipeline becomes more efficient, the economics shift: it becomes cheaper to run more tests earlier, and teams naturally pull tests further left in the process.</p>



<h2 class="wp-block-heading">The Natural Evolution of a CI/CD Programme</h2>



<p class="wp-block-paragraph">Organisations rarely reach an optimal CI/CD cadence on day one. A realistic progression typically looks like this:</p>



<ol class="wp-block-list">
<li><strong>Establish the pipeline.</strong> Get automated builds and basic tests running. Deploy infrequently (weekly or monthly) to build confidence in automation.</li>
<li><strong>Increase deployment frequency.</strong> As confidence grows, the team notices that large increments of functionality are themselves a source of risk, and begins deploying more often.</li>
<li><strong>Move tests left.</strong> As the pipeline matures, expensive tests that were deferred to the deployment stage are moved into the integration stage, or even into per-commit validation.</li>
<li><strong>Reach a sustainable balance.</strong> The team finds a cadence that minimises overall risk — covering both deployment disruption and the risk of delayed feedback — and continues to adjust as the application and organisation evolve.</li>
</ol>



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



<ul class="wp-block-list">
<li>CI and CD are spectrums, not binary states. Your team decides where on each spectrum to operate.</li>
<li>Longer deployment intervals reduce disruption frequency but increase per-release risk and delay user feedback.</li>
<li>&#8220;Potentially deployable&#8221; is a valid outcome of a CD pipeline — actual deployment can be gated by humans or automated release policies.</li>
<li>The right integration testing strategy is determined by environment parity costs and test resource costs, not by ideology.</li>
<li>As pipeline maturity increases, the economics of shifting tests earlier improve. Treat your CI/CD posture as something that evolves continuously alongside your team&#8217;s capabilities.</li>
</ul>



<p class="wp-block-paragraph">DevOps does not impose a one-size-fits-all deployment rhythm on your organisation. It gives you the tooling and practices to make deployment safe enough to do more frequently — and then leaves the decision about <em>how</em> frequently firmly in your hands.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/control-your-continuous-integration-and-deployment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Automate Your App Development Process and Improve Code Quality</title>
		<link>https://www.bestdevops.com/how-to-automate-your-app-dev-process-and-improve-code-quality/</link>
					<comments>https://www.bestdevops.com/how-to-automate-your-app-dev-process-and-improve-code-quality/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 11 Feb 2017 06:34:18 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps Process]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=618</guid>

					<description><![CDATA[Manual configuration, deployment, and testing drain engineering time and introduce errors. Learn three concrete steps—CI, shared testing responsibility, and Infrastructure as Code—to automate your SDLC and ship better software faster.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">As engineering teams grow, the cost of manual processes compounds quickly. Time spent on manual server configuration, ad-hoc deployments, and hand-run test suites is rarely tracked on a sprint board—but it steadily erodes velocity and introduces hard-to-reproduce bugs. Introducing automation into your <strong>Software Development Lifecycle (SDLC)</strong> is the most reliable way to improve both code quality and deployment speed.</p>



<p class="wp-block-paragraph">The following three steps provide a practical framework for doing exactly that.</p>



<h2 class="wp-block-heading">Step 1: Implement a Continuous Integration Strategy</h2>



<p class="wp-block-paragraph"><strong>Continuous Integration (CI)</strong> is a development practice in which every code change is automatically pulled into a shared repository, built, and verified against a defined test suite. The core principle is simple: integrate small changes frequently so that errors are caught early—when they are cheap to fix—rather than at the end of a release cycle when they are expensive.</p>



<p class="wp-block-paragraph">A well-configured CI pipeline typically performs the following checks on every commit or pull request:</p>



<ul class="wp-block-list">
<li><strong>Static analysis and linting</strong> – catches syntax errors and enforces code style before tests even run.</li>
<li><strong>Unit tests</strong> – verifies that individual functions and components behave correctly in isolation.</li>
<li><strong>Integration tests</strong> – confirms that components interact correctly when assembled.</li>
<li><strong>Build verification</strong> – ensures the artifact can actually be compiled or packaged successfully.</li>
</ul>



<p class="wp-block-paragraph">Popular CI platforms include <strong>Jenkins</strong>, <strong>GitHub Actions</strong>, <strong>GitLab CI/CD</strong>, <strong>CircleCI</strong>, <strong>Travis CI</strong>, and <strong>TeamCity</strong>. Each has trade-offs around self-hosting, cloud hosting, plugin ecosystems, and pricing—evaluate them against your team size, language stack, and security requirements.</p>



<p class="wp-block-paragraph">A key operational detail: configure your CI system to <strong>notify the committing developer immediately</strong> when a build fails, including the specific test or step that broke. Fast feedback loops are what make CI valuable. A build that sits broken for hours defeats the purpose.</p>



<h2 class="wp-block-heading">Step 2: Make Code Testing a Shared Responsibility</h2>



<p class="wp-block-paragraph">A common anti-pattern in software teams is treating quality assurance as a gate that happens <em>after</em> development. This creates bottlenecks, encourages big-bang releases, and forces QA engineers to triage bugs that developers could have caught in minutes. A more effective model is <strong>shared testing responsibility</strong>—where developers, QA, and operations all contribute to quality at every stage of the SDLC.</p>



<p class="wp-block-paragraph">In practice, this means:</p>



<ul class="wp-block-list">
<li><strong>Developers write unit and integration tests</strong> alongside their feature code—not as an afterthought.</li>
<li><strong>Smoke tests run automatically</strong> after each successful build, verifying that core workflows are not broken before QA ever looks at the build.</li>
<li><strong>Load and concurrency tests</strong> are part of the automated pipeline, catching race conditions and performance regressions before they reach production.</li>
<li><strong>QA engineers focus on exploratory and black-box testing</strong>—the work that genuinely requires human judgment—rather than re-testing functionality that automation already covers.</li>
<li><strong>Communication is continuous</strong>: by the time a build reaches QA, the team already knows what changed, what edge cases exist, and what risk areas to probe.</li>
</ul>



<p class="wp-block-paragraph">Adopting this mentality reduces obvious functional defects reaching QA, shrinks the feedback cycle, and shortens time-to-market without cutting corners on quality.</p>



<h2 class="wp-block-heading">Step 3: Adopt Infrastructure as Code (IaC)</h2>



<p class="wp-block-paragraph"><strong>Infrastructure as Code (IaC)</strong> is the practice of defining and managing servers, networks, and other infrastructure through machine-readable configuration files rather than manual processes or one-off scripts. Because IaC configurations live in version control alongside application code, they are subject to the same review, testing, and CI/CD workflows as the rest of your codebase.</p>



<p class="wp-block-paragraph">The benefits are significant:</p>



<ul class="wp-block-list">
<li><strong>Repeatability</strong> – spin up identical environments for development, staging, and production with a single command.</li>
<li><strong>Auditability</strong> – every infrastructure change is a commit with an author, timestamp, and diff.</li>
<li><strong>Reduced configuration drift</strong> – automated provisioning replaces manual steps that are easy to forget or apply inconsistently.</li>
<li><strong>Faster incident recovery</strong> – a broken environment can be torn down and rebuilt from code in minutes rather than hours.</li>
<li><strong>Broader team ownership</strong> – any engineer can read, propose, and review infrastructure changes, not just dedicated sysadmins.</li>
</ul>



<p class="wp-block-paragraph">Common IaC toolchains fall into two categories:</p>



<ul class="wp-block-list">
<li><strong>Configuration management tools</strong> (manage software and state on existing servers): <a href="https://www.puppet.com/">Puppet</a>, <a href="https://www.chef.io/">Chef</a>, <a href="https://www.ansible.com/">Ansible</a>, SaltStack.</li>
<li><strong>Provisioning tools</strong> (create and destroy infrastructure resources): Terraform, AWS CloudFormation, Pulumi, Azure Bicep.</li>
</ul>



<p class="wp-block-paragraph">Many teams use both: a provisioning tool to create virtual machines or cloud resources, and a configuration management tool to install and configure software on those resources.</p>



<h2 class="wp-block-heading">Automation Is an Ongoing Practice, Not a One-Time Project</h2>



<p class="wp-block-paragraph">Implementing CI, shared testing, and IaC will meaningfully reduce manual toil, defect rates, and deployment risk. But automation is not a destination—it requires <strong>continuous monitoring and iteration</strong>. Pipelines grow stale. Test suites develop gaps as the codebase evolves. Infrastructure tooling improves. Set aside regular time to review your automation coverage, retire slow or flaky tests, and incorporate new tooling where it provides genuine value.</p>



<p class="wp-block-paragraph">Teams that treat automation as a living system—rather than a checkbox to tick—consistently ship faster and with higher confidence than those that do not.</p>



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



<ul class="wp-block-list">
<li>Implement CI to catch errors at commit time rather than release time.</li>
<li>Distribute testing responsibility across the whole engineering team, not just QA.</li>
<li>Treat infrastructure configuration as versioned, reviewable code.</li>
<li>Revisit and improve your automation pipeline continuously—it is never truly finished.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/how-to-automate-your-app-dev-process-and-improve-code-quality/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>A Word for &#8220;Average Developers&#8221;: Why Continuous Learning Is Non-Negotiable</title>
		<link>https://www.bestdevops.com/a-word-for-average-developers/</link>
					<comments>https://www.bestdevops.com/a-word-for-average-developers/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 10 Jan 2017 18:08:48 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[DevOps Best Practices]]></category>
		<category><![CDATA[DevOps News]]></category>
		<category><![CDATA[DevOps Updates]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Software developer]]></category>
		<category><![CDATA[Thought]]></category>
		<category><![CDATA[Time utilisation]]></category>
		<category><![CDATA[Workflow]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=292</guid>

					<description><![CDATA[Are performance optimization and deep technical learning really irrelevant to the average developer? Here's why investing in your craft—even two to four hours a week—matters more than you think.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a perspective piece originally published on DZone.com, responding to criticism that advanced or low-level programming topics are irrelevant to everyday developers.</em></p>



<h2 class="wp-block-heading">The Comment That Started the Debate</h2>



<p class="wp-block-paragraph">Not long ago, a reader left this comment on a &#8220;making code faster&#8221; series:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>…this &#8220;making code faster&#8221; series is pretty useless for the average developer working on the usual application.</p></blockquote>



<p class="wp-block-paragraph">It&#8217;s a sentiment you&#8217;ll hear often in developer communities—that topics like performance internals, database engine design, or systems programming are too niche to matter to someone building a typical enterprise application. The argument is understandable on the surface, but it doesn&#8217;t hold up under scrutiny.</p>



<h2 class="wp-block-heading">Who Is the &#8220;Average Developer,&#8221; Really?</h2>



<p class="wp-block-paragraph">The so-called average developer is often described as someone perpetually heads-down, coding another login page under a deadline, with no time to look up. This framing appears regularly in discussions about professional development expectations—including arguments that expecting developers to learn on their own time is somehow offensive or unrealistic.</p>



<p class="wp-block-paragraph">That view is worth taking seriously. Life is busy. Many developers are balancing demanding jobs, families, and other responsibilities. No one is suggesting that you neglect your family to chase the latest technology trend.</p>



<p class="wp-block-paragraph">But there is a real difference between <em>balance</em> and <em>stagnation</em>.</p>



<h2 class="wp-block-heading">Why Breadth of Knowledge Pays Off</h2>



<p class="wp-block-paragraph">If you limit your learning strictly to what you need for next week&#8217;s sprint—the hottest JavaScript library, the design pattern your team just adopted—you are optimizing for short-term delivery at the cost of long-term capability. Here&#8217;s why that matters:</p>



<ul class="wp-block-list">
<li><strong>Recognition of known patterns:</strong> When you encounter a tough problem, a broad knowledge base lets you say &#8220;I&#8217;ve seen this class of problem before&#8221; and reach for a better solution faster.</li>
<li><strong>Avoiding reinvented wheels:</strong> Understanding foundational concepts—memory allocation, concurrency, query planning, caching strategies—helps you avoid mistakes that have already been made and documented in the field.</li>
<li><strong>Genuine versatility:</strong> Technology stacks change. Developers who understand underlying principles adapt more easily than those who only know a specific framework&#8217;s API surface.</li>
<li><strong>Better judgment in design decisions:</strong> Performance characteristics, trade-offs in data modeling, or failure modes in distributed systems are relevant even in &#8220;average&#8221; applications once they reach any meaningful scale.</li>
</ul>



<h2 class="wp-block-heading">Cycling Through Versions Is Not the Same as Learning</h2>



<p class="wp-block-paragraph">There is a trap that many developers fall into: mistaking framework churn for genuine growth. Moving from one version of a web framework to the next—adopting each new release as it ships—can feel like continuous learning. It isn&#8217;t. If the underlying concepts are the same and you&#8217;re only tracking the API changes, you&#8217;re running on a treadmill.</p>



<p class="wp-block-paragraph">Genuine learning means expanding into adjacent or foundational areas: how the runtime manages memory, how the database executes your queries, how the network stack behaves under load, how operating systems schedule threads. These topics may not pay off immediately. They will pay off eventually—often at the exact moment you need them most.</p>



<h2 class="wp-block-heading">How Much Time Does It Actually Take?</h2>



<p class="wp-block-paragraph">The good news is that continuous improvement does not require heroic sacrifice. For most people, <strong>two to four hours per week</strong> is achievable without disrupting family life or work commitments. That translates to roughly 100–200 hours per year—enough time to work through a substantial book, complete a focused online course, or build a meaningful side project.</p>



<p class="wp-block-paragraph">Practical ways to find that time:</p>



<ul class="wp-block-list">
<li>Treat one or two evenings per week as deliberate learning time, not passive screen time.</li>
<li>Use commute time for technical podcasts, talks, or audiobooks where possible.</li>
<li>Replace low-value browsing (social media, news cycling) with focused reading or practice.</li>
<li>Pick topics that genuinely interest you—motivation sustains the habit better than obligation.</li>
</ul>



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



<p class="wp-block-paragraph">Valuing your career means investing in it consistently, not just when a new job forces you to. Advanced topics—performance engineering, systems design, compiler internals, distributed systems theory—are not the exclusive concern of people building database engines. They are the foundation that separates developers who can only execute someone else&#8217;s design from developers who can reason about problems from first principles.</p>



<p class="wp-block-paragraph">That investment is not always easy. It is, however, worth making.</p>



<p class="wp-block-paragraph"><em>Originally sourced from a discussion on DZone.com. The views reflect a perspective on developer professional growth and continuous learning.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/a-word-for-average-developers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
