<?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: Sourav Dhiman</title>
    <description>The latest articles on Forem by Sourav Dhiman (@d_sourav155).</description>
    <link>https://forem.com/d_sourav155</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%2F784500%2F67d7f7af-411a-479b-8561-be4ec094701d.jpg</url>
      <title>Forem: Sourav Dhiman</title>
      <link>https://forem.com/d_sourav155</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/d_sourav155"/>
    <language>en</language>
    <item>
      <title>The Cornerstones of SRE: SLI, SLO and SLA</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Thu, 15 Aug 2024 14:00:35 +0000</pubDate>
      <link>https://forem.com/d_sourav155/the-cornerstones-of-sre-sli-slo-and-sla-4d9h</link>
      <guid>https://forem.com/d_sourav155/the-cornerstones-of-sre-sli-slo-and-sla-4d9h</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In today's digital age, where systems are increasingly complex and user expectations skyrocket, ensuring the reliability and performance of online services is paramount. We have Site Reliability Engineering (SRE), a discipline that blends software engineering principles with systems administration to build and operate large-scale distributed systems. At the heart of SRE lies a triumvirate of metrics: Service Level Indicators (SLIs), Service Level Objectives (SLOs) and Service Level Agreements (SLAs). These metrics serve as the compass, guiding organizations in building and maintaining robust systems that deliver exceptional user experiences.&lt;/p&gt;

&lt;p&gt;In this blog post, we'll delve into the intricacies of SLOs, SLIs and SLAs, exploring how they work together to create a culture of reliability and performance excellence.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is SRE
&lt;/h1&gt;

&lt;p&gt;Site Reliability Engineering (SRE) is a discipline that applies a software engineering approach to infrastructure and operations. It aims to build and run large-scale distributed systems reliably. SRE teams collaborate closely with software development teams to ensure the reliability and performance of systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Principles of SRE
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Automation:&lt;/strong&gt; Automate repetitive tasks to improve efficiency and reduce human error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring:&lt;/strong&gt; Implement robust monitoring systems to proactively identify and address issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incident Response:&lt;/strong&gt; Establish well-defined incident response procedures to minimize downtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capacity Planning:&lt;/strong&gt; Predict and manage system capacity to prevent performance degradation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Toil Reduction:&lt;/strong&gt; Continuously identify and eliminate manual tasks to free up engineers for value-added work.&lt;/p&gt;

&lt;h1&gt;
  
  
  SRE Fundamentals
&lt;/h1&gt;

&lt;p&gt;SLO, SLI and SLA are the fundamentals to SRE and are used to measure and manage service reliability. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLI&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLO&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLA&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  SLI (Service Level Indicator)
&lt;/h2&gt;

&lt;p&gt;Think of an SLI as a specific measure of how well your service is performing. It's like a report card for your service, giving you concrete data on its health. For instance, if you run an online store, an SLI could be the average time it takes for a product page to load.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why SLI
&lt;/h3&gt;

&lt;p&gt;SLIs are the foundation for understanding your service's performance. They provide the raw data you need to identify potential problems and track improvements. Without solid SLIs, it's like trying to navigate without a map.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common types of SLI
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Latency:&lt;/strong&gt; How long does it take for a request to be processed?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error rate:&lt;/strong&gt; How often do things go wrong?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Throughput:&lt;/strong&gt; How much work can your service handle?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Saturation:&lt;/strong&gt; How close is your service to its capacity limits?&lt;/p&gt;

&lt;h2&gt;
  
  
  SLO (Service Level Objective)
&lt;/h2&gt;

&lt;p&gt;An SLO or Service Level Objective is like a goalpost for your service. It's a target value for an SLI, defining the expected level of performance. For example, if your SLI is the average loading time of a product page, your SLO could be that the page loads in less than 2 seconds, 99.9% of the time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why SLO
&lt;/h3&gt;

&lt;p&gt;SLOs help you focus on what truly matters to your users. They provide a clear target for your team to work towards and help you prioritize improvements. By setting realistic SLOs, you can balance user expectations with operational constraints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting Effective SLO
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Align with user needs:&lt;/strong&gt; Make sure your SLOs reflect what's important to your users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be specific and measurable:&lt;/strong&gt; Clearly define your SLOs using quantifiable metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with a baseline:&lt;/strong&gt; Establish a starting point for your SLOs to track improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Iterate and improve:&lt;/strong&gt; Regularly review and adjust your SLOs as your service evolves.&lt;/p&gt;

&lt;h2&gt;
  
  
  SLA (Service Level Agreement)
&lt;/h2&gt;

&lt;p&gt;An SLA or Service Level Agreement is a formal contract between a service provider and its customers that outlines the expected level of service. It's essentially a promise about the quality and reliability of the service. SLAs are often based on SLOs, but they're legally binding and include specific terms and conditions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why SLA
&lt;/h3&gt;

&lt;p&gt;SLAs build trust between service providers and customers. They clearly define expectations, protect both parties and can be used as a benchmark for service performance. SLAs also help to align internal teams and focus on delivering value to customers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Components of SLA
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Service definitions:&lt;/strong&gt; Clearly outline the services covered by the SLA.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metrics:&lt;/strong&gt; Specify the SLIs and SLOs that will be used to measure performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Service levels:&lt;/strong&gt; Define the expected performance levels for each metric.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Penalties and rewards:&lt;/strong&gt; Outline the consequences for not meeting SLOs and incentives for exceeding them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reporting and communication:&lt;/strong&gt; Describe how performance data will be shared and communicated.&lt;/p&gt;

&lt;h1&gt;
  
  
  Real World Scenarios
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Scenario 1: E-commerce Website
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLI:&lt;/strong&gt; Percentage of successful product page loads&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLO:&lt;/strong&gt; 99.95% of product page loads should be successful&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLA:&lt;/strong&gt; The e-commerce platform provider guarantees 99.9% uptime with a service credit of 1% of monthly fees for each hour of downtime exceeding the SLA.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Scenario 2: Online Gaming Service
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLI:&lt;/strong&gt; Average game server response time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLO:&lt;/strong&gt; Average response time should be less than 200ms, 95% of the time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLA:&lt;/strong&gt; The game provider offers a refund if the average response time exceeds 300ms for more than 2 hours in a day.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Scenario 3: Parent-Child
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLI:&lt;/strong&gt; Child marks in an exam&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLO:&lt;/strong&gt; Marks should be greater than 90%&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SLA:&lt;/strong&gt; Parent offers to buys his child a bicycle, if he score 90% above in exam, else he will be grounded for 3 months.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;SLOs, SLIs and SLAs are the building blocks of a reliable and high-performing online service. By understanding and effectively implementing these metrics, organizations can create a culture of data-driven decision-making and continuous improvement.&lt;/p&gt;

&lt;p&gt;SLIs provide the raw data, SLOs set clear goals, and SLAs formalize commitments. Together they form a powerful framework for measuring, managing and improving service quality. By focusing on these key metrics and aligning them with business objectives, organizations can deliver exceptional experiences to their customers and build trust in their services.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>devopsdigest</category>
      <category>kubernetes</category>
      <category>sre</category>
    </item>
    <item>
      <title>Reduce Your Cloud Bill: Cost Optimization Strategies in the SDLC</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Thu, 11 Jul 2024 12:57:15 +0000</pubDate>
      <link>https://forem.com/d_sourav155/reduce-your-cloud-bill-cost-optimization-strategies-in-the-sdlc-ghj</link>
      <guid>https://forem.com/d_sourav155/reduce-your-cloud-bill-cost-optimization-strategies-in-the-sdlc-ghj</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Are Your Cloud Bills Getting Out of Control? &lt;/p&gt;

&lt;p&gt;The cloud revolution has transformed how we build and deploy software. Scalability, flexibility and on-demand resources are just a few of the benefits that have made cloud services a cornerstone of modern development. However, running cloud services can be a double-edged sword. Scalability and flexibility are amazing but keeping those costs in check is crucial. Managing cloud costs can be a challenge especially if optimization isn't ingrained throughout the entire Software Development Life Cycle (SDLC).&lt;br&gt;
The good news is that cost optimization doesn't have to be an afterthought. By integrating cost-conscious practices into each stage of the SDLC, you can significantly reduce your cloud service expenses while maintaining optimal performance and reliability. &lt;/p&gt;

