<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Srinivasulu Paranduru</title>
    <description>The latest articles on Forem by Srinivasulu Paranduru (@srinivasuluparanduru).</description>
    <link>https://forem.com/srinivasuluparanduru</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F845299%2F39c6f5fc-7d4e-4c0a-9028-e1cd08e6ca34.jpeg</url>
      <title>Forem: Srinivasulu Paranduru</title>
      <link>https://forem.com/srinivasuluparanduru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/srinivasuluparanduru"/>
    <language>en</language>
    <item>
      <title>Introduction to OpenTofu</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Wed, 08 Apr 2026 08:30:24 +0000</pubDate>
      <link>https://forem.com/aws-builders/introduction-to-opentofu-2mj3</link>
      <guid>https://forem.com/aws-builders/introduction-to-opentofu-2mj3</guid>
      <description>&lt;p&gt;Explore the benefits of Infrastructure as Code (IaC) and dive into OpenTofu, an open source IaC tool forked from Terraform. Learn how OpenTofu works&lt;/p&gt;

&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Introduction to OpenTofu&lt;/li&gt;
&lt;li&gt;Key Features&lt;/li&gt;
&lt;li&gt;Use Cases&lt;/li&gt;
&lt;li&gt;Installation&lt;/li&gt;
&lt;li&gt;Tofu Commands&lt;/li&gt;
&lt;li&gt;Demo&lt;/li&gt;
&lt;li&gt;Free Course&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Introduction to OpenTofu
&lt;/h2&gt;

&lt;p&gt;OpenTofu is an open-source infrastructure-as-code (IaC) tool that allows developers and system administrators to define, provision, and manage cloud and on-premises infrastructure using declarative configuration files. It originated as a community-driven fork of Terraform after licensing changes to Terraform’s core, ensuring that the IaC ecosystem remains open and collaborative.&lt;/p&gt;

&lt;p&gt;With OpenTofu, you can describe your infrastructure in simple configuration files written in the HashiCorp Configuration Language (HCL) or JSON. These files specify the desired state of your infrastructure—such as servers, networks, databases, and other resources—and OpenTofu automatically figures out how to create, update, or delete resources to match that state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open Source Governance: Fully community-led under the Linux Foundation, ensuring transparency and long-term stability.&lt;/li&gt;
&lt;li&gt;Terraform Compatibility: Maintains compatibility with existing Terraform configurations and providers, making migration straightforward.&lt;/li&gt;
&lt;li&gt;Declarative Configuration: Users define what they want, and OpenTofu determines how to achieve it.&lt;/li&gt;
&lt;li&gt;State Management: Keeps track of infrastructure state to ensure consistent deployments and safe updates.&lt;/li&gt;
&lt;li&gt;Extensibility: Supports a wide range of providers for cloud platforms like AWS, Azure, and Google Cloud, as well as on-premises systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use Cases:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Automating cloud infrastructure provisioning&lt;/li&gt;
&lt;li&gt;Managing multi-cloud environments&lt;/li&gt;
&lt;li&gt;Version-controlling infrastructure configurations&lt;/li&gt;
&lt;li&gt;Enabling reproducible and consistent deployments&lt;/li&gt;
&lt;li&gt;OpenTofu empowers teams to manage infrastructure efficiently, collaboratively, and transparently—without vendor lock-in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more information, visit &lt;a href="//opentofu.org"&gt;opentofu&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation:
&lt;/h2&gt;

&lt;p&gt;Please find the link for software - &lt;a href="https://opentofu.org/docs/intro/install/" rel="noopener noreferrer"&gt;https://opentofu.org/docs/intro/install/&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenTofu is available on the winget repository and you can install it by running:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;winget install --exact --id=OpenTofu.Tofu&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp0rmrhkjrip69n303z3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp0rmrhkjrip69n303z3h.png" alt=" " width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;run the command tofu&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ee96yfjich2rpxiaaxk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ee96yfjich2rpxiaaxk.png" alt=" " width="800" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify installation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tofu -version&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwm3o45c7ogwuszjncvxj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwm3o45c7ogwuszjncvxj.png" alt=" " width="622" height="105"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Tofu Commands
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.tofu init&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initializes a working directory containing OpenTofu configuration files.&lt;/li&gt;
&lt;li&gt;Downloads necessary provider plugins and modules.&lt;/li&gt;
&lt;li&gt;Prepares the backend for storing state.&lt;/li&gt;
&lt;li&gt;Example: tofu init&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;2.tofu plan&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates an execution plan showing what actions OpenTofu will take to reach the desired state.&lt;/li&gt;
&lt;li&gt;Compares the current infrastructure with the configuration files.&lt;/li&gt;
&lt;li&gt;Does not make any changes — it’s a preview step.&lt;/li&gt;
&lt;li&gt;Example: tofu plan&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;3.tofu apply&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applies the changes required to reach the desired state of the configuration.&lt;/li&gt;
&lt;li&gt;Executes the plan generated by tofu plan.&lt;/li&gt;
&lt;li&gt;Prompts for confirmation before making changes (use -auto-approve to skip).&lt;/li&gt;
&lt;li&gt;Example: tofu apply -auto-approve&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;4.tofu destroy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Destroys all resources defined in the configuration.&lt;/li&gt;
&lt;li&gt;Useful for cleaning up infrastructure.&lt;/li&gt;
&lt;li&gt;Prompts for confirmation unless -auto-approve is used.&lt;/li&gt;
&lt;li&gt;Example: tofu destroy -auto-approve&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;5. tofu validate&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validates the configuration files for syntax and internal consistency.&lt;/li&gt;
&lt;li&gt;Does not check against actual infrastructure.&lt;/li&gt;
&lt;li&gt;Example: tofu validate&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;6.tofu fmt&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formats configuration files to a canonical style.&lt;/li&gt;
&lt;li&gt;Helps maintain consistent formatting across teams.&lt;/li&gt;
&lt;li&gt;Example: tofu fmt&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;7.tofu show&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Displays the current state or a saved plan file in a human-readable format.&lt;/li&gt;
&lt;li&gt;Example: tofu show&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;8.tofu output&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reads and displays output values from the state file.&lt;/li&gt;
&lt;li&gt;Useful for retrieving values like IP addresses or resource IDs.&lt;/li&gt;
&lt;li&gt;Example: tofu output&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;9.tofu state&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages the state file directly.&lt;/li&gt;
&lt;li&gt;Subcommands include list, show, mv, rm, and pull.&lt;/li&gt;
&lt;li&gt;Used for advanced state management.&lt;/li&gt;
&lt;li&gt;Example: tofu state list&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;10.tofu import&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imports existing infrastructure into OpenTofu’s state.&lt;/li&gt;
&lt;li&gt;Does not modify the resource, only records it in the state file.&lt;/li&gt;
&lt;li&gt;Example: tofu import aws_instance.example i-1234567890abcdef&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;11.tofu graph&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generates a visual representation of the dependency graph.&lt;/li&gt;
&lt;li&gt;Can be used with tools like Graphviz to visualize relationships.&lt;/li&gt;
&lt;li&gt;Example: tofu graph | dot -Tpng &amp;gt; graph.png&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;12.tofu workspace&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages multiple workspaces (environments) within the same configuration.&lt;/li&gt;
&lt;li&gt;Useful for separating dev, staging, and production environments.&lt;/li&gt;
&lt;li&gt;Example: tofu workspace new staging&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;13.tofu providers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Displays information about the providers required by the configuration.&lt;/li&gt;
&lt;li&gt;Example: tofu providers&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;14.tofu version&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Displays the current version of OpenTofu.&lt;/li&gt;
&lt;li&gt;Example: tofu version&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.Create a file provider.tf&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight terraform"&gt;&lt;code&gt;&lt;span class="k"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;required_providers&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hashicorp/aws"&lt;/span&gt;
      &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"6.39.0"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;# Configuration options&lt;/span&gt;
 &lt;span class="nx"&gt;access_key&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Replace_AWS_Access_Key"&lt;/span&gt;
 &lt;span class="nx"&gt;secret_key&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Replace_AWS_Secret_Key"&lt;/span&gt;
 &lt;span class="nx"&gt;region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Replace_AWS_Region"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2.Create a file ec2.tf&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight terraform"&gt;&lt;code&gt;&lt;span class="k"&gt;data&lt;/span&gt; &lt;span class="s2"&gt;"aws_ami"&lt;/span&gt; &lt;span class="s2"&gt;"ubuntu"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;most_recent&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="nx"&gt;filter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;name&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt;
    &lt;span class="nx"&gt;values&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;filter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;name&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"virtualization-type"&lt;/span&gt;
    &lt;span class="nx"&gt;values&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"hvm"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;owners&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"099720109477"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# Canonical&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"example"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;aws_ami&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ubuntu&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"t3.micro"&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"HelloWorld"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*&lt;em&gt;Run the commands *&lt;/em&gt;&lt;br&gt;