&lt;h2&gt;
  
  
  The SDLC Stages and Cost Optimization Strategies
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Planning and Requirements Gathering
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Identify Core Functionalities:&lt;/strong&gt; Before development, clearly define the essential features and functionalities your service needs. Adding unnecessary features late in the game can lead to bloated services with higher resource demands. Focus on what truly matters for your users and avoid building features that won't be used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose the Right Tool and Technology:&lt;/strong&gt; When evaluating technologies and tools consider their cost implications. Open-source solutions can offer significant savings compared to proprietary options. Cloud-based services often have flexible pricing structures based on usage so explore these options as well. Don't forget to factor in traffic management solutions – both for internal and external traffic distribution. Look for open-source load balancers or consider cost-effective tiers offered by cloud providers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design and Development
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Optimize Code for Efficiency:&lt;/strong&gt; Developers should write clean and efficient code that utilizes resources effectively. This can involve techniques like code profiling to identify bottlenecks, leveraging caching mechanisms and avoiding unnecessary data processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Design for Scalability:&lt;/strong&gt; Consider how your service will handle fluctuations in user load. Implement autoscaling practices that automatically adjust resource allocation based on demand. This ensures you're not paying for unused resources during low-traffic periods.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing and Deployment
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Leverage Infrastructure as Code:&lt;/strong&gt; IaC tools allow you to define infrastructure configurations as code, enabling automated provisioning and deployment. This reduces manual configuration errors and ensures consistent environments leading to more efficient resource utilization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance Testing:&lt;/strong&gt; Performance testing helps identify bottlenecks and areas for optimization before deploying your service to production. This can prevent costly issues like slow response times or crashes that require additional resources to fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  Operations and Monitoring
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Rightsizing Resources:&lt;/strong&gt; Continuously monitor your service's resource consumption (CPU, memory, storage) and identify opportunities to downsize instances or adjust configurations. Cloud providers often offer various instance types with different capabilities and costs. Choose the ones that best fit your service's needs and avoid overprovisioning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traffic Management Monitoring:&lt;/strong&gt; Just like any other component your traffic management solutions need monitoring. Track the health and performance of both internal and external load balancers. Identify potential bottlenecks and optimize configurations for efficient traffic distribution ensuring smooth user experiences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost Monitoring and Analysis:&lt;/strong&gt; Utilize cloud billing tools and cost management platforms to gain insights into your service's spending patterns. Identify areas for cost optimization such as underutilized resources or unused services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Feedback Loop&lt;/strong&gt;&lt;br&gt;
Cost optimization isn't a one-time effort. It's an ongoing process. Share the insights you gain from monitoring and cost analysis with your development and operations teams. This collaborative approach allows for continuous improvement. Developers can focus on code efficiency, operations can refine traffic management strategies and everyone can work together to achieve the most cost-effective solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Implementing These Strategies
&lt;/h2&gt;

&lt;p&gt;By integrating these cost optimization strategies throughout the SDLC, you can gain significant rewards:&lt;br&gt;
Reduced Cloud Service Costs: This is the most obvious benefit but it's also the most impactful. By eliminating waste and optimizing resource utilization you can significantly lower your cloud service expenses freeing up resources for other business priorities.&lt;br&gt;
Improved Performance and Reliability: Cost optimization often leads to a leaner and more efficient service. By rightsizing resources and optimizing traffic management you ensure your service can handle peak loads without compromising performance or user experience.&lt;br&gt;
Informed Decision-Making for the Future: The insights gained from cost monitoring and analysis empower&lt;br&gt;
Informed Decision-Making for the Future: The insights gained from cost monitoring and analysis empower you to make informed decisions for future cloud service development. You'll have a clearer understanding of your resource usage patterns and can choose the most cost-effective tools and technologies for new projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The cloud offers a powerful platform for building and deploying innovative solutions. By integrating cost optimization practices into the very fabric of your SDLC you can ensure you're getting the most out of your cloud investment. Remember, cost optimization is a continuous journey not a destination. By fostering a culture of cost-consciousness throughout your organization you can effectively tame the cloud beast and achieve optimal performance, reliability and affordability for your cloud services.&lt;/p&gt;

&lt;p&gt;Do you have experience optimizing costs throughout the SDLC? Share your best practices and lessons learned in the comments below! Let's keep the conversation going and help each other navigate the ever-evolving world of cloud cost management.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GitOps: Streamlining Infrastructure and Application Deployment</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Thu, 27 Jun 2024 09:15:35 +0000</pubDate>
      <link>https://forem.com/d_sourav155/gitops-streamlining-infrastructure-and-application-deployment-1em5</link>
      <guid>https://forem.com/d_sourav155/gitops-streamlining-infrastructure-and-application-deployment-1em5</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Managing deployments can become a complex affair in the age of cloud-native development and ever-evolving infrastructure. GitOps emerges as a powerful solution, leveraging the familiar territory of Git version control to automate infrastructure and application deployments. This blog delves into the core concepts of GitOps, its benefits, and how it simplifies the development workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is GitOps
&lt;/h2&gt;

&lt;p&gt;At its heart, GitOps is an operational framework that borrows heavily from DevOps principles. It uses Git (or any version-controlled system) as a single source of truth to deliver applications and infrastructure. Tools like Argo CD are used to synchronize the live state with the desired state defined in Git.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Principle
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Git as the Single Source of Truth: GitOps establishes the repository as the central hub for storing and managing all infrastructure configurations, application deployments, and operational procedures. This creates a single point of reference for the desired state of your system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Declarative Configuration: Instead of manually configuring infrastructure, GitOps uses infrastructure as code (IaC) tools to define the desired state of your system in a declarative way. IaC files specify what you want your infrastructure to look like, and GitOps tools make it happen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CI/CD Integration: GitOps integrates seamlessly with continuous integration and continuous delivery (CI/CD) pipelines. Any changes to the Git repository trigger the CI/CD pipeline, which validates the changes and deploys them to the target environment if successful.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why GitOps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Improved Collaboration and Visibility: Git provides a centralized platform for managing configurations, fostering collaboration between developers and operations teams. Everyone has visibility into the desired state of the system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enhanced Reliability and Stability: Version control in Git ensures a clear history of changes. Accidental deployments or configuration errors can be easily rolled back to previous stable versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simplified Rollbacks and Disaster Recovery: With Git as the source of truth, reverting to a previous state or recovering from a disaster becomes a straightforward process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Streamlined Auditing and Compliance: Git's built-in auditing capabilities make it easy to track changes and ensure compliance with security or regulatory requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  GitOps Workflow
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Define Infrastructure and Applications: Developers and operations personnel define the desired state of infrastructure and applications using IaC files stored in the Git repository.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commit and Push Changes: Changes are committed and pushed to the Git repository, triggering the CI/CD pipeline.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CI/CD Pipeline: The CI/CD pipeline validates the changes, ensuring they adhere to security and configuration best practices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deployment: Upon successful validation, the CD pipeline interacts with a GitOps operator, which translates the desired state into actions. The operator deploys or updates infrastructure and applications to match the configuration in the Git repository.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous Reconciliation: The GitOps operator continuously monitors the actual state of the system and reconciles any deviations from the desired state defined in the Git repository.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  GitOps and Kubernetes
&lt;/h3&gt;

&lt;p&gt;While GitOps is not limited to any specific platform, it finds a natural fit with container orchestration tools like Kubernetes. Kubernetes deployments, configurations, and secrets can all be managed using GitOps principles, leading to a more robust and automated deployment process for cloud-native applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to Implement GitOps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create Git Repository: Set up a Git repository with the necessary Kubernetes manifests and Kustomization files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define Kustomization: Use kustomization.yaml to manage the resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create Deployment: Define the deployment in deployment.yaml specifying the necessary containers and images.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure Argo CD: Set up an Argo CD application pointing to the Git repository and the path where manifests are stored.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sync and Deploy: Use Argo CD to sync the application state from Git to the Kubernetes cluster.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hands-On
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Repository Setup
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;File 1:kustomization.yaml&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This file is used by Kustomize, a tool for managing Kubernetes configurations.&lt;/p&gt;

&lt;p&gt;It declares the resources (deployment, service, and ingress) to be managed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsm2nssttnr0eutx2jc2s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsm2nssttnr0eutx2jc2s.jpg" alt="Image description" width="800" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Points:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;apiVersion: Specifies the version of the Kustomize configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kind: Indicates this is a Kustomization file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;metadata: Contains metadata about the customization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;namespace: Sets the namespace where resources will be deployed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;resources: Lists the resources to be managed.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;File 2:deployment.yaml&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This file defines the Kubernetes Deployment resource for the quizapp.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmeneuctuq81a6ehj70h.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmeneuctuq81a6ehj70h.jpg" alt="Image description" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Points:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;apiVersion: Specifies the API version of the Deployment resource.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kind: Indicates this is a Deployment resource.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;metadata: Contains metadata like the name and namespace.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;spec: Defines the specification of the deployment, including selector, template, and containers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;containers: Specifies the containers that make up the pod, including their images and ports.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;File 3: Argo CD Application Details&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Argo CD is configured to sync the application state from the Git repository to the Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6a65kugv9ayk15pjqbq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6a65kugv9ayk15pjqbq.jpg" alt="Image description" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Points:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;PROJECT: The project to which the application belongs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NAMESPACE: The namespace in which the application is deployed (devops).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;REPO URL: The URL of the Git repository (&lt;a href="https://github.com/agileguru/backstage.git"&gt;https://github.com/agileguru/backstage.git&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TARGET REVISION: The branch or tag to deploy from (develop).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PATH: The path within the repository where the Kubernetes manifests are located (k8s/base/quiz).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SYNC STATUS: Indicates whether the live state is in sync with the desired state in Git.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HEALTH STATUS: Shows the health status of the application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw3e3rsk0ubfeikc0vqgg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw3e3rsk0ubfeikc0vqgg.jpg" alt="Image description" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F580e9vu8tlz6fcl1qkbx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F580e9vu8tlz6fcl1qkbx.jpg" alt="Image description" width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring and Updates
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Monitor Argo CD: Regularly check Argo CD for sync status and health status.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update Git: Make changes to the manifests in the Git repository as needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auto Sync: Argo CD will detect changes in the Git repository and apply them to the cluster, ensuring the live state matches the desired state.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;GitOps offers a compelling approach to managing infrastructure and application deployments. By leveraging the familiarity and power of Git version control, GitOps streamlines workflows, improves collaboration, and fosters a more reliable and auditable development environment. As cloud-native development continues to flourish, GitOps is poised to play a pivotal role in ensuring efficient and automated deployments.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>TDD vs. BDD : Quality in SDLC</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Wed, 10 Apr 2024 19:58:48 +0000</pubDate>
      <link>https://forem.com/d_sourav155/tdd-vs-bdd-quality-in-sdlc-1fgi</link>
      <guid>https://forem.com/d_sourav155/tdd-vs-bdd-quality-in-sdlc-1fgi</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Test-Driven Development (TDD) and Behavior-Driven Development (BDD) have become essential staples in modern software development. These iterative methodologies elevate code quality, foster collaboration, and streamline projects by emphasizing tests and feedback as an integral part of the development cycle. Let's peep deeper into TDD and BDD, their use cases, strengths and real-life scenarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test-Driven Development (TDD)
&lt;/h2&gt;

&lt;p&gt;TDD flips the traditional development model on its head. Here's the core process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Write a Failing Test: Before implementing a feature, meticulously design a test case that will initially fail because the functionality doesn't exist. This forces you to define the desired outcome.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write Just Enough Code: Focus solely on writing the minimum amount of code necessary to make the test pass. Resist the urge to over-engineer solutions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Refactor: Clean up, restructure, and optimize the code, ensuring it remains readable and maintainable. This step is crucial for code health.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  TDD Cycle Diagram
&lt;/h3&gt;

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

&lt;h3&gt;
  
  
  Real-World TDD Scenario
&lt;/h3&gt;

&lt;p&gt;Imagine developing a simple calculator. A TDD approach would look like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test: Write a test case like test_addition() that asserts whether calculator.add(2, 3) equals 5. The test will initially fail.&lt;/li&gt;
&lt;li&gt;Code: Implement the basic add method in the calculator class to make the test pass.&lt;/li&gt;
&lt;li&gt;Refactor: Review the code for conciseness and readability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example TDD Scenario
&lt;/h3&gt;

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

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

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6w7bustu6ddd810kge8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6w7bustu6ddd810kge8.png" alt="Image description" width="628" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of TDD
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced Code Design: TDD pushes developers to think critically about functionality, leading to better code structure.&lt;/li&gt;
&lt;li&gt;Quicker Bug Identification: The rapid feedback loop uncovers bugs earlier in the development process.&lt;/li&gt;
&lt;li&gt;Regression Prevention: An established test suite prevents new code from breaking existing features.&lt;/li&gt;
&lt;li&gt;Developer Confidence: Thorough testing boosts developer confidence during development.&lt;/li&gt;
&lt;li&gt;Code Test Coverage: Ensures every line/conditions are tested including error scenarios.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Behavior-Driven Development (BDD)
&lt;/h2&gt;

&lt;p&gt;BDD evolves from TDD, emphasizing collaboration between Developers and Testers and focusing agreement on user behavior. It formalizes requirements as executable specifications using a human-readable language like Gherkin. Gherkin uses keywords like Given, When, Then, And to describe scenarios as shown below:&lt;/p&gt;

&lt;h3&gt;
  
  
  Example BDD Scenario (Gherkin Syntax):
&lt;/h3&gt;

&lt;p&gt;Gherkin&lt;/p&gt;

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

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

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

&lt;h3&gt;
  
  
  BDD Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Define Behavior: Product owners, developers and testers collaborate to describe desired system behaviors in the form of scenarios.&lt;/li&gt;
&lt;li&gt;Automate Scenarios: Scenarios are translated into automated tests using tools like Cucumber.&lt;/li&gt;
&lt;li&gt;Iterative Development: Developers implement features to make the scenarios pass, closely aligning the code with the defined behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World BDD Scenario
&lt;/h3&gt;

&lt;p&gt;Let's consider an e-commerce application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Behavior: A team defines scenarios for adding products to a cart, handling out-of-stock items and applying discounts.&lt;/li&gt;
&lt;li&gt;Automation: The scenarios are converted into tests.&lt;/li&gt;
&lt;li&gt;Development: Developers write code to satisfy the behavior described in the tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Benefits of BDD
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Shared Language: BDD's almost native natural language style bridges the gap between technical and non-technical stakeholders.&lt;/li&gt;
&lt;li&gt;Customer Focus: BDD keeps the emphasis on meeting real customer needs.&lt;/li&gt;
&lt;li&gt;Living Documentation: The scenarios serve as up-to-date documentation that reflects system behavior.&lt;/li&gt;
&lt;li&gt;Early Feedback: Frequent testing enables quick adjustments based on feedback.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Difference between TDD vs. BDD
&lt;/h3&gt;

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

&lt;h2&gt;
  
  
  When to Choose TDD, BDD or Both
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TDD: Ideal for projects with high technical complexity or where the requirements are well understood.&lt;/li&gt;
&lt;li&gt;BDD: Excels in scenarios with strong user-facing aspects or complex business logic.&lt;/li&gt;
&lt;li&gt;Combined: These methodologies work flawlessly together, with TDD addressing the nuts and bolts, while BDD ensures the overall system aligns with user expectations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Success Criteria
&lt;/h2&gt;

&lt;p&gt;A good quality software artifact/component should pass various quality standards defined in a central place like SonarQube ensuring adherence to good software development practices.&lt;/p&gt;

&lt;p&gt;The below-mentioned screenshot shows good coverage and zero code smell as passing criteria achieved via TDD and BDD approach:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;TDD and BDD offer a path towards a more collaborative and user-centered approach to development. Are you ready to take your software to the next level? Consider incorporating these techniques into your next project. Let me know in the comments how these methodologies have transformed your development process!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Newbie's View of Google Cloud Services</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Thu, 21 Mar 2024 02:24:40 +0000</pubDate>
      <link>https://forem.com/d_sourav155/newbies-view-of-google-cloud-services-4l62</link>
      <guid>https://forem.com/d_sourav155/newbies-view-of-google-cloud-services-4l62</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Google Cloud Platform (GCP) provides a massive and ever-expanding toolkit for building, deploying, and managing applications at scale. Understanding these services is essential for any organization or developer exploring cloud-based solutions. Let's delve into GCP's key offerings:&lt;/p&gt;

&lt;h1&gt;
  
  
  Compute Services
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Compute Engine
&lt;/h2&gt;

&lt;p&gt;GCP's Infrastructure-as-a-Service (IaaS). Create and manage your own virtual machines (VMs) with complete control over operating systems, software, and configurations. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Hosting resource-intensive web applications, scientific computations, or custom software deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  App Engine
&lt;/h2&gt;

&lt;p&gt;A platform-as-a-service (PaaS) for building highly scalable web and mobile applications. Supports popular languages like Java, Python, Go, and Node.js.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Rapid development of scalable apps without worrying about underlying infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Google Kubernetes Engine (GKE)
&lt;/h2&gt;