1.tofu init : For Initializing the AWS Provider&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp06qn38bbpb3g1m17nh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp06qn38bbpb3g1m17nh.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;.terraform folder will be create after running the command  tofu init&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fziu49lgwge143vy421c3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fziu49lgwge143vy421c3.png" alt=" " width="314" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.tofu plan : Creates an execution plan showing what actions OpenTofu will take to reach the desired state.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3w0q8sy5f5jsexkaz58z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3w0q8sy5f5jsexkaz58z.png" alt=" " width="800" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.tofu apply : Applies the changes required to reach the desired state of the configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hmvd7e3x04io2g6pmin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hmvd7e3x04io2g6pmin.png" alt=" " width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.tofu destroy: Destroy the resources created of any with reference to the configuration files after the user confirmation &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6yfo59jeep4bknkdpe8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6yfo59jeep4bknkdpe8y.png" alt=" " width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Free Course
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://training.linuxfoundation.org/express-learning/getting-started-with-opentofu-lfel1009/" rel="noopener noreferrer"&gt;https://training.linuxfoundation.org/express-learning/getting-started-with-opentofu-lfel1009/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr83jlzac92sdyetfoj5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr83jlzac92sdyetfoj5r.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to&lt;/a&gt; , &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>iac</category>
      <category>opentofu</category>
    </item>
    <item>
      <title>Datadog Agent Installation on AWS EC2 (Linux Server) and Sending Logs to Datadog Cloud</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 24 Mar 2026 12:41:28 +0000</pubDate>
      <link>https://forem.com/aws-builders/datadog-agent-installation-on-aws-ec2-linux-server-and-sending-logs-to-datadog-cloud-542f</link>
      <guid>https://forem.com/aws-builders/datadog-agent-installation-on-aws-ec2-linux-server-and-sending-logs-to-datadog-cloud-542f</guid>
      <description>&lt;p&gt;Datadog Agent Installation on AWS EC2 (Linux Server) and Sending Logs to Datadog Cloud&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1.Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An active Datadog account (&lt;a href="https://app.datadoghq.com" rel="noopener noreferrer"&gt;https://app.datadoghq.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A running AWS EC2 instance (Amazon Linux, Ubuntu, or other Linux distribution)&lt;/li&gt;
&lt;li&gt;Root or sudo access to the EC2 instance&lt;/li&gt;
&lt;li&gt;Your Datadog API key (found under Integrations → APIs in the Datadog dashboard)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;2.Connect to Your EC2 Instance&lt;/strong&gt;&lt;br&gt;
Use SSH to connect:&lt;/p&gt;

&lt;p&gt;ssh -i /path/to/your-key.pem ec2-user@&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;3.Install the Datadog Agent&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;For Amazon Linux or RHEL-based systems&lt;/strong&gt;&lt;br&gt;
DD_API_KEY= DD_SITE="datadoghq.com" bash -c "$(curl -L &lt;a href="https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" rel="noopener noreferrer"&gt;https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Ubuntu or Debian-based systems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DD_API_KEY= DD_SITE="datadoghq.com" bash -c "$(curl -L &lt;a href="https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" rel="noopener noreferrer"&gt;https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)&lt;/a&gt;"&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;4.Enable and Start the Agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;sudo systemctl enable datadog-agent&lt;br&gt;
sudo systemctl start datadog-agent&lt;/p&gt;

&lt;p&gt;Check the agent status:&lt;/p&gt;

&lt;p&gt;sudo datadog-agent status&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;5.Enable Log Collection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Edit the Datadog Agent configuration file:&lt;/p&gt;

&lt;p&gt;sudo nano /etc/datadog-agent/datadog.yaml&lt;/p&gt;

&lt;p&gt;Uncomment and set:&lt;/p&gt;

&lt;p&gt;logs_enabled: true&lt;/p&gt;

&lt;p&gt;Save and exit, then restart the agent:&lt;/p&gt;

&lt;p&gt;sudo systemctl restart datadog-agent&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;6.Configure Log Sources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To send specific logs (e.g., application logs), create a configuration file under:&lt;/p&gt;

&lt;p&gt;/etc/datadog-agent/conf.d/.d/conf.yaml&lt;/p&gt;

&lt;p&gt;Example for an Nginx log:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;logs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;file&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/var/log/nginx/access.log&lt;/span&gt;
    &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
    &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart the agent again:&lt;/p&gt;

&lt;p&gt;sudo systemctl restart datadog-agent&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;7.Verify Logs in Datadog&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Logs → Live Tail in the Datadog dashboard.&lt;/li&gt;
&lt;li&gt;You should see logs streaming from your EC2 instance.&lt;/li&gt;
&lt;li&gt;Use filters like service:nginx or host: to refine results.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;8.Optional: Tagging and Metadata&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can add tags to your EC2 instance for better organization:&lt;/p&gt;

&lt;p&gt;sudo sh -c 'echo "tags: environment:production,team:devops" &amp;gt;&amp;gt; /etc/datadog-agent/datadog.yaml'&lt;br&gt;
sudo systemctl restart datadog-agent&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;9.Troubleshooting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check agent logs:&lt;br&gt;
sudo tail -f /var/log/datadog/agent.log&lt;br&gt;
Ensure outbound traffic to Datadog endpoints is allowed (port 443).&lt;br&gt;
Verify your API key and region are correct.&lt;/p&gt;




&lt;p&gt;Final Result:&lt;br&gt;
Your AWS EC2 instance is now sending system metrics and logs to Datadog Cloud for monitoring and analysis.&lt;/p&gt;

</description>
      <category>datadogagent</category>
      <category>ec2</category>
      <category>linux</category>
      <category>logs</category>
    </item>
    <item>
      <title>Datadog Agent Installation on AWS EC2 (Windows Server) and Sending Logs to Datadog Cloud</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 24 Mar 2026 12:34:13 +0000</pubDate>
      <link>https://forem.com/aws-builders/datadog-agent-installation-on-aws-ec2-windows-server-and-sending-logs-to-datadog-cloud-57k1</link>
      <guid>https://forem.com/aws-builders/datadog-agent-installation-on-aws-ec2-windows-server-and-sending-logs-to-datadog-cloud-57k1</guid>
      <description>&lt;p&gt;Datadog Agent Installation on AWS EC2 (Windows Server) and Sending Logs to Datadog Cloud&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A running Windows Server EC2 instance&lt;/li&gt;
&lt;li&gt;Administrator access to the instance&lt;/li&gt;
&lt;li&gt;A Datadog account and your API key (found in Datadog → Integrations → APIs)&lt;/li&gt;
&lt;li&gt;Internet access from the EC2 instance to Datadog endpoints&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Download and Install the Datadog Agent&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Connect to your EC2 instance via RDP.&lt;/li&gt;
&lt;li&gt;Open PowerShell as Administrator.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the following command to download and install the Datadog Agent (replace  with your actual key):&lt;br&gt;
start-bitstransfer -source &lt;a href="https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi" rel="noopener noreferrer"&gt;https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi&lt;/a&gt; -destination C:\datadog-agent.msi&lt;br&gt;
msiexec /i C:\datadog-agent.msi APIKEY= SITE="datadoghq.com" /qn&lt;/p&gt;
&lt;h2&gt;
  
  
  - If your Datadog site is datadoghq.eu, use SITE="datadoghq.eu" instead.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;3.Enable Log Collection&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.Open the Datadog Agent configuration file:&lt;br&gt;
     C:\ProgramData\Datadog\datadog.yaml&lt;br&gt;
2.Find and set:&lt;br&gt;
     logs_enabled: true&lt;br&gt;
3.Save and close the file.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4.Configure Log Sources&lt;/strong&gt;&lt;br&gt;
To send specific logs (e.g., application or Windows Event logs):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Windows Event Logs:
Create or edit the file:
C:\ProgramData\Datadog\conf.d\win32_event_log.d\conf.yaml
Add:
init_config:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;instances:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name: application
event_log: Application&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;name: system&lt;br&gt;
event_log: System&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Custom Log Files:
Create or edit:
C:\ProgramData\Datadog\conf.d\logs.yaml
Add:
logs:&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;type: file&lt;br&gt;&lt;br&gt;
path: C:\path\to\your\logfile.log&lt;br&gt;&lt;br&gt;
service: my-service&lt;br&gt;&lt;br&gt;
source: custom&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;5.Restart the Datadog Agent&lt;/strong&gt;&lt;br&gt;
Run in PowerShell:&lt;/p&gt;

&lt;p&gt;Restart-Service datadogagent&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;6.Verify Installation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Datadog, go to Infrastructure → Host Map to confirm your EC2 instance appears.&lt;/li&gt;
&lt;li&gt;Go to Logs → Live Tail to check if logs are being received.&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;(Optional) Tag Your Host
You can add tags during installation or later in the config file:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;tags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;env:production&lt;/li&gt;
&lt;li&gt;role:webserver&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then restart the agent again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Datadog Documentation Reference:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.datadoghq.com/agent/basic_agent_usage/windows/" rel="noopener noreferrer"&gt;https://docs.datadoghq.com/agent/basic_agent_usage/windows/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.datadoghq.com/logs/log_collection/windows/" rel="noopener noreferrer"&gt;https://docs.datadoghq.com/logs/log_collection/windows/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>datadog</category>
      <category>agents</category>
      <category>windows</category>
    </item>
    <item>
      <title>AWS Lambda in C# with Datadog Integration</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 24 Mar 2026 11:20:53 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-lambda-in-c-with-datadog-integration-5egb</link>
      <guid>https://forem.com/aws-builders/aws-lambda-in-c-with-datadog-integration-5egb</guid>
      <description>&lt;p&gt;AWS Lambda in C# with Datadog Integration&lt;/p&gt;

&lt;p&gt;To integrate Datadog with an AWS Lambda function written in C# (.NET), you can use the Datadog Lambda Extension and Datadog .NET Tracer. This setup allows you to collect metrics, traces, and logs from your Lambda function.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1.Set Up Datadog in AWS&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to your Datadog account and navigate to Integrations → AWS.&lt;/li&gt;
&lt;li&gt;Connect your AWS account using the Datadog AWS integration.&lt;/li&gt;
&lt;li&gt;Enable Lambda and CloudWatch Logs permissions for Datadog.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;2.Add Datadog Lambda Extension&lt;/strong&gt;&lt;br&gt;
You can add the Datadog Lambda Extension as a Lambda Layer.&lt;/p&gt;

&lt;p&gt;For .NET 6 or .NET 8 runtimes, use the following ARN (replace  with your AWS region):&lt;/p&gt;

&lt;p&gt;arn:aws:lambda::AWS_Account_ID:layer:Datadog-Extension:latest&lt;/p&gt;

&lt;p&gt;Attach this layer to your Lambda function in the AWS Console or via the AWS CLI.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;3.Install Datadog .NET Tracer&lt;/strong&gt;&lt;br&gt;
In your C# project, install the Datadog .NET tracer NuGet package:&lt;/p&gt;

&lt;p&gt;dotnet add package Datadog.Trace&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;4.Instrument Your Code&lt;/strong&gt;&lt;br&gt;
You can manually instrument your Lambda handler or use automatic instrumentation.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading.Tasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Amazon.Lambda.Core&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Datadog.Trace&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;assembly&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;LambdaSerializer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Amazon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Lambda&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Serialization&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SystemTextJson&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DefaultLambdaJsonSerializer&lt;/span&gt;&lt;span class="p"&gt;))]&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;MyLambda&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Function&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;FunctionHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ILambdaContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Tracer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;StartActive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"lambda.handler"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Span&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetTag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"lambda.input"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Simulate work&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;$"Processed: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;5.Set Environment Variables&lt;/strong&gt;&lt;br&gt;
In your Lambda configuration, add these environment variables:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variable&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DD_API_KEY&lt;/td&gt;
&lt;td&gt;Your Datadog API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_SITE&lt;/td&gt;
&lt;td&gt;datadoghq.com (or your region, e.g., datadoghq.eu)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_LOGS_ENABLED&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_TRACE_ENABLED&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_ENV&lt;/td&gt;
&lt;td&gt;production (or your environment name)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_SERVICE&lt;/td&gt;
&lt;td&gt;my-lambda-service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_VERSION&lt;/td&gt;
&lt;td&gt;1.0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;6.Enable Logging&lt;/strong&gt;&lt;br&gt;
Ensure your Lambda function sends logs to CloudWatch Logs. Datadog will automatically collect them if the AWS integration is configured.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;7.Deploy and Verify&lt;/strong&gt;&lt;br&gt;
Deploy your Lambda function.&lt;br&gt;
Then, in Datadog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to APM → Services to see traces.&lt;/li&gt;
&lt;li&gt;Go to Logs → Explorer to view logs.&lt;/li&gt;
&lt;li&gt;Go to Serverless → Functions to monitor Lambda metrics.&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Optional: Use Datadog Forwarder
If you prefer not to use the extension, you can use the Datadog Forwarder Lambda to forward logs and metrics from CloudWatch to Datadog.
You can find setup instructions in Datadog’s documentation: docs.datadoghq.com/serverless/forwarder/&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;This setup provides full observability—metrics, traces, and logs—for your C# AWS Lambda functions in Datadog.&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to &lt;/a&gt;, &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>datadog</category>
    </item>
    <item>
      <title>AWS Lambda in Python with Datadog Integration</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 24 Mar 2026 11:07:00 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-lambda-in-python-with-datadog-integration-4675</link>
      <guid>https://forem.com/aws-builders/aws-lambda-in-python-with-datadog-integration-4675</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
AWS Lambda is a serverless compute service that allows running code without provisioning or managing servers. It automatically scales applications by running code in response to events. Monitoring and observability are crucial for maintaining performance and reliability, and Datadog provides powerful tools to monitor Lambda functions, collect metrics, and visualize logs.&lt;/p&gt;

&lt;p&gt;This guide explains how to integrate AWS Lambda written in Python with Datadog, including setup steps and sample Python code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS account with permissions to create and manage Lambda functions&lt;/li&gt;
&lt;li&gt;Datadog account with API key&lt;/li&gt;
&lt;li&gt;AWS CLI and Datadog CLI installed&lt;/li&gt;
&lt;li&gt;Python 3.8 or later&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;Step 1: Create a Python AWS Lambda Function&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the AWS Management Console.&lt;/li&gt;
&lt;li&gt;Navigate to Lambda &amp;gt; Create function.&lt;/li&gt;
&lt;li&gt;Choose Author from scratch.&lt;/li&gt;
&lt;li&gt;Enter a function name (e.g., lambda-datadog-demo).&lt;/li&gt;
&lt;li&gt;Select Python 3.9 as the runtime.&lt;/li&gt;
&lt;li&gt;Choose or create an execution role with permissions for CloudWatch Logs.&lt;/li&gt;
&lt;li&gt;Click Create function.&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;Step 2: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Datadog Lambda Library&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Datadog Lambda Library enables tracing, metrics, and log forwarding.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the library locally:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;pip install datadog-lambda pip install ddtrace&lt;/p&gt;