&lt;p&gt;A managed environment for deploying and running containerized applications using Kubernetes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Modern microservices-based architectures, portable and compatible with Kubernetes Services&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Functions
&lt;/h2&gt;

&lt;p&gt;Serverless compute for event-driven code execution. Small code snippets respond to events like file uploads or HTTP requests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Image processing, data pipelines, webhook implementations.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h1&gt;
  
  
  Storage and Database Services
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Cloud Storage
&lt;/h2&gt;

&lt;p&gt;Highly durable object storage for any kind of data – images, videos, backups, archives, and more. Offers different storage classes for frequently-accessed to rarely-accessed data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Centralized data lake for analytics, website content delivery, and disaster recovery archives.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud SQL
&lt;/h2&gt;

&lt;p&gt;Fully managed relational databases for MySQL, PostgreSQL, and SQL Server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Storing structured data for web applications and other transactional systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Bigtable
&lt;/h2&gt;

&lt;p&gt;Scalable NoSQL database ideal for low-latency, high-throughput workloads.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: IoT data, user profile storage, financial time-series analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Firestore
&lt;/h2&gt;

&lt;p&gt;Flexible, document-oriented NoSQL database for app backends.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Storing real-time data for mobile apps, games, or other interactive systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Spanner
&lt;/h2&gt;

&lt;p&gt;Fully managed Relational database structure with Big Data database like performance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Banks, trading platforms, and other financial institutions need transactional consistency, precise data management, and highly available Globally.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Data Store
&lt;/h2&gt;

&lt;p&gt;Highly scalable NoSQL database for your web and mobile applications which supports ACID transitions, SQL-like queries, indexes, etc.&lt;/p&gt;

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

&lt;h1&gt;
  
  
  Networking Services
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Virtual Private Cloud (VPC)
&lt;/h2&gt;

&lt;p&gt;Create logically isolated networks for your GCP resources. Define subnets, firewall rules, and routing to create secure and customized environments.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Isolating different application tiers, and building hybrid cloud setups.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Load Balancing
&lt;/h2&gt;

&lt;p&gt;Distributes traffic among multiple instances for high availability and scalability.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Delivering high-performance websites resilient to traffic spikes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud CDN
&lt;/h2&gt;

&lt;p&gt;Global content delivery network. Caches content closer to users for reduced latency and faster load times.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Faster content delivery for global audiences, especially for websites with static media.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud DNS
&lt;/h2&gt;

&lt;p&gt;Scalable and high-performance Domain Name System(DNS). Designed to provide fast, reliable and secure DNS resolution for your domain name.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Managing Domain Name, Load Balancing, and Traffic Management.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h1&gt;
  
  
  Big Data and Analytics
&lt;/h1&gt;

&lt;h2&gt;
  
  
  BigQuery
&lt;/h2&gt;

&lt;p&gt;A serverless data warehouse for petabyte-scale analytics. SQL-like queries for lightning-fast insights.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Business intelligence, ad-hoc analysis on massive datasets.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pub/Sub
&lt;/h2&gt;

&lt;p&gt;Real-time, scalable messaging service for decoupling applications with asynchronous communication.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Event-driven processing, streaming data ingestion.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dataproc
&lt;/h2&gt;

&lt;p&gt;Managed Apache Hadoop and Spark clusters for big data processing and analysis.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: ETL pipelines, machine learning on large datasets.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dataflow
&lt;/h2&gt;

&lt;p&gt;Fully managed service for batch and stream data processing pipelines. Use Case: Real-time analytics, building complex ETL workflows.&lt;/p&gt;

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

&lt;h1&gt;
  
  
  Machine Learning and AI
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Vertex AI ( Formally AI Platform)
&lt;/h2&gt;

&lt;p&gt;End-to-end platform for building, training, and deploying machine learning models. This suite encompasses several AI services under one umbrella.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Building custom image classification, natural language processing, or recommendation systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Vision AI
&lt;/h2&gt;

&lt;p&gt;Pre-trained models for image analysis tasks like object detection and labeling.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Image tagging, optical character recognition (OCR).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Natural Language
&lt;/h2&gt;

&lt;p&gt;Analyze text for sentiment, entity extraction, and syntax.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Customer feedback analysis, text classification.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud Machine Learning Engine
&lt;/h2&gt;

&lt;p&gt;The core service for building and deploying custom machine learning models.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Image Classification, Recommendation Systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  AI Hub
&lt;/h2&gt;

&lt;p&gt;This is a repository of pre-trained models, datasets, and end-to-end AI pipelines.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Case: Allows you to share your custom models and pipelines for collaboration within your organization.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  TensorFlow Enterprise (TFE)
&lt;/h2&gt;

&lt;p&gt;This is a commercially licensed version of TensorFlow with additional features and support for enterprise environments.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Cases: Offers benefits like extended model lifecycle management, security features, and access to Google's machine learning expertise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dialogflow
&lt;/h2&gt;

&lt;p&gt;This service empowers you to build conversational interfaces like chatbots and virtual assistants.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Cases: Design conversation flows, handle user intent, and integrate with various platforms like websites, mobile apps, and messaging services.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cloud AutoML
&lt;/h2&gt;

&lt;p&gt;This is a boon for developers with little machine-learning expertise. Allows you to train high-quality models for specific tasks like image recognition or text classification without extensive coding&lt;/p&gt;

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