&lt;p&gt;Package dependencies into a deployment zip:&lt;/p&gt;

&lt;p&gt;mkdir package cd package pip install datadog-lambda -t . pip install ddtrace -t . zip -r ../lambda_function.zip . cd .. zip -g lambda_function.zip lambda_function.py&lt;/p&gt;



&lt;p&gt;Step 3: Configure Datadog Integration&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the Datadog dashboard, navigate to Integrations &amp;gt; AWS.&lt;/li&gt;
&lt;li&gt;Connect the AWS account by following the setup wizard.&lt;/li&gt;
&lt;li&gt;Enable Lambda integration.&lt;/li&gt;
&lt;li&gt;Copy the Datadog API key from Integrations &amp;gt; APIs.&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;Step 4: Add Environment Variables&lt;br&gt;
In the Lambda configuration, add the following environment variables:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DD_API_KEY&lt;/td&gt;
&lt;td&gt;your_datadog_api_key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_SITE&lt;/td&gt;
&lt;td&gt;datadoghq.com (or datadoghq.eu for EU region)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_LOGS_ENABLED&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_TRACE_ENABLED&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_FLUSH_TO_LOG&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;p&gt;Step 5: Instrument the Lambda Function&lt;br&gt;
Create a file named lambda_function.py:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datadog_lambda.wrapper&lt;/span&gt; 
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datadog_lambda_wrapper&lt;/span&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datadog_lambda.metric&lt;/span&gt; 
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;lambda_metric&lt;/span&gt; 
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;ddtrace&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;tracer&lt;/span&gt; 

&lt;span class="nd"&gt;@datadog_lambda_wrapper&lt;/span&gt; 
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lambda_handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="c1"&gt;# Custom metric   lambda_metric("custom.lambda.invocations", 1, tags=["env:dev", "function:lambda-datadog-demo"]) 
&lt;/span&gt;
&lt;span class="c1"&gt;# Example trace with 
&lt;/span&gt;&lt;span class="n"&gt;tracer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lambda.process_event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;span&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="n"&gt;span&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event.source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unknown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;process_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;statusCode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;body&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; 

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="c1"&gt;# Simulated processing logic 
&lt;/span&gt;  &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello from AWS Lambda!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Processed message: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wraps the handler with datadog_lambda_wrapper for automatic instrumentation.&lt;/li&gt;
&lt;li&gt;Sends a custom metric to Datadog.&lt;/li&gt;
&lt;li&gt;Creates a trace span for event processing.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Step 6: Deploy the Lambda Function&lt;br&gt;
Upload the deployment package:&lt;/p&gt;

&lt;p&gt;aws lambda update-function-code \ --function-name lambda-datadog-demo \ --zip-file fileb://lambda_function.zip&lt;/p&gt;




&lt;p&gt;Step 7: Enable Log Forwarding&lt;/p&gt;

&lt;p&gt;Datadog can collect logs from CloudWatch using the Datadog Forwarder Lambda.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deploy the Datadog Forwarder from the AWS Serverless Application Repository.&lt;/li&gt;
&lt;li&gt;Set the environment variable DD_API_KEY in the forwarder.&lt;/li&gt;
&lt;li&gt;Subscribe the forwarder to the CloudWatch log group of the Lambda function.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Step 8: Verify in Datadog&lt;br&gt;
After invoking the Lambda function, open the Datadog dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to APM &amp;gt; Traces to view traces.&lt;/li&gt;
&lt;li&gt;Go to Metrics Explorer to see custom metrics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - Check Logs &amp;gt; Live Tail for Lambda logs.
&lt;/h2&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Integrating AWS Lambda with Datadog provides deep visibility into serverless applications. With metrics, traces, and logs unified in one platform, teams can monitor performance, troubleshoot issues, and optimize costs effectively. Using the Datadog Lambda Library in Python simplifies instrumentation and ensures observability from the start.&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to &lt;/a&gt;, &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>monitoring</category>
      <category>python</category>
      <category>serverless</category>
    </item>
    <item>
      <title>AWS Lambda Integration with DataDog</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Mon, 02 Mar 2026 17:42:14 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-lambda-integration-with-datadog-35go</link>
      <guid>https://forem.com/aws-builders/aws-lambda-integration-with-datadog-35go</guid>
      <description>&lt;h1&gt;
  
  
  Step by step approach for integrating Datadog with AWS Lambda
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;AWS Lambda metrics :&lt;/strong&gt;&lt;br&gt;
 There are 3 ways to get metrics from AWS Lambda:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can get Cloudwatch Lambda metrics from the Datadog AWS integration&lt;/li&gt;
&lt;li&gt;You can get enhanced metrics by installing Serverless Monitoring for AWS Lambda through the Datadog Lambda Extension.&lt;/li&gt;
&lt;li&gt;You can submit custom metrics to Datadog from your Lambda functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp66f5io35h3d8654rmpa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp66f5io35h3d8654rmpa.png" alt=" " width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Datadog Lambda Extension&lt;/strong&gt;&lt;br&gt;
The Lambda Extension is installed as an AWS Lambda layer for your functions. Lambda layers are an AWS feature that allow you to separate your function code from its dependencies. A layer is a .zip file archive that contains supplementary code or data, such as library dependencies, custom runtimes, or configuration files.&lt;/p&gt;

&lt;p&gt;Once installed, the Lambda Extension collects and sends data from your Lambda function to Datadog, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;li&gt;Traces&lt;/li&gt;
&lt;li&gt;Functional-level metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Datadog Lambda Library&lt;/strong&gt;&lt;br&gt;
The Datadog Lambda Library can help us to to capture distributed traces and enrich your Lambda data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementation of the Lambda Library varies by runtime. For example, for .NET and Java, the Lambda Library is built into the tracer, while Node.js, Python, and Go use separate libraries. You can find detailed instructions for your runtime in the &lt;a href="https://docs.datadoghq.com/serverless/libraries_integrations/#datadog-lambda-libraries" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Step by Step Approach for AWS Lambda Python integration with data dog&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-lambda-in-python-with-datadog-integration-4675"&gt;https://dev.to/aws-builders/aws-lambda-in-python-with-datadog-integration-4675&lt;/a&gt; &lt;/p&gt;




&lt;p&gt;Step by Step Approach for AWS Lambda C#.Net  integration with data dog&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/srinivasuluparanduru/aws-lambda-in-c-with-datadog-integration-5egb"&gt;https://dev.to/srinivasuluparanduru/aws-lambda-in-c-with-datadog-integration-5egb&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;References :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.datadoghq.com/serverless/aws_lambda/instrumentation" rel="noopener noreferrer"&gt;https://docs.datadoghq.com/serverless/aws_lambda/instrumentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.datadoghq.com/serverless/aws_lambda/metrics/?tab=python#submit-custom-metrics" rel="noopener noreferrer"&gt;AWS Lambda Metrics&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.datadoghq.com/serverless/libraries_integrations/#datadog-lambda-libraries" rel="noopener noreferrer"&gt;Datadog Lambda Libraries&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.datadoghq.com/serverless/aws_lambda/instrumentation/python/?tab=datadogui" rel="noopener noreferrer"&gt;Instrumenting Python Serverless Applications&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to &lt;/a&gt;, &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>datadog</category>
      <category>aws</category>
      <category>lambda</category>
    </item>
    <item>
      <title>Manage Azure Pipeline agents and pools</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Mon, 02 Feb 2026 23:59:39 +0000</pubDate>
      <link>https://forem.com/srinivasuluparanduru/manage-azure-pipeline-agents-and-pools-4mek</link>
      <guid>https://forem.com/srinivasuluparanduru/manage-azure-pipeline-agents-and-pools-4mek</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8qud75xi5dn190bmfhu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8qud75xi5dn190bmfhu.png" alt=" " width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb14mghyzlolcgdx788ga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb14mghyzlolcgdx788ga.png" alt=" " width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6f76mj76o97gnbx16z6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6f76mj76o97gnbx16z6g.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lab- &lt;a href="https://learn.microsoft.com/en-us/training/modules/manage-azure-pipeline-agents-pools/11-configure-agent-pools-understand-pipeline-styles" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/training/modules/manage-azure-pipeline-agents-pools/11-configure-agent-pools-understand-pipeline-styles&lt;/a&gt;&lt;/p&gt;

</description>
      <category>az400</category>
      <category>agentpools</category>
    </item>
    <item>
      <title>AZ-400: Implement CI with Azure Pipelines and GitHub Actions</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Mon, 02 Feb 2026 19:07:07 +0000</pubDate>
      <link>https://forem.com/srinivasuluparanduru/az-400-implement-ci-with-azure-pipelines-and-github-actions-4ogm</link>
      <guid>https://forem.com/srinivasuluparanduru/az-400-implement-ci-with-azure-pipelines-and-github-actions-4ogm</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Explore Azure Pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxtkc2afg0nx20u10j43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxtkc2afg0nx20u10j43.png" alt=" " width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/training/modules/explore-azure-pipelines/4-understand-key-terms" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/training/modules/explore-azure-pipelines/4-understand-key-terms&lt;/a&gt;&lt;/p&gt;