&lt;h1&gt;
  
  
  Real-World GCP Scenarios
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;E-Commerce Website:&lt;/strong&gt; Compute Engine for scalable web servers, Cloud SQL for the product database, Cloud Storage for images, Cloud CDN for asset delivery, and BigQuery for sales analytics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Real-Time Chat Application:&lt;/strong&gt; App Engine for the front end, Firestore for the message database, Pub/Sub for message broadcast, Cloud Functions for user notifications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Petroleum Industries:&lt;/strong&gt; Devices send data to Pub/Sub. Dataflow performs real-time transformations; BigQuery stores data for analysis. Cloud Functions trigger alerts based on data thresholds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Video Streaming Platform:&lt;/strong&gt; Cloud Storage for video files, Cloud CDN (using read-only cache) for global delivery, Cloud Load Balancing for traffic distribution. Use media-specific tools like Cloud Transcoder for format conversions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Game Backend:&lt;/strong&gt; App Engine or GKE for game servers. Firestore or Cloud Spanner (for globally consistent, transactional data) for player data, and leaderboards. BigQuery for analyzing player behavior.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recommendation&lt;/strong&gt; Engine: BigQuery to analyze user behavior and product purchase history. Vertex AI for building machine learning models. Cloud Functions or App Engine to serve personalized recommendations in real-time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Genomic Analysis:&lt;/strong&gt; BigQuery to store and query massive genomic datasets. Dataproc with Hadoop/Spark for running complex analysis pipelines. Use specialized tools like Cloud Life Sciences API for genomic processing.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Important Considerations
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cost:&lt;/strong&gt; Each GCP service has a pricing model. Estimate costs using the GCP pricing calculator ([&lt;a href="https://cloud.google.com/products/calculator%5D"&gt;https://cloud.google.com/products/calculator]&lt;/a&gt;) to avoid surprises.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; Always prioritize security with robust IAM (Identity and Access Management) policies, network firewalls, and encryption best practices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hybrid Cloud:&lt;/strong&gt; GCP's tools like Anthos enable smooth integration between on-premises and cloud environments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  GCPs Advantages
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Global Scalability:&lt;/strong&gt; Leverage GCP's worldwide infrastructure to effortlessly scale applications to millions of users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Innovation:&lt;/strong&gt; GCP is at the forefront of cloud innovation, particularly in AI and machine learning areas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration:&lt;/strong&gt; Many GCP services work seamlessly together, simplifying complex architectures.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;GCP's flexibility and breadth of services open up endless potential solutions for businesses of any size. Whether you're building the next social media app, revolutionizing healthcare analytics, or developing cutting-edge gaming experiences, GCP provides the building blocks needed to bring those ideas to life.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>googlecloud</category>
      <category>devopdigest</category>
      <category>devops</category>
    </item>
    <item>
      <title>Infrastructure as Code with Terraform</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Mon, 26 Feb 2024 15:34:16 +0000</pubDate>
      <link>https://forem.com/d_sourav155/infrastructure-as-code-with-terraform-4deh</link>
      <guid>https://forem.com/d_sourav155/infrastructure-as-code-with-terraform-4deh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Managing information technology (IT) infrastructure across multiple clouds, servers, and environments can quickly become complex and unwieldy. But one of the best ways that enterprises can operate and grow infrastructure at scale is an Infrastructure-as-code (IaC) solution called Terraform. But what is Terraform and how does it work?&lt;/p&gt;

&lt;p&gt;In this article, we’ll dive deep into the Terraform, explaining the basics as well as how it stacks up against other IaC solutions. We’ll also provide background on Terraform’s workflow, feature set, and how best to deploy Terraform within your own IT infrastructure. By the time you’re done, you’ll know how to orchestrate your entire IT ecosystem using Terraform and IaC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure as Code
&lt;/h2&gt;

&lt;p&gt;IaC replaces standard operating procedures and manual effort required for IT resource management with lines of code. Instead of manually configuring cloud nodes or physical hardware, IaC automates the process infrastructure management through source code.&lt;/p&gt;

&lt;p&gt;Here are several of the major key benefits of using an IaC solution like Terraform:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed and Simplicity:&lt;/strong&gt; IaC eliminates manual processes, thereby accelerating the delivery and management lifecycles. IaC makes it possible to spin up an entire infrastructure architecture by simply running a script.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team Collaboration:&lt;/strong&gt; Various team members can collaborate on IaC software in the same way they would with regular application code through tools like Github. Code can be easily linked to issue-tracking systems for future use and reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error Reduction:&lt;/strong&gt; IaC minimizes the probability of errors or deviations when provisioning your infrastructure. The code completely standardizes your setup, allowing applications to run smoothly and error-free without the constant need for admin oversight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disaster Recovery:&lt;/strong&gt; With IaC you can actually recover from disasters more rapidly. Because manually constructed infrastructure needs to be manually rebuilt. But with IaC, you can usually just re-run scripts and have the same software provisioned again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhanced Security:&lt;/strong&gt; IaC relies on automation that removes many security risks associated with human error. When an IaC-based solution is installed correctly, the overall security of your computing architecture and associated data improves massively.&lt;/p&gt;

&lt;p&gt;While there are many other benefits of employing IaC, things like speed, accuracy, data visibility, and security are key reasons that organizations choose to implement solutions like Terraform.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Terraform
&lt;/h2&gt;

&lt;p&gt;Terraform is an Iac (Infrastructure as Code) tool, primarily used by DevOps teams to automate various infrastructure tasks. The provisioning of cloud resources, for instance, is one of the main use cases of Terraform. It’s a cloud-agnostic, open-source provisioning tool written in the Go language and created by HashiCorp.&lt;/p&gt;

&lt;p&gt;Terraform allows you to describe your complete infrastructure in the form of code. Even if your servers come from different providers such as AWS, Azure, or GCP, Terraform helps you build and manage these resources in parallel across providers. Think of Terraform as connective tissue and a common language that you can utilize to manage your entire IT stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is terraform used for
&lt;/h2&gt;

&lt;p&gt;One of the main functions of Terraform is for public cloud provisioning on one of the major providers. Providing an IaC for services such as AWS and Azure has -- and will continue to be -- the main focus of Terraform. Terraform enables the use of these public clouds via a provider, a plugin that wraps existing APIs and languages and creates Terraform syntax.&lt;/p&gt;

&lt;p&gt;The second main use for Terraform is to facilitate multi-cloud deployments. One of the main draws of Terraform is that it performs across all cloud providers simultaneously, unlike some of its other IaC competitors. The capability to deploy resources to multiple cloud providers is critical because engineers can utilize the same syntax without familiarizing themselves with multiple tools and technologies.&lt;/p&gt;

&lt;p&gt;The most common use of Terraform is deploying, managing, and orchestrating resources with custom cloud providers. A provider is a way in Terraform to wrap an existing API and convert it to the Terraform declarative syntax, and this can be done even if you’re not using GCP or another one of the major cloud services. Providers can also be written for internal use cases where you may desire to convert existing tools or APIs into Terraform.&lt;/p&gt;

&lt;p&gt;In short, Terraform helps manage your entire IT ecosystem via IaC, whether it’s a single cloud, multi-cloud, or custom deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does Terraform work
&lt;/h2&gt;

&lt;p&gt;Terraform lets you define and manage your entire infrastructure via configuration files and version control. It accomplishes this by using the two main components of Terraform architecture: Core and Providers.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Terraform Core Works
&lt;/h3&gt;

&lt;p&gt;To do its job, Terraform core uses two input sources. The first is the source input that the user configures into Terraform, defining what resources need to be created or provisioned. The second input source consists of data feeds into Terraform about what the current infrastructure setup looks like. Terraform then takes these inputs and determines what actions need to be taken. It takes the user-specified desired state, compares it with the current state, and configures the architecture in a way that closes the gaps. Terraform Core essentially figures out what needs to be created, updated, or deleted to fully provision your infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Terraform Providers Work
&lt;/h3&gt;

&lt;p&gt;The second key component that makes Terraform go are providers for specific technologies. This is typically cloud providers like GCP or Azure but can be any other infrastructure or platform as a service tool. Kubernetes, for instance, would also be considered a provider that Terraform utilizes.&lt;/p&gt;

&lt;p&gt;Terraform has more than one hundred providers for various technologies, granting users access to its resources. If you’re using AWS, for instance, Terraform will also have access to EC2 instances and other resources within the tech stack. You can then create infrastructure on different levels, stacking Kubernetes on top of Azure, for example.&lt;/p&gt;

&lt;p&gt;This is how Terraform works, using both Core and Provider functionality to complete your application and infrastructure setup quickly and using only code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terraform vs Competitors
&lt;/h2&gt;

&lt;p&gt;There are alternatives on the IaC market, each with its own advantages and drawbacks when stacked up against Terraform. Here are a few of the other major IaC tools on the market and how they compare with Terraform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Terraform vs. Pulumi
&lt;/h3&gt;

&lt;p&gt;Pulumi is a popular open-source IaC tool that can be used to design, deploy, and manage cloud infrastructure resources. As opposed to Terraform, Pulumi doesn’t use a domain-specific software language, allowing users to deploy in GO, .NET, JavaScript, and others. And while Terraform follows strict coding guidelines, Pulumi does not, making it a bit more flexible in certain scenarios. However, Pulumi’s community is substantially smaller than Terraform’s, meaning there is less documentation available. While there are some flexibility benefits to Pulumi, Terraform is generally superior the larger the scope of deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terraform Workflow
&lt;/h2&gt;

&lt;p&gt;The Terraform workflow consists of the following three steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Step 1: Write&lt;br&gt;
In this first step in the Terraform workflow, you’ll declare your infrastructure resources as code using the Hashicorp Configuration Language (HCL).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 2: Review&lt;br&gt;
Terraform will then display its plan to either add or remove resources predicated upon the comparison of your declared infrastructure and the current state of existing resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 3: Apply&lt;br&gt;
Finally, you can accept planned changes to add or remove any infrastructure resources. Your infrastructure will then be ready to be fully deployed with the help of Terraform.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Deploying, managing, and orchestrating multi-cloud environments can be a huge challenge for DevOps teams. But coordinating between different service providers and technologies like GCP, AWS, and Azure Virtual Networks can be much easier and less time-consuming with Terraform infrastructure-as-code. Terraform is platform-agnostic and works with just about any cloud or data service provider.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SDKMAN! The Software Development Kit Manager</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Mon, 05 Feb 2024 11:55:15 +0000</pubDate>
      <link>https://forem.com/d_sourav155/sdkman-the-software-development-kit-manager-1efj</link>
      <guid>https://forem.com/d_sourav155/sdkman-the-software-development-kit-manager-1efj</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://sdkman.io/"&gt;SDKMAN.io&lt;/a&gt;, short for &lt;strong&gt;Software Development Kit Manager&lt;/strong&gt;, is a command-line tool designed to simplify the installation, management, and use of various java based SDK tools and services easily. Originally focused on the Java ecosystem, SDKMAN.io has expanded its support to include languages such as Kotlin, Scala, Groovy, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of SDKMAN:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Increases Productivity &lt;/li&gt;
&lt;li&gt;Faster and Easier to maintain different versions.&lt;/li&gt;
&lt;li&gt;Changes the version of your home server rather than changing the version of all other users in a global server working together. &lt;/li&gt;
&lt;li&gt;Automates managing and switching between different versions. &lt;/li&gt;
&lt;li&gt;You control what you own and don't disturb others on a global server.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Launch a terminal and type in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ curl -s "https://get.sdkman.io" | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation, Open a new terminal and type in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ source "$HOME/.sdkman/bin/sdkman-init.sh"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lastly, you can run the following to confirm the installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Using SDKMAN
&lt;/h2&gt;

&lt;p&gt;SDKMAN will allow you to install a lot of different programs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Listing all options to install&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk ls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Installing Java&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk install java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Find a specific version:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk ls java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Install a specific version based on the identifier from the list:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk install java 11.0.12-open
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using a specific version:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk use java 11.0.12-open
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Default a specific version:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk default java 11.0.12-open
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;To update SDKMAN:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt; All of the above commands will work for the other programs available such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gradle&lt;/li&gt;
&lt;li&gt;maven&lt;/li&gt;
&lt;li&gt;groovy&lt;/li&gt;
&lt;li&gt;kotlin&lt;/li&gt;
&lt;li&gt;spark&lt;/li&gt;
&lt;li&gt;springboot&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting help
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sdk help
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In a nutshell, SDKMAN.io is a game-changer for developers. It makes handling different programming languages a breeze, saves time, and ensures a smooth experience across various operating systems. Whether you're a seasoned pro or a beginner, incorporating SDKMAN.io into your toolbox can make your development journey much simpler. So, dive in, explore SDKMAN.io, and enjoy a hassle-free way to manage your software development kits&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Jenkins 101: A Comprehensive Guide to Continuous Integration and Deployment : Part 1</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Sat, 04 Mar 2023 15:07:28 +0000</pubDate>
      <link>https://forem.com/d_sourav155/jenkins-101-a-comprehensive-guide-to-continuous-integration-and-deployment-part-1-3e17</link>
      <guid>https://forem.com/d_sourav155/jenkins-101-a-comprehensive-guide-to-continuous-integration-and-deployment-part-1-3e17</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Jenkins is an open-source automation server. It helps automate the parts of software development related to building, testing, and deploying, facilitating continuous integration and continuous delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is CI/CD?
&lt;/h2&gt;

&lt;p&gt;Continuous integration and continuous deployment/delivery is a way to take code, package it up and deploy it to a system. That system could be serverless(lambda function/azure function ) or could be a virtual machine or an EC2 instance, or could be some container running somewhere with docker, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Continuous Integration (CI)
&lt;/h2&gt;

&lt;p&gt;In layman's terms, it is a process of you taking the code and packaging it up and then giving it up to the CD process.&lt;/p&gt;

&lt;p&gt;e.g. IKEA - If we order some furniture from IKEA, they first assemble all the components, package them up and then deliver them to our houses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key pieces of CI
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cloning the GitHub repository&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Running all the tests&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run any type of security checks&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Continuous Delivery/Deployment (CD)
&lt;/h2&gt;

&lt;p&gt;In layman's terms, CD is a process where you deploy the code to some system, and that system could be serverless, container, virtual machine, etc. It could be even bare metal, it does not need to be on the cloud.&lt;/p&gt;

&lt;p&gt;Once the code is packaged and tested in the CI process, you then deliver it to any of the systems you are running on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Difference between Continuous Delivery and Continuous Deployment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In &lt;strong&gt;Continuous Delivery&lt;/strong&gt;, there is a manual intervention. We have to manually click a button to deploy the code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In &lt;strong&gt;Continuous Deployment&lt;/strong&gt;, there is no manual intervention. We do not have to do anything manually to deploy the code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key pieces of CD
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It authenticates you to the system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It ensures that the code that's being deployed is working as desired by running the tests against the system&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Jenkins?
&lt;/h2&gt;

&lt;p&gt;There are 4 main reasons to prefer Jenkins for CI/CD:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open Source&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;1000+ Plugins&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Completely Free&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enterprise option available&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What are plugins?
&lt;/h2&gt;

&lt;p&gt;Plugins allow you to connect to other services.&lt;/p&gt;

&lt;p&gt;e.g. If you want to connect Jenkins to Azure (Azure plugin required), Jenkins to AWS (AWS plugin required), etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where to find plugins:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Manage Jenkins&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manage Plugins&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update/Available/Installed/Advanced&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, Jenkins is a powerful open-source automation server that streamlines software development processes by facilitating continuous integration and continuous delivery/deployment. With its robust features, flexible plugin architecture, and strong community support, Jenkins has become a popular choice for DevOps teams worldwide. Whether you're a beginner or an experienced developer, mastering Jenkins can help you take your software development to the next level, enabling you to build, test, and deploy applications with confidence and ease. So why wait? Start exploring Jenkins today and unlock the full potential of your CI/CD pipeline!&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://kodekloud.com/courses/jenkins/?utm_medium=aff-dsorav75&amp;amp;utm_content=%2F&amp;amp;utm_source=dsourav155.hashnode.dev" rel="noopener noreferrer"&gt;Kodekloud&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;It has one of the best Jenkins courses. In this course, you will learn with demos at each step for better visualization of the concepts about what CI/CD is, why we should use Jenkins, how to create pipelines, use of different plugins, Jenkins security and much more along with the hands-on practice for these concepts to give you a solid foundation of Jenkins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://discord.com/invite/kaGtk5ASgr" rel="noopener noreferrer"&gt;Civitas&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;It is an open-source community dedicated to helping beginners and newcomers in the tech industry. Its focus is on providing valuable resources such as YouTube videos, handwritten notes, and appropriate links to help individuals learn and grow in their respective fields. In addition to resources, they also offer live doubt-solving sessions and private classes for selective students at no cost.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>saas</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Revolutionize Your DevOps with ChatGPT: Boost Productivity and Streamline Tasks</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Wed, 01 Mar 2023 17:39:23 +0000</pubDate>
      <link>https://forem.com/d_sourav155/revolutionize-your-devops-with-chatgpt-boost-productivity-and-streamline-tasks-2n6o</link>
      <guid>https://forem.com/d_sourav155/revolutionize-your-devops-with-chatgpt-boost-productivity-and-streamline-tasks-2n6o</guid>
      <description>&lt;p&gt;The world of technology is constantly evolving and improving, and one of the latest advancements is the development of large language models such as ChatGPT. If you're in the DevOps industry, this is something you should pay attention to. In this blog post, we'll explore what ChatGPT is and how it can help you increase your DevOps productivity tasks.&lt;/p&gt;

&lt;p&gt;What is ChatGPT?&lt;/p&gt;

&lt;p&gt;ChatGPT is a powerful language model developed by OpenAI. It uses deep learning algorithms and has been trained on vast amounts of text data to understand and generate human-like responses to various inputs. This technology has become popular in recent years and is now being used in various industries to automate routine tasks, answer questions, and even generate creative content.&lt;/p&gt;

&lt;p&gt;How can ChatGPT increase DevOps productivity?&lt;/p&gt;

&lt;p&gt;DevOps is a crucial aspect of software development, as it deals with the deployment, management, and monitoring of applications. Given the criticality of these tasks, DevOps teams need to be highly productive and efficient to deliver quality software. ChatGPT can help in several ways:&lt;/p&gt;

&lt;p&gt;Automation of routine tasks: ChatGPT can automate various routine tasks such as generating reports, sending reminders, and updating databases, freeing up time for DevOps teams to focus on more important tasks. For example, ChatGPT can be used to generate daily reports on the status of deployed applications, etc.&lt;/p&gt;

&lt;p&gt;Quick resolution of queries: ChatGPT can be integrated with the chat application and used as a virtual assistant to quickly resolve common queries, reducing the time DevOps teams spend on handling support requests. For example, ChatGPT can be used to answer common questions about deployment, etc.&lt;/p&gt;

&lt;p&gt;Streamlining workflows: ChatGPT can be used to automate workflows, streamline processes, and reduce the time and effort required to complete tasks. For example, ChatGPT can be used to automate the deployment process, etc.&lt;/p&gt;

&lt;p&gt;Improved collaboration: By integrating ChatGPT with collaboration tools, DevOps teams can easily access and share information, improving overall collaboration and communication within the team. For example, ChatGPT can be used to share deployment status updates with the entire team, improving collaboration and communication.&lt;/p&gt;

&lt;p&gt;Increased efficiency: With the help of ChatGPT, DevOps teams can complete tasks faster and more effectively, reducing errors and improving overall productivity.&lt;/p&gt;

&lt;p&gt;Some amazing examples and demos:&lt;/p&gt;

&lt;p&gt;Write a Dockerfile for a Django application&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%2Foklvigz1brb3akw4gerd.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%2Foklvigz1brb3akw4gerd.png" alt=" " width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Explain in detail what the WORKDIR directive means in the Dockerfile&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%2Ffelccwzlrt32sy18bxn9.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%2Ffelccwzlrt32sy18bxn9.png" alt=" " width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How to create CI/CD pipeline&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%2F169ku4upkbgc99il1gu4.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%2F169ku4upkbgc99il1gu4.png" alt=" " width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;/p&gt;

&lt;p&gt;In conclusion, ChatGPT has the potential to revolutionize the DevOps industry by increasing productivity and streamlining processes. If you're a DevOps professional, it's worth exploring how ChatGPT can help you and your team achieve greater success.&lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Mastering DevOps: The key to Faster, More Reliable Software Development</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Thu, 05 Jan 2023 05:52:22 +0000</pubDate>
      <link>https://forem.com/d_sourav155/mastering-devops-the-key-to-faster-more-reliable-software-development-45cp</link>
      <guid>https://forem.com/d_sourav155/mastering-devops-the-key-to-faster-more-reliable-software-development-45cp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;DevOps is a software development approach that aims to improve collaboration and communication between development and operation teams. It is designed to increase efficiency, speed up the software development process, and improve the reliability and stability of the software.&lt;/p&gt;

&lt;p&gt;DevOps originated in the early 2000s as a response to the challenges faced by organizations in the fast-paced world of software development. With the rise of agile methodologies and the increasing importance of software in businesses, organizations needed a way to deliver software updates and new features quickly and reliably. DevOps emerged as a way to bridge the gap in the development process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we use DevOps
&lt;/h2&gt;

&lt;p&gt;There are several reasons why organizations use DevOps. One of the main reasons is to increase efficiency and speed up the software development process. By bringing development and operations teams together, organizations can eliminate silos and streamline workflow. This allows them to quickly identify and resolve issues, leading to faster delivery of software updates and new features.&lt;/p&gt;

&lt;p&gt;Another important reason to use DevOps is to improve the reliability and stability of the software. By automating the build, test, and deployment processes, organizations can reduce the risk of errors and downtime. This is especially important for mission-critical systems that need to be available 24/7.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key features of DevOps
&lt;/h2&gt;

&lt;p&gt;Some key features of DevOps include continuous integration, continuous delivery, and continuous deployment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Continuous integration involves regularly merging code changes into a central repository, where they are automatically built and tested. This allows the team to detect and fix issues early in the development process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous delivery involves the automated release of software updates to staging environments, where they can be tested by QA teams before being deployed to production. This allows the team to quickly and safely roll out new features and updates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous deployment takes this one step further by automatically releasing updates to production as soon as they pass testing. This allows the teams to rapidly roll out new features and updates without the need for manual intervention.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Benefits of using DevOps
&lt;/h2&gt;

&lt;p&gt;There are several benefits to using DevOps. One of the most significant is increased agility and flexibility. By automating the build, test, and deployment processes, teams can respond quickly to changing business needs and customer demands. This allows them to rapidly roll out new features and updates, giving them a competitive edge in the market.&lt;/p&gt;

&lt;p&gt;Another benefit of DevOps is improved collaboration and communication between teams. By bringing development and operations teams together, teams can share knowledge and ideas, leading to better-quality software. This is especially important in large organizations where teams are often siloed and isolated from one another.&lt;/p&gt;

&lt;p&gt;Finally, DevOps can lead to cost savings by reducing the time and resources required to develop and deploy software. By automating manual processes and streamlining the workflow, teams can reduce the number of errors and the need for manual intervention, which can save time and money.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use DevOps
&lt;/h2&gt;

&lt;p&gt;DevOps is not a one-size-fits-all solution and may not be the best approach for every organization. However, it can be especially useful in situations where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There is a need to deliver software updates and new features quickly and reliably&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There is a need to improve collaboration and communication between development and operations teams&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There is a need to increase agility and flexibility in the software development process&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There is no need to reduce the time and resources required to develop and deploy software&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to learn about DevOps
&lt;/h2&gt;

&lt;p&gt;If you’re interested in learning more about DevOps, there are several resources available. One option is to take an online course or attend a workshop. There are also a number of books and articles available on the subject.&lt;/p&gt;

&lt;p&gt;Here are some recommendations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kodekloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kodekloud is an online platform that provides hands-on training and certification in the field of DevOps. It offers a variety of courses and challenges designed to help IT professionals or absolute beginners acquire practical skills and knowledge in areas such as cloud computing, Linux administration, networking, and automation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Civitas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is an open-source community dedicated to helping beginners and newcomers in the tech industry. Our focus is on providing valuable resources such as YouTube videos, handwritten notes, and appropriate links to help individuals learn and grow in their respective fields. In addition to resources, they also offer live doubt-solving sessions and private classes for selective students at no cost.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kunal Kushwaha&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kunal Kushwaha is a well-known figure in the DevOps community. He is a certified DevOps engineer and trainer. He is known for his expertise in a wide range of DevOps technologies and practices, including cloud computing, continuous integration and delivery, containerization, and automation. He is an active member of the DevOps community and teaches about DevOps technologies on his YouTube channel you can check that out.&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>Bash Scripting Tutorial – A complete beginner guide (2022)</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Tue, 22 Nov 2022 03:26:48 +0000</pubDate>
      <link>https://forem.com/d_sourav155/bash-scripting-tutorial-a-complete-beginner-guide-2022-2hda</link>
      <guid>https://forem.com/d_sourav155/bash-scripting-tutorial-a-complete-beginner-guide-2022-2hda</guid>
      <description>&lt;p&gt;If you’re looking to automate tedious tasks or are simply curious about scripting languages, shell scripting is a powerful tool that can make your life as a developer much easier. In this blog, we’ll cover the basics of shell scripting and how you can use it to streamline your workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Shell Scripting?
&lt;/h2&gt;

&lt;p&gt;Shell scripting or Bash Scripting is a computer programming technique that is used to automate the repetitive and tedious tasks that are commonly performed by users of Unix-based operating systems. The term “shell scripting” can refer to either the Bourne shell, the C, or the Korn shell, which are all Unix shells.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do we use Shell Scripting?
&lt;/h2&gt;

&lt;p&gt;Shell scripts are an extremely powerful tool that can be used to automate a wide variety of tasks. For example, shell scripts can be used to automate system administration, application installation, and data processing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Things to keep in mind when writing shell scripts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The shell is a powerful tool and can be dangerous if used incorrectly. It is important to understand the shell and know how to use it before attempting to write shell scripts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shell scripts are interpreted, not compiled. This means that the shell will execute the commands in the script as they are read. If there are errors in the script, the shell will stop executing the script and print an error message.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shell scripts are case-sensitive. This means that the commands in the script must be typed in exactly as they are written in the script.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shell scripts can be executed from the command line or they can be executed from a file. To execute a shell script from the command line, type the name of the script and press enter. To execute a shell script from a file, type “sh filename” where the filename is the name of the file containing the script.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How is shell scripting different from programming language?
&lt;/h2&gt;

&lt;p&gt;While shell scripting is technically a programming language, it is significantly different from traditional programming languages. Shell scripting is primarily focused on automating tasks and providing an easy-to-use interface for common system administration tasks. In contrast, traditional programming languages are designed to be general-purpose and can be used for a wide variety of tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some useful resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Video Tutorials
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=GtovwKDemnI&amp;amp;feature=youtu.be" rel="noopener noreferrer"&gt;Shell Scripting Tutorial | Shell Scripting Crash Course | Linux Certification Training | Edureka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It covers essential concepts such as using variables, basic operators, loops &amp;amp; functions. It also enables you to predict how certain real-time scenarios would develop using a virtual machine as a guide.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PL7B7FA4E693D8E790" rel="noopener noreferrer"&gt;Shell Scripting Tutorials | Simplified&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll find tutorials on UNIX/Linux Shell Programming in the playlist. The tutorials are specially designed to benefit beginners.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLlfy9GnSVerQr-Se9JRE_tZJk3OUoHCkh" rel="noopener noreferrer"&gt;Linux For DevOps Engineer | TrainWithShubham&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the playlist, you’ll be learning some Linux commands and shell scripting in an easy manner with some real-time scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  Documentations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.tutorialspoint.com/unix/shell_scripting.htm" rel="noopener noreferrer"&gt;Shell Scripting Tutorial | tutorialspoint&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.javatpoint.com/shell-scripting-tutorial" rel="noopener noreferrer"&gt;Shell Scripting Tutorial | Javatpoint&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.shellscript.sh/" rel="noopener noreferrer"&gt;Shell Scripting Tutorial | shellscript.sh&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Online Courses
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/training/modules/script-with-powershell/" rel="noopener noreferrer"&gt;Introduction to scripting in PowerShell | Microsoft&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This module introduces you to scripting with PowerShell. This article introduces various concepts that can help you create script files that are robust and effective. It covers topics such as modularization, error handling, and input validation. By understanding these concepts, you can create script files that are more likely to work correctly and avoid potential problems.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/shell-scripting-i/" rel="noopener noreferrer"&gt;Shell Scripting | Udemy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this course, you’ll learn UNIX Bash scripting or shell scripting from scratch using simple examples&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/hands-on-introduction-to-linux-commands-and-shell-scripting" rel="noopener noreferrer"&gt;Hands-on Introduction to Linux Commands and Shell Scripting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This course provides an introduction to Linux and commonly used Linux / UNIX shell commands.&lt;br&gt;
Bash shell scripting is a great way to automate a variety of tasks. This course will teach you the basics of Bash so that you can get started quickly and easily.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;After reading this blog, we can see that shell scripting is a powerful tool that can help us automate many tasks. We can use shell scripts to perform tasks such as file manipulation, text processing, and system administration. We can also use shell scripts to create our own custom commands.&lt;/p&gt;

</description>
      <category>css</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Install Jenkins,Git,Docker on Amazon EC2 Instance</title>
      <dc:creator>Sourav Dhiman</dc:creator>
      <pubDate>Sun, 13 Nov 2022 01:49:41 +0000</pubDate>
      <link>https://forem.com/d_sourav155/how-to-install-jenkinsgitdocker-on-amazon-ec2-instance-b00</link>
      <guid>https://forem.com/d_sourav155/how-to-install-jenkinsgitdocker-on-amazon-ec2-instance-b00</guid>
      <description>&lt;p&gt;In this part, I will show how to install and launch Jenkins,Git,Docker on a AWS EC2 instance.&lt;/p&gt;

&lt;p&gt;Let's get start with Jenkins&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Jenkins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create Ubuntu 18.04 EC2 Instance. Once you logged in to your AWS account and accessed your Ubuntu Server 18.04 LTS instance you can follow the below steps to install Jenkins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update Ubuntu Server Before installing Jenkins you have to update software packages on Ubuntu server for that use below commands.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo apt-get update -y&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add Repository Key You have to add Jenkins repository into Ubuntu server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C1qhwN47--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/of9mxrsff4vpq8ktcdu8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C1qhwN47--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/of9mxrsff4vpq8ktcdu8.png" alt="Image description" width="880" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add Package Repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ &amp;gt; /etc/apt/sources.list.d/jenkins.list'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_hdDhiF2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iy8zaz6tyefzff9lnn7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_hdDhiF2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iy8zaz6tyefzff9lnn7o.png" alt="Image description" width="880" height="67"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now, to update the server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Jenkins Dependencies We first have to install java&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo apt install default-jre -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m11KoxQE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e4ec2lanmah7ua5r22if.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m11KoxQE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e4ec2lanmah7ua5r22if.png" alt="Image description" width="880" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt install jenkins -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HFnyBCF9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uhwu62fzvxx4yl89o4ia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HFnyBCF9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uhwu62fzvxx4yl89o4ia.png" alt="Image description" width="880" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;And Jenkins installation completed you have to start Jenkins service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl start jenkins&lt;br&gt;
sudo systemctl status jenkins&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ODj7lJgt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rhf82edak12oi9ipzw9e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ODj7lJgt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rhf82edak12oi9ipzw9e.png" alt="Image description" width="880" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allow Jenkins Port On Ubuntu Firewall By default Ubuntu server has firewall installed and we have to allow Jenkins port 8080 from firewall so that we can access Jenkins.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo ufw allow 8080&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tWS6DB8P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ab3okkgt6rssxhpbg3oo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tWS6DB8P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ab3okkgt6rssxhpbg3oo.png" alt="Image description" width="880" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the Ubuntu machine firewall is not enabled, you can use the commands below to check it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo ufw status&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If your Ubuntu firewall is inactive use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo ufw allow OpenSSH &lt;br&gt;
sudo ufw enable&lt;br&gt;
sudo ufw status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c7lks5iW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrgxghpexzkoochmvrs8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c7lks5iW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrgxghpexzkoochmvrs8.png" alt="Image description" width="880" height="122"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BYte0n2h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f999559crrl87vwrw3sj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BYte0n2h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f999559crrl87vwrw3sj.png" alt="Image description" width="880" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting Up Your Jenkins Now to access Jenkins from web browser you must also allow Jenkins port 8080 in AWS security group and after that you will be able to access Jenkins. So go to your AWS account-Security group and add port 8080.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As a last part, pen web browser and type your AWS Ec2 Ubuntu instance public IP address with 8080 port.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pBGSzrhx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3ot61jumfgrq432xiab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pBGSzrhx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3ot61jumfgrq432xiab.png" alt="Image description" width="880" height="727"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As per the instructions in the screenshot above, you need to get the default admin password from the given path, so on your Ubuntu machine you would issue the following command to get it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo cat /var/lib/jenkins/secrets/initialAdminPassword&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--03n2EQmn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9s5kd929ub5u7qhobgzk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--03n2EQmn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9s5kd929ub5u7qhobgzk.png" alt="Image description" width="880" height="60"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You will get the following output and this is the default admin password to login to Jenkins copy this and use it in web browser for Jenkins login.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When you login to Jenkins with default admin password, it will present two options and this is recommended plugins and choose plugins to install. We recommend clicking on the suggested plugins and jenkins will take care of the plugin installations.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--apcQ_GSs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmnivk95wly9k67fzoie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--apcQ_GSs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmnivk95wly9k67fzoie.png" alt="Image description" width="880" height="711"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The plugins will take some time to install and once all plugins are installed Jenkins will ask you to create your Admin user account. Next, fill in your desired admin user details and set Jenkins admin credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ir4cbhzA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avx6rcx7ufsqzfxg87fq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ir4cbhzA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avx6rcx7ufsqzfxg87fq.png" alt="Image description" width="880" height="714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Save and Finish after setting your Jenkins access url and other information. Finally you will get a confirmation page and it will be "Jenkins Ready".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--If_K1Y5e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h8wzt81gpp7mm8y13t1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--If_K1Y5e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h8wzt81gpp7mm8y13t1a.png" alt="Image description" width="880" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zCCEEYfo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tuz1x5onql2rb3f78zh4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zCCEEYfo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tuz1x5onql2rb3f78zh4.png" alt="Image description" width="880" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Git
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Update Ubuntu Server Before installing Git you have to update software packages on Ubuntu server for that use below commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo apt-get update -y&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Jenkins Dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo apt install git -y&lt;br&gt;
git --version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_-2dcSwf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ywkeo2jxurg8nxpm8g3z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_-2dcSwf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ywkeo2jxurg8nxpm8g3z.png" alt="Image description" width="880" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MJkHi6bu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ggmlvjb5wp42632mtjp8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MJkHi6bu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ggmlvjb5wp42632mtjp8.png" alt="Image description" width="710" height="68"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Docker?
&lt;/h3&gt;

&lt;p&gt;Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Docker
&lt;/h2&gt;

&lt;p&gt;Running Docker on AWS provides administrators and developers a highly reliable, cost-effective way to build, ship, and run distributed applications. Docker can be installed on many different operating systems, including Linux distributions like Ubuntu and even Mac OSX and Windows.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt-get update&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt install docker.io&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HUoNjO5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arefvxlv0pyks80iq0gq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HUoNjO5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arefvxlv0pyks80iq0gq.png" alt="Image description" width="880" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;service docker.io start&lt;br&gt;
service docker.io status&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic Commands for Docker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo docker info&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rD2dqUqs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yz796z6njiuemy35qff0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rD2dqUqs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yz796z6njiuemy35qff0.png" alt="Image description" width="880" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo docker images&lt;br&gt;
sudo docker ps&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DT8nW9Mn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p86118ct75eanjxy8es4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DT8nW9Mn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p86118ct75eanjxy8es4.png" alt="Image description" width="880" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Run Docker Image: By default, docker pulls the images from a Docker registry called Docker Hub managed by Docker company. To confirm whether you can download the images from Docker Hub:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo docker run hello-world&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aSjvZEs3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v87niirivmb0fl40i46i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aSjvZEs3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v87niirivmb0fl40i46i.png" alt="Image description" width="880" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