</description>
      <category>az400</category>
      <category>ci</category>
    </item>
    <item>
      <title>Google GenAI Leader Certification - Study Plan</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Wed, 21 Jan 2026 13:56:03 +0000</pubDate>
      <link>https://forem.com/srinivasuluparanduru/google-genai-leader-certification-study-plan-4mel</link>
      <guid>https://forem.com/srinivasuluparanduru/google-genai-leader-certification-study-plan-4mel</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://services.google.com/fh/files/misc/generative_ai_leader_exam_guide_english.pdf" rel="noopener noreferrer"&gt;Exam Study Guide &lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/learn/certification/generative-ai-leader" rel="noopener noreferrer"&gt;Review Sample Questions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exam Pattern : Multiple Choice Q &amp;amp; A&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exam Result : Will be displayed Pass/Fail at the end of the exam&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Credly Badge : It will take a day or two and you will get an email.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Certification Generation : It will take couple days to generate&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Study plan for Google Partners&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://partner.skills.google/paths/1952" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SNo&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Url&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Gen AI: Beyond the Chatbot&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1268" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1268&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Gen AI: Unlock Foundational Concepts&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1265" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1265&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Gen AI: Navigate the Landscape&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1261" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1261&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Gen AI Apps: Transform Your Work&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1266" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1266&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Gen AI Agents: Transform Your Organization&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1267" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1267&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Study plan for Non Google Partners&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Non partners - &lt;a href="https://www.skills.google/paths/1951" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SNo&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Url&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Gen AI: Beyond the Chatbot&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1268" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1268&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Gen AI: Unlock Foundational Concepts&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1265" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1265&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Gen AI: Navigate the Landscape&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1261" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1261&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Gen AI Apps: Transform Your Work&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1266" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1266&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Gen AI Agents: Transform Your Organization&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1267" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1267&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>google</category>
      <category>googlecloud</category>
      <category>genai</category>
    </item>
    <item>
      <title>Getting started with Amazon Q Developer</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Wed, 03 Dec 2025 10:32:53 +0000</pubDate>
      <link>https://forem.com/srinivasuluparanduru/getting-started-with-amazon-q-developer-31l8</link>
      <guid>https://forem.com/srinivasuluparanduru/getting-started-with-amazon-q-developer-31l8</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;br&gt;
Amazon Q Developer is available wherever you work—in popular IDEs, on the command line, in the AWS Management Console, GitLab Duo with Amazon Q, and in the Amazon Q Developer transformation web experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Different IDE's where you can start using Amazon Q Developer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JetBrains&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;Visual Studio&lt;/li&gt;
&lt;li&gt;Command Line&lt;/li&gt;
&lt;li&gt;Eclipse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Using Amazon Q in VS Code:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Visual studio code --&amp;gt; Extensions -&amp;gt; search for Amazon Q and then install&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fukn6ujnwr407yrj0yzso.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fukn6ujnwr407yrj0yzso.png" alt=" " width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We need to choose one options for Amazon Q to login&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5xh46tv7ynh32l48hcc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5xh46tv7ynh32l48hcc.png" alt=" " width="800" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I have choosen option1 and popup window like below and you need to Allow Access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18vtjfagq3n8dbbvlw01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18vtjfagq3n8dbbvlw01.png" alt=" " width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkstd76nzhcuxqayghoo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkstd76nzhcuxqayghoo.png" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Close browser and ready to use from VS Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing Overview&lt;/strong&gt;&lt;br&gt;
Amazon Q Developer reimagines the experience across the entire software development lifecycle (SDLC), making it faster and easier to build, secure, manage, and optimize applications on or off of AWS. Amazon Q Developer offers two pricing tiers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjf5t8qabdyz833521d1d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjf5t8qabdyz833521d1d.png" alt=" " width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upgrade to Kiro&lt;/strong&gt;&lt;br&gt;
The Amazon Q Developer CLI has been rebranded to Kiro.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does this rebrand mean for you?
&lt;strong&gt;If you're a user with a personal account:&lt;/strong&gt; Optionally upgrade the Q CLI and Amazon Q extension in your IDE to Kiro to take advantage of all the updates that will only be available in Kiro going forward&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you're an administrator of Amazon Q Developer Pro subscriptions&lt;/strong&gt;: Start using the Kiro console to manage your users' subscriptions. The Kiro console is a rebrand of the Amazon Q Developer console, with all the same functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/q/developer/getting-started/#ide" rel="noopener noreferrer"&gt;https://aws.amazon.com/q/developer/getting-started/#ide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kiro.dev/docs/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>qdeveloper</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Introduction to GO Programming</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Thu, 20 Nov 2025 00:33:18 +0000</pubDate>
      <link>https://forem.com/aws-builders/introduction-to-go-programming-3blh</link>
      <guid>https://forem.com/aws-builders/introduction-to-go-programming-3blh</guid>
      <description>&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Why is it Awesome&lt;/li&gt;
&lt;li&gt;Popular Use cases&lt;/li&gt;
&lt;li&gt;Tools Built Using Go&lt;/li&gt;
&lt;li&gt;Go Software&lt;/li&gt;
&lt;li&gt;Enable dependency tracking for your code&lt;/li&gt;
&lt;li&gt;Create a module&lt;/li&gt;
&lt;li&gt;Call your code from another module&lt;/li&gt;
&lt;li&gt;Return and handle an error&lt;/li&gt;
&lt;li&gt;Go vs other languages&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Introduction :
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go is an open-source programming language developed by Google&lt;/li&gt;
&lt;li&gt;It was designed at Google in 2007 by &lt;a href="https://en.wikipedia.org/wiki/Robert_Griesemer" rel="noopener noreferrer"&gt;Robert Griesemer&lt;/a&gt;,and &lt;a href="(https://en.wikipedia.org/wiki/Ken_Thompson)"&gt;Ken Thompson&lt;/a&gt;, and publicly announced in November 2009.&lt;/li&gt;
&lt;li&gt;It is syntactically similar to C, but also has garbage collection, structural typing&lt;/li&gt;
&lt;li&gt; It is often referred to as Golang to avoid ambiguity and because of its former domain name, golang.org, but its proper name is Go&lt;/li&gt;
&lt;li&gt;the gopher : The Go gopher was created by renowned illustrator Renee French. It has become a beloved mascot
for the Go brand. The Gopher is a reminder of the approachability and fun that comes with the Go brand and language. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr7k17km06vyr61zst21v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr7k17km06vyr61zst21v.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is it Awesome
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Focus on simplicity,clarity &amp;amp; scalability&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspired by languages like python&lt;/li&gt;
&lt;li&gt;Aims to provide a clean, understandable syntax&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;High performance &amp;amp; Focus on Concurrency&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Similar to C or C++&lt;/li&gt;
&lt;li&gt;Popular for tasks that benefit from multi-threading&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Batteries included&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go comes with a standard library&lt;/li&gt;
&lt;li&gt;Many core features are built-included&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Static typing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go is a type-safe language&lt;/li&gt;
&lt;li&gt;Allows you to catch many errors early&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Popular Use cases
&lt;/h2&gt;

&lt;p&gt;1.Networking &amp;amp; APIs&lt;br&gt;
2.Microservices&lt;br&gt;
3.CLI Tools&lt;/p&gt;
&lt;h2&gt;
  
  
  Tools Built Using Go
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Docker - Containerization platform&lt;/li&gt;
&lt;li&gt;Kubernetes - Container orchestration system&lt;/li&gt;
&lt;li&gt;Terraform - Infrastructure as Code tool&lt;/li&gt;
&lt;li&gt;Prometheus - Monitoring and alerting toolkit&lt;/li&gt;
&lt;li&gt;Hugo - Static site generator&lt;/li&gt;
&lt;li&gt;CockroachDB - Distributed SQL database&lt;/li&gt;
&lt;li&gt;Traefik - Cloud-native edge router&lt;/li&gt;
&lt;li&gt;Etcd - Distributed key-value store&lt;/li&gt;
&lt;li&gt;Caddy - Web server&lt;/li&gt;
&lt;li&gt;Syncthing - Continuous file synchronization&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;These applications leverage Go's performance, concurrency, and simplicity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Go Software
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go to the &lt;a href="https://go.dev/" rel="noopener noreferrer"&gt;go website&lt;/a&gt; and then click on the download button&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6o83cndjacq8gollmur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6o83cndjacq8gollmur.png" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go can be installed in multiple Operating systems and information given below&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2u6mizvn6tz49hxr1mod.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2u6mizvn6tz49hxr1mod.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its a straight forward installation, just keep click next to complete the installation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Enable dependency tracking for your code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When your code imports packages contained in other modules, you manage those dependencies through your code's own module. &lt;/li&gt;
&lt;li&gt;That module is defined by a go.mod file that tracks the modules that provide those packages. That go.mod file stays with your code, including in your source code repository.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To enable dependency tracking for your code by creating a go.mod file, run the go mod init command, giving it the name of the module your code will be in. The name is the module's module path.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Try the below command in the software folder&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;go mod init example/hello&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;_ go: creating new go.mod: module example/hello_&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a file hello.go file
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Run your code to see the greeting by running the command 
&lt;strong&gt;go run .   &lt;em&gt;or&lt;/em&gt;  go run hello.go&lt;/strong&gt;
&amp;gt; Hello, World!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Create a module
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create a module -- Write a small module with functions you can call from another module.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;1.1 Open a command prompt and cd to your home directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;On Linux or Mac:

cd
On Windows:

cd %HOMEPATH%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;1.2 Create a greetings directory for your Go module source code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For example, from your home directory use the following commands:
&lt;pre&gt;
mkdir greetings
cd greetings
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.3 Start your module using the go mod init command&lt;/p&gt;

&lt;p&gt;Run the go mod init command, giving it your module path -- here, use example.com/greetings&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ go mod init example.com/greetings
go: creating new go.mod: module example.com/greetings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The go mod init command creates a go.mod file to track your code's dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.4 create a file greetings.go &lt;/p&gt;

&lt;p&gt;1.5 Paste below code into greetings.go file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package greetings

import "fmt"

// Hello returns a greeting for the named person.
func Hello(name string) string {
    // Return a greeting that embeds the name in a message.
    message := fmt.Sprintf("Hi, %v. Welcome!", name)
    return message
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;1.6 Implement a Hello function to return the greeting&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzg9sfw3ngkr2hdm3ua7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzg9sfw3ngkr2hdm3ua7s.png" alt=" " width="475" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1.7 In Go, the := operator is a shortcut for declaring and initializing a variable in one line (Go uses the value on the right to determine the variable's type). Taking the long way, you might have written this as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var message string
message = fmt.Sprintf("Hi, %v. Welcome!", name)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Call your code from another module
&lt;/h2&gt;

&lt;p&gt;1.Create a hello directory for your source code main folder. This is where you'll write your caller.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After you create the folder and its looks like this
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;home&amp;gt;/
 |-- greetings/
 |-- hello/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.For example, if your command prompt is in the greetings directory, you could use the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ..
mkdir hello
cd hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.Enable dependency tracking for the code you're about to write&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ go mod init example.com/hello
go: creating new go.mod: module example.com/hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.In your text editor, in the hello directory, create a file in which to write your code and call it hello.go.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write code to call the Hello function, then print the function's return value&lt;/li&gt;
&lt;li&gt;Paste the below code in hello.go file
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main

import (
    "fmt"

    "example.com/greetings"
)

func main() {
    // Get a greeting message and print it.
    message := greetings.Hello("Gladys")
    fmt.Println(message)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the above code declared a main package. In Go, code executed as an application must be in a main package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Import two packages: example.com/greetings and the fmt package.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get a greeting by calling the greetings package’s Hello function.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5.Edit the example.com/hello module to use your local example.com/greetings module&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To do that, use the go mod edit command to edit the example.com/hello module to redirect Go tools from its module path &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From the command prompt in the hello directory, run the following command&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ go mod edit -replace example.com/greetings=../greetings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The command specifies that example.com/greetings should be replaced with ../greetings for the purpose of locating the dependency&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;go.mod file will small changes with replace command at the bottom&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module example.com/hello

go 1.16

replace example.com/greetings =&amp;gt; ../greetings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;From the command prompt in the hello directory, run the go mod tidy command to synchronize the example.com/hello module's dependencies, adding those required by the code, but not yet tracked in the module.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ go mod tidy
go: found example.com/greetings in example.com/greetings v0.0.0-00010101000000-000000000000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;After running the above code and go.mod looks like below
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module example.com/hello

go 1.16

replace example.com/greetings =&amp;gt; ../greetings

require example.com/greetings v0.0.0-00010101000000-000000000000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The command found the local code in the greetings directory, then added a require directive to specify that example.com/hello requires example.com/greetings. &lt;/li&gt;
&lt;li&gt;&lt;p&gt;You created this dependency when you imported the greetings package in hello.go.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At the command prompt in the hello directory, run your code to confirm that it works.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ go run .
Hi, Gladys. Welcome!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Return and handle an error
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Handling errors is an essential feature of solid code. In this section, you'll add a bit of code to return an error from the greetings module, then handle it in the caller.&lt;/li&gt;
&lt;li&gt;Refer Section 4 &amp;amp; 5 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.In greetings/greetings.go, add the code highlighted below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There's no sense sending a greeting back if you don't know who to greet. Return an error to the caller if the name is empty.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package greetings

import (
    "errors"
    "fmt"
)

// Hello returns a greeting for the named person.
func Hello(name string) (string, error) {
    // If no name was given, return an error with a message.
    if name == "" {
        return "", errors.New("empty name")
    }

    // If a name was received, return a value that embeds the name
    // in a greeting message.
    message := fmt.Sprintf("Hi, %v. Welcome!", name)
    return message, nil
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this code, you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the function so that it returns two values: a string and an error. &lt;/li&gt;
&lt;li&gt;Your caller will check the second value to see if an error occurred. &lt;/li&gt;
&lt;li&gt;Import the Go standard library *&lt;em&gt;errors *&lt;/em&gt; package so you can use its errors.New function.&lt;/li&gt;
&lt;li&gt;Add an if statement to check for an invalid request (an empty string where the name should be) and return an error if the request is invalid. The errors.New function returns an error with your message inside.&lt;/li&gt;
&lt;li&gt;Add nil (meaning no error) as a second value in the successful return. That way, the caller can see that the function succeeded.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.In your hello/hello.go file, handle the error now returned by the Hello function, along with the non-error value&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste the below code in hello.go
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main

import (
    "fmt"
    "log"

    "example.com/greetings"
)

func main() {
    // Set properties of the predefined Logger, including
    // the log entry prefix and a flag to disable printing
    // the time, source file, and line number.
    log.SetPrefix("greetings: ")
    log.SetFlags(0)

    // Request a greeting message.
    message, err := greetings.Hello("")
    // If an error was returned, print it to the console and
    // exit the program.
    if err != nil {
        log.Fatal(err)
    }

    // If no error was returned, print the returned message
    // to the console.
    fmt.Println(message)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Configure the log package&lt;/li&gt;
&lt;li&gt;Assign both of the Hello return values, including the error, to variables.&lt;/li&gt;
&lt;li&gt;Change the Hello argument from Gladys’s name to an empty string, so you can try out your error-handling code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.At the command line in the hello directory, run hello.go to confirm that the code works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ go run .
greetings: empty name
exit status 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Go vs Other languages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go (Golang) Benefits Compared to Other Languages:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Simplicity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go: Clean, minimal syntax makes code easy to read and maintain.&lt;/li&gt;
&lt;li&gt;Others: Languages like Java or C++ have more complex syntax and features.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Concurrency:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go: Native support with goroutines and channels simplifies concurrent programming.&lt;/li&gt;
&lt;li&gt;Others: Python, Ruby, and JavaScript require external libraries or have less efficient concurrency models.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Performance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go: Compiled to machine code, offering fast execution and low memory overhead.&lt;/li&gt;
&lt;li&gt;Others: Interpreted languages (Python, Ruby) are slower; Java requires JVM.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Deployment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go: Produces single static binaries, making deployment straightforward.&lt;/li&gt;
&lt;li&gt;Others: Java needs JVM, Python needs interpreter, C++ may have dependency issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ecosystem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go: Strong in cloud, DevOps, and networking (used in Docker, Kubernetes).&lt;/li&gt;
&lt;li&gt;Others: Java excels in enterprise, Python in data science, C++ in systems programming.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Memory Management:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go: Automatic garbage collection with some manual control.&lt;/li&gt;
&lt;li&gt;Others: C/C++ require manual management; Java/Python are fully automatic.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use Cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go: Ideal for microservices, cloud infrastructure, CLI tools, and networking.&lt;/li&gt;
&lt;li&gt;Others: Java for enterprise, Python for ML/AI, C++ for performance-critical systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Summary: Go stands out for its simplicity, efficient concurrency, fast deployment, and suitability for modern cloud and infrastructure projects.&lt;/p&gt;

&lt;p&gt;References: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Go_(programming_language)" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Go_(programming_language)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://go.dev/" rel="noopener noreferrer"&gt;https://go.dev/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Introduction to Go Programming. &lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to&lt;/a&gt; , &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>introduction</category>
      <category>modules</category>
    </item>
    <item>
      <title>Introduction to Qlik Replicate &amp; Architecture</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 18 Nov 2025 11:19:51 +0000</pubDate>
      <link>https://forem.com/srinivasuluparanduru/introduction-to-qlik-replicate-architecture-578p</link>
      <guid>https://forem.com/srinivasuluparanduru/introduction-to-qlik-replicate-architecture-578p</guid>
      <description>&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Two modes of replication&lt;/li&gt;
&lt;li&gt;Qlik Replicate Architecture&lt;/li&gt;
&lt;li&gt;Agent Information&lt;/li&gt;
&lt;li&gt;Multiple Options in CDC&lt;/li&gt;
&lt;li&gt;Supported Environment&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;Qlik Replicate is a Client-managed log based  data replication tool. That access the transaction logs from the source and applies changes to target.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two modes of replication
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Full Load Replication&lt;/li&gt;
&lt;li&gt;Change Data Capture(CDC)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full Load Replication&lt;/strong&gt;: Takes every thing from source and replicates to  target&lt;br&gt;
&lt;strong&gt;Change Data Capture&lt;/strong&gt; : Its runs continuously for the changes in the source and then propagates the changes to the download stream to target in near real time&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Replicate cloud to cloud &lt;/li&gt;
&lt;li&gt;Onprem to onprem databases&lt;/li&gt;
&lt;li&gt;Onprem to cloud and visa versa&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Qlik Replicate Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlu1phn8zk5t1355rmn4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlu1phn8zk5t1355rmn4.png" alt=" " width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qlik Replicate Architecture consists of 4 components&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Filter&lt;/li&gt;
&lt;li&gt;Transform&lt;/li&gt;
&lt;li&gt;File-Channel&lt;/li&gt;
&lt;li&gt;In-Memory&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;You can enhance the data using Filter and Transform&lt;/li&gt;
&lt;li&gt;During the transformation from source to destination and some of the data exists In-Memory and Other data may exists in File Channel. &lt;/li&gt;
&lt;li&gt;File Channel: File-based directory containing task defintions, metadata and other replication artifacts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Some important points:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qlik CDC Replication task initially executes a full load sequence&lt;/li&gt;
&lt;li&gt;Task continues running, looks for changes made to source and replicating changes to target&lt;/li&gt;
&lt;li&gt;Qlik - Web-based Designer and Management console 

&lt;ul&gt;
&lt;li&gt;Configure the environment &lt;/li&gt;
&lt;li&gt;Create and configure tasks&lt;/li&gt;
&lt;li&gt;Gather environmental statistics&lt;/li&gt;
&lt;li&gt;Debug the environment-&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Persistent Store : Qlik Replicate writes information from with in platform environment to external storage&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Agent Information:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No software agents on sources and targets for mainstream databases&lt;/li&gt;
&lt;li&gt;Replicate data from 100s of source systems with easy configuration&lt;/li&gt;
&lt;li&gt;No software upgrades required at each database source or target&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Multiple Options in CDC
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Transactional CDC&lt;/li&gt;
&lt;li&gt;Batch CDC&lt;/li&gt;
&lt;li&gt;Data Warehouse Ingest-Merge&lt;/li&gt;
&lt;li&gt;Message Encoded CDC&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Supported Environment
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4jhpoz97soaoqot4ntb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4jhpoz97soaoqot4ntb.png" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Introduction to Qlik Replicate &amp;amp; Architecture&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to&lt;/a&gt; , &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>qlik</category>
      <category>architecture</category>
      <category>qliksense</category>
      <category>qlikreplicate</category>
    </item>
  </channel>
</rss>
