<?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: Arun Kumar Palani</title>
    <description>The latest articles on Forem by Arun Kumar Palani (@arunkumar2331996).</description>
    <link>https://forem.com/arunkumar2331996</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%2F933140%2F398a475a-4727-4373-95c1-01ea1466696c.jpg</url>
      <title>Forem: Arun Kumar Palani</title>
      <link>https://forem.com/arunkumar2331996</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/arunkumar2331996"/>
    <language>en</language>
    <item>
      <title>Memory leaks in C#</title>
      <dc:creator>Arun Kumar Palani</dc:creator>
      <pubDate>Mon, 24 Apr 2023 09:21:32 +0000</pubDate>
      <link>https://forem.com/arunkumar2331996/memory-leaks-in-c-3koj</link>
      <guid>https://forem.com/arunkumar2331996/memory-leaks-in-c-3koj</guid>
      <description>&lt;p&gt;Hi, I am Arun Kumar Palani, Senior software engineer in Luxoft &amp;amp; Microsoft certified solution Architect - Associate level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is memory leak?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A memory leak in C# happens when an application repeatedly allocates memory but neglects to release it even after the memory has served its purpose. As a result, the application gradually uses more memory over time, which may finally result in the application crashing or ceasing to function. Programming mistakes include failing to deallocate objects that are no longer required or keeping references around for longer than necessary can result in memory leaks. Circular object references, improper usage of data structures like lists and dictionaries, and improper handling of exceptions are just a few causes of these mistakes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Various memory leaks situations.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Usage of static objects.&lt;/li&gt;
&lt;li&gt;A long running thread.&lt;/li&gt;
&lt;li&gt;Manually implementation of IDisposable pattern.&lt;/li&gt;
&lt;li&gt;Usage of unmanaged objects.&lt;/li&gt;
&lt;li&gt;Caching.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Let's discuss one by one in detail.&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;u&gt;1. Usage of static objects:&lt;/u&gt;&lt;/strong&gt; When we use static class, variables will be available throughout the application life cycle. We need to be very careful when we are using static variable/classes. This is due to the garbage collector not collecting static objects and everything they reference. Don't use static keywords if it is not necessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2. A long running thread:&lt;/u&gt;&lt;/strong&gt; If we work on long running or infinite looping conditions the thread will hold the object for a long time. If the object is being held for a long time GC will think that the object is in use and won’t clean up the memory. But it’s not because of the infinite looping, we should be very careful on writing such cases in programming.&lt;br&gt;
Always set a exit condition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;3. Caching:&lt;/u&gt;&lt;/strong&gt; It is a very good strategy to improve the application performance. But if we are using caching in all areas of the application that will lead to over caching and will end up with the out of memory. It is always good to cache only the frequently used objects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;4. Usage of unmanaged objects:&lt;/u&gt;&lt;/strong&gt; Handling OS file system is the one of the best examples of unmanaged objects. If we are going to use a file system, we should properly dispose of all the objects once the work is done. Otherwise, because they are not cleaned up by the GC, these will result in a memory leak.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;5. Manually implementation of IDisposable pattern:&lt;/u&gt;&lt;/strong&gt; Always use the Dispose function on a class that implements the IDisposable interface. Otherwise, a memory leak may occur. The "using" sentence, which calls the dispose method for each condition, is the best approach to accomplish this. If you are unable to use the "using" statement, remember to do it manually and to suppress the finalize method as it is not required.&lt;/p&gt;

&lt;p&gt;GC.SuppressFinalize();&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Why suppress the finalize method?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If we are using IDisposable interface, we are manually going to clean the object using Dispose method. Finalize is the automatic memory management method called by garbage collector to remove the unused objects.&lt;/p&gt;

&lt;p&gt;If you're facing memory leak problem in your application and how did you resolved, it? Please comment below.&lt;/p&gt;

</description>
      <category>developer</category>
      <category>dotnet</category>
      <category>programming</category>
    </item>
    <item>
      <title>Azure Virtual machine &amp; AWS EC2 Instance</title>
      <dc:creator>Arun Kumar Palani</dc:creator>
      <pubDate>Tue, 11 Apr 2023 14:30:18 +0000</pubDate>
      <link>https://forem.com/arunkumar2331996/azure-virtual-machine-aws-ec2-instance-39b8</link>
      <guid>https://forem.com/arunkumar2331996/azure-virtual-machine-aws-ec2-instance-39b8</guid>
      <description>&lt;p&gt;Hi, I am Arun Kumar Palani, Senior software engineer in Luxoft &amp;amp; Microsoft certified solution Architect - Associate level.&lt;/p&gt;

&lt;p&gt;Note: This article provides detailed idea about how IAAS provides virtual machines and enable entire control to organization to set up their own security implementation and configuration. The audience require some knowledge about cloud IAAS. If not, no problem I'll give some idea about IAAS in introduction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Introduction:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;IAAS:&lt;/u&gt;&lt;/strong&gt; It is a method for providing computing infrastructure as on-demand services. It is one of the three essential models for cloud services. In a fully outsourced, on-demand service model, the user purchases servers, software data centers, or network equipment and rents those resources. The resources are distributed as services, and it supports dynamic scalability. On a single piece of hardware, numerous users are typically supported.&lt;/p&gt;

&lt;p&gt;In this article, I will explain step by step how to create an AWS EC2 instance in AWS portal and Azure virtual machine in Azure portal and its usage, advantages, disadvantages, and how to deploy a .NET application in an AWS EC2 instance and Azure virtual machine in detail from portal also through CLI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;AWS EC2 instance:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon EC2 or Elastic Compute Cloud is an AWS service that offers highly scalable computing capacity. In AWS, servers are referred to as “instances”. Amazon EC2 provides you with virtual servers in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 1: Create an AWS account.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To use AWS services, you need to have an AWS account. Visit aws.amazon.com and click on the Sign-Up button. You will be prompted to enter your personal details and payment information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 2: Select the Region.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After creating an AWS account, log in to the AWS Management Console. Then select the region where you want your EC2 instance to be deployed. It’s important to choose a region that is close to your users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 3: Launch an Instance.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To launch an instance, go to the EC2 dashboard and click on the Launch Instance button. You will be taken to a wizard that will guide you through the process of launching an EC2 instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a) Choose an AMI (Amazon Machine Image):&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first step is to choose an Amazon Machine Image (AMI), which is a pre-configured virtual machine image. An AMI contains the information necessary to launch instances, such as the operating system, application server, and applications. You can either choose a pre-configured AMI or create your own custom AMI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b) Choose an Instance Type:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, choose an instance type based on the amount of CPU, memory, storage, and network connectivity you require. The instance types range from micro to large and come with different pricing options based on your usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c) Configure Instance Details:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, you can choose to configure Instance Details like Number of Instances, Network settings, IAM Role, Shutdown behavior, etc. You can also add user data and configure the instance to run a script on startup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d) Add Storage:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, you can add storage to your instance. You can choose the type of storage you want, like Elastic Block Store (EBS) or Instance Storage and specify the size of the volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e) Configure Security Group:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, you need to configure the security group for your instance. A security group acts as a virtual firewall that controls inbound and outbound traffic to your instances. You can create a new security group or select an existing one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;f) Review and Launch:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After configuring all the settings, review them to ensure they are correct. Once you’re satisfied with the configuration, click on Launch to launch the instance. You will be prompted to select a key pair, which is used to securely log in to your instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 4: Connect and Configure your Instance.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once your EC2 instance is launched, you need to connect to it and configure it to meet your needs. This can be done using Remote Desktop Protocol (RDP) for Windows instances and Secure Shell (SSH) for Linux instances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Usage of AWS EC2 instances:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;EC2 instances can be used to host websites and web applications, process big data and machine learning workloads, or store data in databases. &lt;br&gt;
Below listed are few advantages that make EC2 instances popular among businesses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Advantages:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Scalable:&lt;/u&gt;&lt;/strong&gt; EC2 instances can scale up or down based on demand without any downtime, which helps businesses save money by paying only for the resources they use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Easy Deployment:&lt;/u&gt;&lt;/strong&gt; Setting up an EC2 instance is fast and easy using the console dashboard or API integration.&lt;br&gt;
Security: AWS offers comprehensive security features to protect data and applications hosted on EC2 instances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Reliability:&lt;/u&gt;&lt;/strong&gt; EC2 instances are designed for high availability and offer a 99.99% uptime Service Level Agreement (SLA).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Cost-Effective:&lt;/u&gt;&lt;/strong&gt; With EC2 instances, there are no upfront costs or long-term commitments, and users pay only for what they use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Disadvantages:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Though AWS provides many benefits with the EC2 instances, it has a few challenges as well. Few challenges are listed below:&lt;br&gt;
Steep Learning Curve: The platform has a high learning curve, especially for beginners or companies unfamiliar with cloud infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Complexity:&lt;/u&gt;&lt;/strong&gt; Setting up a complex network requires good knowledge of networking concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Create an AWS EC2 instance through CLI.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Install and configure the AWS CLI:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To install the AWS CLI, visit the AWS documentation page and follow the instructions for your operating system. Once installed, open a terminal window and run &lt;strong&gt;‘aws configure’&lt;/strong&gt; to provide your AWS credentials.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Choose an Amazon Machine Image (AMI):&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Determine which Amazon Machine Image (AMI) you want to use as the basis for your instance. You can use one of the default Amazon AMIs, or create your custom AMI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Choose an instance type:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select the instance type that best suits your requirements based on the number of CPUs, memory, and storage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Create a key pair:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Key Pair is used to SSH in your instance. You can create a new key pair using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ aws ec2 create-key-pair --key-name my-keypair --query 'KeyMaterial' --output text &amp;gt; my-keypair.pem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Create a security group:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Security Group acts as a virtual firewall for your instance. You can create a security group using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ aws ec2 create-security-group --group-name my-security-group --description "My security group"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Configure inbound rules:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Inbound rules control the traffic that’s allowed to reach your instance. You can add inbound rules using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ aws ec2 authorize-security-group-ingress --group-name my-security-group --protocol tcp --port 22 --cidr 0.0.0.0/0&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This example allows all IP addresses to connect to your instance over port 22.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Launch the instance:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finally, launch the EC2 instances using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ aws ec2 run-instances --image-id ami-xxxxxx --count 1 --instance-type t2.micro --key-name my-keypair --security-group-ids my-security-group --subnet-id subnet-xxxxxx&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Replace ‘ami-xxxxxx’ with the ID of your chosen AMI, and ‘subnet-xxxxxx’ with your VPC subnet ID.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Deploying .NET Application in AWS EC2 instance:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To deploy a .NET application in an AWS EC2 instance, follow the below steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 1: Create an EC2 Instance.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow the steps and launch an EC2 instance. Choose an Amazon Machine Image (AMI) that is compatible with the version of the .NET framework you intend to use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 2: Install IIS.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;IIS (Internet Information Services) is a web server that can be installed on Windows Server OS to host web applications. You can install IIS from the Server Manager UI or PowerShell command-line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 3: Configure Access to Your Application.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once IIS is installed, configure access to your application by setting up security groups and enabling HTTP/HTTPS access through the inbound rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 4: Publish Your .NET Application.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To publish the application, use Visual Studio’s publish wizard or use Azure DevOps pipeline to automate the deployment process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 5: Test Your Application.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Verify that the application is running by navigating to the public IP address of the instance in a web browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 6: Automate Deployment Process.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Automating the deployment process using tools like Jenkins or AWS Code Deploy allows for continuous integration and delivery which improves productivity and reduces downtime.&lt;/p&gt;

&lt;p&gt;Amazon EC2 provides highly scalable computing capacity in the cloud, which makes it an excellent platform for businesses of all sizes. EC2 instances can be used to host websites, run applications, process big data and stored in databases. However, companies must also be aware of the challenges associated with using AWS services.&lt;/p&gt;

&lt;p&gt;We have now seen how to create an AWS EC2 instance, its usage, advantages, disadvantages, and how to deploy a .NET application in an AWS EC2 instance. Proper planning, implementation, and maintenance of your AWS infrastructure can lead to cost savings, improved efficiency, and business growth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Azure Virtual machines:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure Virtual Machines (VMs) allow users to create and manage virtual machines in the cloud. These VMs can run various operating systems and are used for a variety of purposes, such as running applications, hosting websites, or providing infrastructure for testing and development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 1: Create an Azure account.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To use Azure services, you need to have an Azure account. Visit azure.microsoft.com and click on the Start Free button. You will be prompted to enter your personal details and payment information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 2: Select the Region.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After creating an Azure account, log in to the Azure portal. Then select the region where you want your virtual machine to be deployed. It’s important to choose a region that is close to your users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 3: Create a Resource Group.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Resource Group is a logical container that holds related resources for an Azure solution. To create a resource group, navigate to the Resource Group option in the Azure portal and click on Add. Enter the name, region, and subscription details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 4: Create a Virtual Machine.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To create a virtual machine, follow the steps below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a) Choose Image and Size:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select the Image and size for your virtual machine based on your requirements. Azure offers a variety of pre-configured images to choose from.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b) Configure Basic Settings:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Provide relevant names for your virtual machine, username, and password. You can also enable extensions, boot diagnostics, and a public IP address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c) Configure Disks:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configure the storage options for your virtual machine. Azure offers multiple disk types for different workloads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d) Configure Networking:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configure the network settings for your virtual machine, including virtual network setup, subnet configuration, public IP address allocation, and network security group rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e) Review + Create:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once all the required configurations are completed, review your settings and click on create to create your virtual machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 5: Connect and Configure Your Virtual Machine.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After creating your Azure Virtual machine, connect to it using Remote Desktop Protocol (RDP) or secure shell (SSH), depending on the virtual machine’s operating system. Then proceed to configure it according to your requirements, such as installing applications, setting up firewalls, and configuring virtual networking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Usage of Azure Virtual Machines:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure VMs are used for various purposes, including hosting websites, running applications, providing infrastructure for testing and development, data storage, and backup. &lt;/p&gt;

&lt;p&gt;Below listed are few advantages that make Azure Virtual Machines popular among businesses:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Advantages:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Scalability:&lt;/u&gt;&lt;/strong&gt; Azure VMs can be scaled up or down based on demand without any downtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;High Availability:&lt;/u&gt;&lt;/strong&gt; Azure provides a Service Level Agreement (SLA) of 99.9% availability for VMs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Security:&lt;/u&gt;&lt;/strong&gt; Azure offers comprehensive security features to protect data and applications hosted on Virtual Machines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Reliability:&lt;/u&gt;&lt;/strong&gt; Virtual machines are designed for high availability and offer a 99.9% uptime Service Level Agreement (SLA).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Cost-Effective:&lt;/u&gt;&lt;/strong&gt; With Azure Virtual machines, there are no upfront costs, long-term commitments, and you pay only for what you use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Disadvantages:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Along with the advantages, Azure VMs have a few limitations as well. Few disadvantages are listed below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Steep Learning Curve:&lt;/u&gt;&lt;/strong&gt; The platform has a high learning curve, especially for beginners or companies unfamiliar with cloud infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Complexity:&lt;/u&gt;&lt;/strong&gt; Setting up a complex network requires knowledge of networking concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Deploying .NET Application in Azure Virtual Machine:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;u&gt;Create an Azure virtual machine using CLI:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Install and configure the Azure CLI:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To install the Azure CLI, visit the Azure documentation page and follow the instructions for your operating system. Once installed, open a terminal window and run ‘az login’ to connect to your Azure account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Create a resource group:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
A Resource Group is a logical container that groups resources together for easy management. You can create a new resource group using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ az group create --name MyResourceGroup --location eastus&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Choose an image:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Determine which image you want to use as the basis for your instance. You can use one of the default Azure images or create your custom image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Create a virtual network:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Virtual Network is required by Azure to create a virtual machine. You can create a new virtual network using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ az network vnet create --resource-group MyResourceGroup --name MyVnet --address-prefix 10.0.0.0/16 --subnet-name MySubnet --subnet-prefix 10.0.0.0/24&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Create a public IP address:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You need a public IP address to access your virtual machine from the Internet. You can create a public IP address using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ az network public-ip create --resource-group MyResourceGroup --name MyPublicIP --dns-name mypublicip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Configure inbound rules:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Inbound rules control the traffic that’s allowed to reach your instance. You can add inbound rules using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ az network nsg rule create --resource-group MyResourceGroup --nsg-name MyNSG --name ssh --protocol tcp --priority 1000 --destination-port-range 22 --access allow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This example allows all IP addresses to connect to your instance over port 22.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Launch the instance:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finally, launch the virtual machine using the following command:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$ az vm create --resource-group MyResourceGroup --name MyVM --image UbuntuLTS --admin-username azureuser --generate-ssh-keys --vnet-name MyVnet --subnet MySubnet --public-ip-address MyPublicIP --nsg MyNSG&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Replace ‘UbuntuLTS’ with the ID of your chosen image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To deploy a .NET application in an Azure Virtual Machine, follow the below steps:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 1: Create an Azure Virtual Machine.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow the steps and create an Azure Virtual Machine. Choose the image that is compatible with the version of the .NET framework you intend to use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 2: Install IIS&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;IIS (Internet Information Services) is a web server that can be installed on the Windows Server Operating System to host web applications. You can install IIS from the Server Manager UI or PowerShell command-line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 3: Configure Access to Your Application&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once IIS is installed, configure access to your application by setting up security groups and enabling HTTP/HTTPS access through the inbound rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 4: Publish Your .NET Application.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To publish the application, use Visual Studio’s publish wizard or use Azure DevOps pipeline to automate the deployment process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 5: Test Your Application.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Verify that the application is running by navigating to the public IP address of the virtual machine in a web browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 6: Automate Deployment Process.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Automating the deployment process using tools like Jenkins or Azure DevOps allows for continuous integration and delivery which improves productivity and reduces downtime.&lt;/p&gt;

&lt;p&gt;Azure provides highly scalable computing capacity in the cloud, which makes it an excellent platform for businesses of all sizes. Azure Virtual Machines can be used to host websites, run applications, process big data, and store data in databases. However, companies must also be aware of the challenges associated with using Azure services.&lt;/p&gt;

&lt;p&gt;We have now seen how to create an Azure Virtual Machine, its usage, advantages, disadvantages, and how to deploy a .NET application in an Azure Virtual Machine. Proper planning, implementation, and maintenance of your infrastructure can lead to cost savings, improved efficiency, and business growth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Comparison:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure and AWS are two of the most popular cloud services providers that offer a range of cloud-based services. A Virtual Machine (VM) in Azure is similar to an Elastic Compute Cloud (EC2) instance in AWS. Both Azure VMs and AWS EC2 instances provide on-demand computing, flexibility, scalability, and pay-as-you-go pricing models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Computing Resources:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure Virtual Machines and AWS EC2 Instances provide users with the ability to configure CPU, memory, and storage resources based on their requirements. However, there are some differences between these two services.&lt;br&gt;
In Azure, VMs can be configured with up to 128 vCPUs, while in EC2 you can configure up to 256 vCPUs.&lt;br&gt;
Azure offers a premium SSD disk type that provides high IOPS at a lower cost compared to AWS EBS volumes.&lt;br&gt;
AWS provides an additional compute resource option called Elastic GPU, which allows users to attach graphics acceleration to EC2 instances for performance-intensive workloads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Operating Systems:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both Azure Virtual Machines and AWS EC2 instances support a wide range of operating systems, including Linux and Windows. However, there are differences in how these services manage operating system images.&lt;br&gt;
Microsoft Azure offers pre-configured images that are optimized for different workloads like SQL, Java or .NET applications.&lt;br&gt;
Amazon Web Services, on the other hand, offers Amazon Machine Images (AMIs) for customers to launch EC2 instances. It also has an extensive marketplace where users can find and purchase pre-configured images.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Networking:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure and AWS both offer virtual network configurations that allow users to build complex networking architectures. However, there are differences in how they are implemented.&lt;/p&gt;

&lt;p&gt;Azure’s networking architecture uses a more simplified approach called Azure Virtual Network (VNet). VNets are designed to work like traditional on-premises networks and provide connectivity between VMs within the same VNet. Traffic between VNets or public internet is routed through a virtual gateway.&lt;/p&gt;

&lt;p&gt;AWS networking architecture allows users to define network security groups, subnets, and route tables based on their requirements. Users also could manipulate IP addresses in EC2 instances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Pricing:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both Azure Virtual Machines and AWS EC2 Instances offer pay-as-you-go pricing models. However, there are differences in how they are priced.&lt;/p&gt;

&lt;p&gt;Azure offers discounts for users who pre-pay for their virtual machines or reserve instance capacity for one- or three-year terms.&lt;/p&gt;

&lt;p&gt;AWS provides a more granular pricing model that allows users to choose different payment options for computing resources, storage, and data transfers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Management Tools:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure and AWS offer several management tools that enable users to manage their virtual machines from a centralized location. However, there are some differences in the management tools they provide.&lt;/p&gt;

&lt;p&gt;Azure provides the Azure portal, which allows users to manage services using a web-based interface.&lt;/p&gt;

&lt;p&gt;AWS provides the AWS Management Console, which allows users to manage services using a web-based interface. It also provides command-line tools and APIs that allow access to advanced features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion:&lt;/u&gt;&lt;/strong&gt; If we are IAAS Azure VM and AWS EC2 instance it makes a big difference because we own all the controls from our side like VNet, Ip configuration and it provides security features. We need to be very careful if we are using IAAS there is a high chance of potential threats if we misconfigured some areas in IAAS. &lt;/p&gt;

&lt;p&gt;If you have any doubts and require help for using IAAS please drop a comment. Happy to help.&lt;/p&gt;

&lt;p&gt;Stay tuned!!!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Azure services for .NET developers.</title>
      <dc:creator>Arun Kumar Palani</dc:creator>
      <pubDate>Wed, 05 Apr 2023 11:12:38 +0000</pubDate>
      <link>https://forem.com/arunkumar2331996/azure-services-for-developers-3o97</link>
      <guid>https://forem.com/arunkumar2331996/azure-services-for-developers-3o97</guid>
      <description>&lt;p&gt;Hi, I am Arun Kumar Palani, Senior software engineer in Luxoft &amp;amp; Microsoft certified solution Architect - Associate level. &lt;/p&gt;

&lt;p&gt;Let's discuss 6 Azure services, developers might use day to day life if the project is completely developed in Microsoft platform.&lt;/p&gt;

&lt;p&gt;Before going to discuss in detail let’s see some short introduction of them in 2 lines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;1.Azure Key vault&lt;/u&gt;&lt;/strong&gt; – It is a place where we can keep our secrets. Mostly connection strings and external API secret keys are maintained here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2.Azure Dev-ops &lt;/u&gt;&lt;/strong&gt;– A simplified solution for maintaining source code, creating and maintaining CI/CD pipelines, release management, a place for maintaining artifacts and it also has test plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;3.Azure API management&lt;/u&gt;&lt;/strong&gt; – Acts as an entry gate in front of API’s and mostly used for API gateway implementation without much coding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;4.Azure Storage services&lt;/u&gt;&lt;/strong&gt; – Mostly used for storing files and information in different azure storage services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;5.Azure SQL:&lt;/u&gt;&lt;/strong&gt; Similar to on- premises database but offers more flexibility in terms of backup/restore and also in high availability/Auto scaling feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;6.Azure App Service/VM:&lt;/u&gt;&lt;/strong&gt; App service is a PAAS and VM is IAAS both are used for hosting web applications. VM’s have a lot of advantages other than hosting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Note: &lt;/u&gt;&lt;/strong&gt;This article is intended for those who have an interest in learning azure conceptually. It will give a clear idea and the exact usage of the service. If you’re new to Azure, please read it twice to get a clear picture of it. This is not a technical article this will just cover the overall view about all the 6 services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;1. What is an Azure Key vault?&lt;br&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Key Vault is a cloud-based service that allows you to securely store and manage cryptographic keys, secrets and certificates used in your applications and services. It is a centralized service where you can store and manage all the sensitive data of your application instead of storing it locally, thus improving the security of your applications.&lt;/p&gt;

&lt;p&gt;The Azure Key Vault service provides robust access control, auditing, and monitoring capabilities to ensure that your keys are being accessed only by authorized personnel. It also allows you to generate and manage encryption keys for your applications, making it easier to encrypt/decrypt data and keep it secure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Advantages of Azure Key vault:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Enhanced Security:&lt;/u&gt;&lt;/strong&gt; With Azure Key Vault, you can store and manage all your cryptographic assets in a secure, centralized location. This helps to reduce the risk of keys being compromised or lost due to insecure storage or sharing practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Simplified Key Management:&lt;/u&gt;&lt;/strong&gt; Azure Key Vault provides a simple, easy-to-use interface for managing your encryption keys, secrets and certificates, which makes it easier for developers to implement secure key management practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Integration with Azure Services:&lt;/u&gt;&lt;/strong&gt; Key Vault is tightly integrated with other Azure services like Azure Functions and Azure App Service, enabling developers to easily add encryption and decryption features to their applications without having to worry about key management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Easy Compliance:&lt;/u&gt;&lt;/strong&gt; Azure Key Vault supports compliance with various industry standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e. Bring Your Own Key Support:&lt;/u&gt;&lt;/strong&gt; Azure Key Vault supports use cases where you want to manage keys on-premises while still utilizing Azure's many platform services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;f. Monitoring and Auditing Capabilities:&lt;/u&gt;&lt;/strong&gt; Key Vault provides robust monitoring, logging, and auditing capabilities that enable teams to track usage, access, and changes to cryptographic keys, certificates, and secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Disadvantages:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Cost:&lt;/u&gt;&lt;/strong&gt; Using the Azure Key Vault service can add to your overall cloud expenses, especially if you have large amounts of keys, secrets, or certificates to manage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Learning Curve:&lt;/u&gt;&lt;/strong&gt; Azure Key Vault can be complex for new users and may require some time to learn and become familiar with its capabilities and integration with other Azure services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Limited Programming Language Support:&lt;/u&gt;&lt;/strong&gt; Although Azure Key Vault provides SDKs for multiple programming languages like .NET, Java, Python, etc., its functionality may not be fully supported by all programming languages and frameworks, which could limit its usage in some situations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Dependency on Azure Infrastructure:&lt;/u&gt;&lt;/strong&gt; Since Azure Key Vault is a cloud-based service, it requires an active internet connection and depends on Azure's infrastructure, which can lead to issues if there are any service disruptions or outages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2. What is Azure DevOps?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure DevOps is a collection of services that allow software development teams to plan, build, test, and deploy software. It includes Azure Boards, Azure Repos, Azure Artifacts, Azure Test Plans, and Azure Pipelines. These tools work together seamlessly to provide a comprehensive DevOps solution for teams of any size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What Azure DevOps Provides?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Azure Boards:&lt;/u&gt;&lt;/strong&gt; Like Jira\HP ALM, where we can create and manage user stories/bugs. We can also create branches from the user story where the commit and branch are linked with the parent user story for easy tracking.&lt;br&gt;
Azure Boards also includes built-in analytics features that allow teams to track metrics such as lead time, cycle time, and throughput, which can be useful for identifying bottlenecks and areas for improvement.&lt;br&gt;
We can visualize our data from the azure board and track dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Azure Repos:&lt;/u&gt;&lt;/strong&gt; Like GitHub\Bitbucket\ GitLab\ TFS, where we can push our changes and we can maintain versioning. We can add people from our team and collaborate on code, track the changes, and roll back it whenever necessary.&lt;br&gt;
It provides options for code review and search option for code with specific pieces of snippet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Azure Artifacts:&lt;/u&gt;&lt;/strong&gt; Like JFrog\team city, where we can maintain our NuGet package for the organization includes NuGet, NPM, Maven packages.&lt;br&gt;
With the help of artifacts, we can fetch easily build our pipeline.&lt;br&gt;
Additionally, Azure Artifacts includes package management capabilities, which allow teams to manage dependencies, ensure that packages are up to date, and roll back to previous versions if necessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Azure Test-Plan:&lt;/u&gt;&lt;/strong&gt; Like Q-test, TestRail. With Azure test plan, we can configure manual testing and exploratory testing plans. It also integrates with Azure Pipelines, making it easy to automate tests and ensure the software is tested before deployment.&lt;br&gt;
We can make a track of all the test cases and we can automate it before going to deployment. So that our application is fully tested before release.&lt;br&gt;
From the developer’s side, we can see the test failure and root cause of the error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e. Azure Pipelines:&lt;/u&gt;&lt;/strong&gt; Like Jenkins. With Azure Pipelines, teams can automate their software delivery process, from building and testing to deploying to multiple environments. It supports CI\CD which allows teams to build the application, test and deploy the code to environments when it is merged with repository.&lt;br&gt;
The team can use Azure Pipelines to automate the application's build, test, and deployment process and release it to different environments whenever necessary.&lt;/p&gt;

&lt;p&gt;We can create a release trigger either manual or automatic by setting the condition to trigger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is the advantage of using Azure DevOps?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Easy integration.&lt;/li&gt;
&lt;li&gt;Cost effective solution.&lt;/li&gt;
&lt;li&gt;Single sign on using Azure AD.&lt;/li&gt;
&lt;li&gt;A complete package not depending on different software for each step.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Implementing a DevOps strategy is essential for software development teams to deliver software quickly and efficiently. Azure DevOps provides this feature with minimal cost, i.e.) cost is calculated on a user basis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;How to deploy a .NET application using Azure DevOps?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step 1: Create an Azure DevOps feature from the azure portal.&lt;br&gt;
Step 2: Create a simple Web API project and configure it to Azure repository.&lt;br&gt;
Step 3: Create an App server or Virtual machine to host the application.&lt;br&gt;
Step 4: Create a release pipeline. Once the build is available from the pipeline, we can deploy the build to the app service/ VM in the continuous way.&lt;br&gt;
Step 5: What are the steps while deploying our application to app service?&lt;br&gt;
1.Build the environment - Ubuntu\Windows etc.&lt;br&gt;
2.Restore dependencies from the NuGet.&lt;br&gt;
3.Build your project.&lt;br&gt;
4.Run the test cases (Unit\Integration tests).&lt;br&gt;
5.Collect code coverage if required.&lt;br&gt;
6.Publish artifacts to azure pipelines.&lt;br&gt;
7.Publish to NuGet feed.&lt;br&gt;
8.Deploy to web app (app server or VM).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;3. Azure API Management&lt;/u&gt;&lt;/strong&gt; It is a cloud-based platform that allows developers to expose, publish, and manage APIs. The service provides a robust set of tools for managing APIs, controlling access to APIs, and monitoring traffic.&lt;br&gt;
Within Azure API Management, developers can create new APIs or import existing ones, add restrictions on how the API may be consumed, and configure policies to apply when requests are received.&lt;br&gt;
"Basically, we do the same thing in API gateway pattern. For this we might use the Ocelot NuGet package. The same service is provided by Google Apigee and in AWS as well".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Key Features of Azure API Management:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;API Gateway:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At the core of Azure API Management is an API gateway, which acts as a reverse proxy through which requests are routed to the appropriate backend services. The gateway provides protocol translation, message transformation, and other communication functions to enable seamless integration between client applications and backend services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;API Definition:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With Azure API Management, developers can define APIs using the API Specification (formerly known as Swagger). The specification allows developers to describe the operation of their APIs in a machine-readable format, making it easier for clients to discover and consume the API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Security:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;APIs are often resources that need to be guarded against unauthorized access. To this end, Azure API Management provides a range of security features including authentication, authorization, and encryption.&lt;br&gt;
Developers can require API consumers to authenticate themselves before accessing an API. Access can also be controlled by roles, allowing fine-grained control over which users can access which APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Rate Limiting:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
To prevent abuse of APIs, Azure API Management allows developers to apply rate limits. Limits can be applied based on the number of calls allowed per user, per minute or any other defined period. By setting up rate limits, developers can ensure that their APIs are not subjected to excessive load, which could affect system performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Analytics:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
API data analytics are essential for understanding how your APIs are being used, where performance bottlenecks may exist, and what changes can be made to improve them. With Azure API Management, developers have access to detailed data analysis and reporting tools that provide real-time insights into the performance and usage of their APIs.&lt;br&gt;
This feature includes tracking metrics such as call count, response codes, latency, and other relevant indicators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Developer Portal:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
A developer portal is a self-service interface that is used by developers to discover, learn, test, and get support for the APIs they use. Developers can browse documentation, test endpoints, download code samples, and subscribe to new APIs from a single location.&lt;br&gt;
With Azure API Management, developers can build fully customized developer portals that include all the necessary information related to their APIs. Personalization options allow for branding and customization so that the developer portal can match the look and feel of your website or application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Creating APIs with Azure API Management&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The process of creating APIs with Azure API Management typically involves the following steps:&lt;br&gt;
Define the backend service – you may have existing services, or you can create new ones that return the data or perform the operations the API will expose.&lt;/p&gt;

&lt;p&gt;Create a new API – either by specifying the API specification directly or by importing an existing API definition.&lt;br&gt;
Configure API policies – policies can be used to modify the behavior of your API, add additional security, or allow efficient caching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Creating Inbound rules:&lt;/u&gt;&lt;/strong&gt; This is the place where the incoming request and its IP address is filtered, and it will check whether these URL is allowed for communication.&lt;br&gt;
Ex) we can directly CORS in API gateway itself rather configuring in the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Creating outbound rules:&lt;/u&gt;&lt;/strong&gt; Here we can set our custom response headers and send the response back to the user. If there is any modification, we need here we can do that as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Backend policies:&lt;/u&gt;&lt;/strong&gt; Here we can configure backend URL so that it can safely accessed with the help of inbound and out bound policy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Issue API keys&lt;/u&gt;&lt;/strong&gt; – Issuing authorization keys is a technique used to track the usage of your API and maintain control over who is allowed to use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e. Configure usage plans&lt;/u&gt;&lt;/strong&gt; – usage plans allow you to specify rates at which developers can use your API under free, paid, or custom tier models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;f. Publish the API&lt;/u&gt;&lt;/strong&gt; – Once the API has been thoroughly tested and reviewed, developers can publish it to make it publicly available.&lt;/p&gt;

&lt;p&gt;Azure API Management is a powerful tool that enables developers to create, manage, and publish APIs quickly and efficiently. The platform comes equipped with a host of features that enable secure and reliable API management, including developer-friendly portals and comprehensive analytics capabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;4. Azure storage service:&lt;/u&gt;&lt;/strong&gt; It offers a flexible and scalable solution for storing unstructured data, such as text or binary data, in the cloud. The service supports various types of data including blobs, files, queues, tables, and disks.&lt;br&gt;
Azure Storage is designed to provide a highly available and durable storage infrastructure across multiple regions. It provides automatic replication of data within the same region and enables geo-replication across different regions. This ensures that data is always available even in case of regional disasters. Additionally, Azure Storage also provides multiple layers of security to protect data, including encryption at rest and in transit.&lt;/p&gt;

&lt;p&gt;Let's take a closer look at some of the key features and services offered by Azure Storage:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Blob Storage&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Blob Storage is a scalable and secure object storage service that allows you to store large amounts of unstructured data, such as text or binary data, in the cloud. It provides support for several APIs including REST, .NET, Java, Python, and Node.js. It also provides three tiers of storage: hot, cool, and archive, allowing you to choose the storage option based on the frequency of access to the data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. File Storage&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure File Storage provides fully managed file shares in the cloud. It allows you to create file shares that can be accessed from anywhere in the world using standard SMB 3.0 protocol. It allows you to store and share files with ease, enabling you to easily migrate your existing applications to the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Queue Storage&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Queue Storage is used to transmit messages between components of distributed systems. It provides a simple messaging service that allows you to send and receive messages between different components of your application. It is ideal for asynchronous communication and can be used to build reliable systems, decoupled systems, and scalable applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Table Storage&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Table Storage provides NoSQL-like storage capabilities for unstructured data. It allows you to store large amounts of structured, non-relational data in the cloud, and supports features such as secondary indexes and queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e. Disk Storage&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Disk Storage provides persistent block-level storage for virtual machines (VMs) running in Azure. With disk storage, you can attach disks to your VMs, providing them with durable, low-latency storage. You can also use managed disks, which provide simplified management of storage accounts.&lt;/p&gt;

&lt;p&gt;In addition to these services, Azure Storage also provides several other features that make it a versatile and flexible storage solution:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Azure Data Lake Storage Gen2:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Data Lake Storage Gen2 is a fully managed service that provides scalable, secure, and cost-effective storage for big data analytic workloads. It combines the power of a Hadoop file system with Azure Blob Storage to provide a common namespace for both structured and unstructured data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Azure Backup:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Backup provides reliable and scalable backup solutions for your data in the cloud. It enables you to protect your data by backing up files, folders, or entire VMs to Azure Storage. Azure Backup also provides support for backup of on-premises data to the cloud, making it a comprehensive backup solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Azure Site Recovery:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Site Recovery provides disaster recovery solutions for your applications and workloads. It enables you to automate the replication of VMs and physical servers to the cloud, providing you with a seamless failover and failback experience in case of any disasters. It also provides support for real-time replication to minimize data loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Azure StorSimple:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure StorSimple provides a hybrid cloud storage solution that enables you to tier cold data to the cloud while keeping hot data on-premises. This helps reduce storage costs as you only pay for the data that you store in the cloud. Additionally, StorSimple provides intelligent caching and data management capabilities to optimize storage performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e. Azure Data Box:&lt;/u&gt;&lt;/strong&gt; &lt;br&gt;
Azure Data Box is a physical device that allows you to move large amounts of data to and from Azure Storage securely and quickly. It is ideal for scenarios where transferring large datasets over the network is not feasible. Data Box supports various storage options, including Blob Storage, File Storage, and Disk Storage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;5. Azure SQL service:&lt;/u&gt;&lt;/strong&gt; It provides a highly scalable and flexible solution for managing relational data in the cloud. The service provides various features, including automatic scaling, high availability, security, and backup and recovery mechanisms.&lt;br&gt;
Azure SQL provides support for several deployment options, including single databases, managed instances, and elastic pools. It also supports several programming languages and development tools, such as .NET, Java, Python, and Node.js, making it easy to develop and deploy applications in the cloud.&lt;/p&gt;

&lt;p&gt;Let's take a closer look at some of the key features and services offered by Azure SQL:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;1. Database-as-a-service:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure SQL is a fully managed database-as-a-service (DBaaS) that eliminates the need for managing infrastructure and hardware. The service takes care of database maintenance tasks such as patching, tuning, backups, and monitoring, freeing up your time to focus on application development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2. Automatic Scaling:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure SQL provides automatic scaling capabilities, allowing you to automatically adjust the resources allocated to your database based on the workload demands. This ensures that your database can handle peak loads without compromising on performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;3. High Availability:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure SQL provides high availability through its built-in replication technology. The service automatically replicates your database across multiple regions, ensuring that your application remains available even in case of regional disasters. Additionally, Azure SQL provides transparent failover mechanisms, so that your application can continue running seamlessly in case of any disruptions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;4. Security:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure SQL provides several layers of security to protect your data, including encryption in transit and at rest, firewall rules, identity and access management, and threat detection. It also provides compliance with industry-specific regulations such as HIPAA, PCI DSS, and GDPR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;5. Backup and Recovery:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure SQL provides automated backups and point-in-time restore capabilities, ensuring that your data is protected against accidental deletion, corruption, or other types of data loss.&lt;/p&gt;

&lt;p&gt;In addition to these features, Azure SQL also provides several other services that make it a versatile and flexible database solution:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Single Databases:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure SQL supports single databases, which are fully managed databases that can be quickly created and managed in the cloud. You can choose from various database sizes based on your requirements and pay only for the resources that you use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Managed Instances:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure SQL also provides managed instances, which are fully managed instances of SQL Server in the cloud. Managed instances provide full SQL Server compatibility, enabling you to easily migrate your existing applications to the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Elastic Pools: &lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure SQL supports elastic pools, which allow you to share resources among multiple databases with different usage patterns. This enables you to reduce costs by optimizing resource utilization across multiple databases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Azure Synapse Analytics (formerly SQL Data Warehouse):&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Synapse Analytics is a cloud-based analytics service that allows you to analyze large amounts of data in the cloud using a combination of SQL queries and big data technologies such as Apache Spark. It provides integration with Azure Machine Learning, making it easy to build predictive models and integrate them into your data analysis workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e. Azure Database Migration Service:&lt;/u&gt;&lt;/strong&gt; &lt;br&gt;
Azure SQL also provides a migration service that allows you to migrate your on-premises databases to Azure SQL easily. The service supports various database types, including SQL Server, MySQL, PostgreSQL, and MongoDB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;6. Azure App Service and VM:&lt;/u&gt;&lt;/strong&gt; Azure App Service is a fully managed Platform-as-a-Service (PaaS) offering that allows you to quickly build, deploy, and scale web applications, mobile backends, and RESTful APIs. It supports various programming languages, including .NET, Java, Node.js, PHP, Python, and Ruby.&lt;br&gt;
With Azure App Service, you can easily create and manage web apps, API apps, mobile apps, and logic apps using a single integrated solution. The service provides several features such as automatic scaling, high availability, continuous deployment, and DevOps integration, making it easy to maintain your applications and achieve faster time-to-market.&lt;/p&gt;

&lt;p&gt;On the other hand, Azure Virtual Machines (VM) is an Infrastructure-as-a-Service (IaaS) offering that allows you to set up and run virtual machines in the cloud. You can choose from a wide range of pre-configured VM images or create your custom image based on your requirements. This gives you complete control over the operating system, applications, and configuration of your virtual machines.&lt;/p&gt;

&lt;p&gt;Let's take a closer look at the key features and services offered by Azure App Service and virtual machines:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;1. Azure App Service: &lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure App Service provides several features that make it a versatile and flexible platform for developing and deploying web applications and mobile backends.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Web Apps:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Web Apps allow you to easily deploy and manage web applications using a single integrated solution. It supports various frameworks and technologies, including ASP.NET, Node.js, Python, and PHP. You can deploy your applications using FTP, Git, or continuous deployment tools such as Azure DevOps, GitHub, or Bitbucket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Mobile Apps:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Mobile Apps provide a scalable and secure backend for mobile applications. It enables you to build cross-platform mobile applications using Xamarin or Apache Cordova and authenticate users using popular identity providers such as Facebook, Google, and Twitter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Logic Apps:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Logic Apps provide a low-code framework for building workflows and integrations between different applications and services. It supports various connectors to integrate with popular SaaS applications such as Salesforce, Dynamics 365, and Office 365.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2. Virtual Machines:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Virtual Machines provide several features that make it a versatile and flexible platform for running various workloads in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Pre-configured VM Images:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure provides various pre-configured virtual machine images, allowing you to easily set up your preferred operating system and application stack. It includes images for Windows Server, Linux, SQL Server, Oracle, and much more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Customizable VMs:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
You can also create custom virtual machines based on your requirements. This enables you to configure the operating system, applications, and settings according to your specific needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. High-performance Computing (HPC):&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure provides several options for running HPC workloads, including high-performance computing clusters, low-latency storage, and GPU-enabled virtual machines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Hybrid Cloud:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure provides seamless integration with your on-premises infrastructure, allowing you to extend your datacenter to the cloud with a hybrid cloud solution. This enables you to easily migrate your existing applications to the cloud and take advantage of its scalability and flexibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comparison&lt;/strong&gt;&lt;br&gt;
Let's compare some key differences between Azure App Service and Virtual Machines:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;a. Management:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure App Service is a fully managed service that eliminates the need for managing infrastructure or hardware. In contrast, Azure Virtual Machines require you to manage the underlying infrastructure, such as operating system updates, security patches, and backups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Scalability:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure App Service provides automatic scaling capabilities, allowing you to scale your web apps, API apps, and mobile apps dynamically based on usage patterns. Azure Virtual Machines require manual intervention to scale resources up or down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Cost:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure App Service charges based on the number of instances and their size, whereas Azure Virtual Machines charge based on the number of virtual machines, their size, and the amount of storage used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Configuration:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure App Service provides a ready-to-use environment for developing and deploying web applications and mobile backends, whereas Azure Virtual Machines require you to set up your infrastructure from scratch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e. Control:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Azure Virtual Machines provide complete control over the virtual machines' configuration, allowing you to configure hardware resources, operating systems, and applications based on your specific needs. In contrast, Azure App Service provides limited control over the underlying infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion:&lt;/u&gt;&lt;/strong&gt; Azure services play a major role if we are using Microsoft technologies like C#, it has direct integration with azure cloud PAAS and IAAS. There are lot of advantages if we use azure services in terms of cost, performance, security. Azure services also built in log facilities like application insight where we can the logs if in case of any failures. &lt;/p&gt;

&lt;p&gt;If you have any doubts and require technical implementation for the same, please comment below. I am happy to provide the solution in my GitHub link on the next post. &lt;/p&gt;

&lt;p&gt;Stay tuned!!! &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>azure</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>What is Chat GPT?</title>
      <dc:creator>Arun Kumar Palani</dc:creator>
      <pubDate>Tue, 21 Mar 2023 12:27:54 +0000</pubDate>
      <link>https://forem.com/arunkumar2331996/what-is-chat-gpt-2deo</link>
      <guid>https://forem.com/arunkumar2331996/what-is-chat-gpt-2deo</guid>
      <description>&lt;h2&gt;
  
  
  Hi, I am Arun Kumar Palani, Senior software engineer in Luxoft. Let’s discuss chat GPT in detail.
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt;Note: I have implemented it in .NET, since I am from .NET background.&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is Chat GPT?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Chat GPT is an AI based (LLM) large language model designed by Open AI which is trained by large amount of data. In Chat GPT the data is trained up to 2021. One of the Open AI co-founders was Elon Musk.&lt;/p&gt;

&lt;p&gt;Chat GPT working is based on GPT (Generative Pre-trained Transformer) model, an AI-based conversational agent, to produce intelligent responses to user inputs. A neural network architecture used for understanding and processing natural language is used in GPT model implementation.&lt;/p&gt;

&lt;p&gt;Simply, the Chat GPT system tries to understand what a user is saying and then reacts to it in accordance with its training data. It can respond to a variety of topics and is intended to be helpful, knowledgeable, and informative.&lt;/p&gt;

&lt;p&gt;The main benefit of Chat GPT is that it can communicate with users in natural language and gives tailored answers to each question. By removing the need for human interaction, this gives users instant access to pertinent information and contributes to time savings.&lt;/p&gt;

&lt;p&gt;Mainly in Customer service, e-commerce, and education are just a few sectors where Chat GPT is extensively used. In the big data and machine learning era, it has become an essential tool. Large amounts of data can be analyzed by the software, which can then deliver insights that are tailored to the requirements of businesses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;How Chat GPT is used in real life?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a chat bot.&lt;/li&gt;
&lt;li&gt;Generating text-based applications.&lt;/li&gt;
&lt;li&gt;Creating a virtual assistant.&lt;/li&gt;
&lt;li&gt;Implement a customer service system in an automated way.&lt;/li&gt;
&lt;li&gt;Providing answers to most frequently asked questions in many e-commerce and general-purpose applications.&lt;/li&gt;
&lt;li&gt;Text summarizing and generating reports.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;How is Chat GPT implemented?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The fundamental operating principle of Chat GPT is to take input from users, process the input data, and produce an insightful response. &lt;br&gt;
Here is a step-by-step description of how the system works:&lt;br&gt;
&lt;strong&gt;&lt;u&gt;User input:&lt;/u&gt;&lt;/strong&gt; The first step entails gathering information from the users. The users contribute by chatting in natural language via text or voice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Processing the Input Data:&lt;/u&gt;&lt;/strong&gt; After receiving user input, the data undergoes pre-processing to clean it up and eliminate unnecessary elements like stop words and punctuation. The text is then divided into smaller units by the software, typically words and phrases, which are then examined pairwise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Application of Machine Learning Model:&lt;/u&gt;&lt;/strong&gt; Following preprocessing of the input data, further analysis is conducted using the machine learning algorithm based on the GPT model. This algorithm creates new sentences with a probability determined by the frequency of appearance in the training sources using previous training data that was learned from millions of lines of publicly available text sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Response Generation:&lt;/u&gt;&lt;/strong&gt; Using the linguistic patterns discovered in the earlier steps as a basis, Chat GPT applies the algorithm to produce a pertinent output text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is making Chat GPT unique?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because of its capacity for instant learning and adaptation, Chat GPT is exceptional. Chat GPT uses machine learning to generate conversations based on its training data, in contrast to rule-based systems that adhere to a predetermined set of rules. The system can pick up on various conversational topics and behaviors and respond appropriately.&lt;br&gt;
Another distinguishing feature of Chat GPT is that its models are trained on vast amounts of data, giving it an advantage over competing products of a similar nature. This guarantees that the system is effective at responding to user inquiries in a way that is both helpful and accurate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What’s more interesting as a developer to do with Chat GPT?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, as a developer we would like to communicate with Chat GPT end points and to create a working model so that we can demonstrate how these models help in real life scenarios and what problems it solves. Along with this we would also like to know the different search models are available and how we can use those models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;NuGet extension:&lt;/u&gt;&lt;/strong&gt; OpenAI.&lt;br&gt;
&lt;strong&gt;Different Chat GPT search models:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Chat GPT version 3 models:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;1.AdaText&lt;br&gt;
2.BabbageText&lt;br&gt;
3.CurieText&lt;br&gt;
4.Davinci&lt;br&gt;
5.CushmanCode - codex model&lt;br&gt;
6.DavinciCode – codex model&lt;br&gt;
7.AdaTextEmbedding&lt;br&gt;
Let’s see how these models are going to help based on the requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;1.AdaText:&lt;/u&gt;&lt;/strong&gt; This model is capable of very simple tasks, usually the fastest model in the GPT-3 series, and this is one of the lowest cost models in the GPT series. The string code for this model is represented by “text-ada-001”.&lt;br&gt;
     1.Max token supported: 2049 tokens.&lt;br&gt;
     2.Trained data set: up to Oct- 2019&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2.BabbageText:&lt;/u&gt;&lt;/strong&gt; This model is capable of straightforward tasks, very fast, and lower cost and the string representation for this model is “text-babbage-001”.&lt;br&gt;
     1.Max token supported: 2049 tokens.&lt;br&gt;
     2.Trained data set: up to Oct-2019&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;3.CurieText:&lt;/u&gt;&lt;/strong&gt; This model is Very capable, but faster and lower cost than Davinci and the string representation is “text-curie-001”.&lt;br&gt;
     1.Max token supported: 2049 tokens.&lt;br&gt;
     2.Trained data set: up to Oct-2019&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;4.DavinciText:&lt;/u&gt;&lt;/strong&gt; This is the most capable GPT-3 model. Can do any task the other models can do, often with higher quality, longer output and better instruction-following.&lt;br&gt;
     1.Max token supported: 2049 tokens.&lt;br&gt;
     2.Trained data set: up to Oct-2019&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;5.CushmanCode:&lt;/u&gt;&lt;/strong&gt; Almost as capable as Davinci Codex, but slightly faster. This speed advantage may make it preferable for real-time applications and its representation is “code-cushman-001”.&lt;br&gt;
     1.Max token supported: 2049 tokens.&lt;br&gt;
     2.Trained data set: up to Oct-2019&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;6.DavinciCode:&lt;/u&gt;&lt;/strong&gt; Most capable Codex model. Particularly good at translating natural language to code. In addition to completing code, also supports inserting completions within code and its representation is “code-davinci-002”.&lt;br&gt;
     1.Max token supported:  8001 tokens.&lt;br&gt;
     2.Trained data set: up to Jun-2021&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;7.AdaTextEmbedding:&lt;/u&gt;&lt;/strong&gt; OpenAI offers one second-generation embedding model for use with the embeddings API endpoint and its representation is “text-embedding-ada-002”.&lt;br&gt;
     1.Max token supported: 2049 tokens.&lt;br&gt;
     2.Trained data set: up to Oct-2019&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Chat GPT version 3.5 models:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.gpt-3.5-turbo&lt;br&gt;
2.gpt-3.5-turbo-0301&lt;br&gt;
3.text-davinci-003&lt;br&gt;
4.text-davinci-002&lt;br&gt;
5.code-davinci-002&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;1.gpt-3.5-turbo:&lt;/u&gt;&lt;/strong&gt; The most powerful GPT-3.5 model, which is chat-optimized, costs only one-tenth as much as the text-davinci-003. updated with the most recent model iteration.&lt;br&gt;
      1.Max token supported:  4096 tokens.&lt;br&gt;
      2.Trained data set: up to Sep-2021&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2.gpt-3.5-turbo-0301:&lt;/u&gt;&lt;/strong&gt; GPT-3.5-Turbo snapshot taken from gpt-3.5-turbo. Contrary to the GT-3.5 Turbo, this model will only be supported for three months, ending on June 1, 2023, and will not receive any updates.&lt;br&gt;
      1.Max token supported:  4096 tokens.&lt;br&gt;
      2.Trained data set: up to Sep-2021&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;3.text-davinci-003:&lt;/u&gt;&lt;/strong&gt; Can perform any language task better, faster, and with more consistency in following instructions than the curie, babbage, or ada models. Additionally supports text completions being inserted.&lt;br&gt;
      1.Max token supported:  4097 tokens.&lt;br&gt;
      2.Trained data set: up to Sep-2021&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;4.text-davinci-002: &lt;/u&gt;&lt;/strong&gt;Like text-davinci-003 in terms of abilities but trained using supervised fine-tuning rather than reinforcement learning.&lt;br&gt;
      1.Max token supported:  4096 tokens.&lt;br&gt;
      2.Trained data set: up to Jun-2021&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;5.code-davinci-002:&lt;/u&gt;&lt;/strong&gt; Designed code completion task.&lt;br&gt;
      1.Max token supported:  8001 tokens.&lt;br&gt;
      2.Trained data set: up to Jun-2021&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Chat GPT version 4 models:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.gpt-4&lt;br&gt;
2.gpt-4-0314&lt;br&gt;
3.gpt-4-32k&lt;br&gt;
4.gpt-4-32k-0314&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;1.gpt-4:&lt;/u&gt;&lt;/strong&gt; More capable than any GPT-3.5 model, able to do more complex tasks, and optimized for chat. Will be updated with our latest model iteration.&lt;br&gt;
      1.Max token supported: 8192 tokens.&lt;br&gt;
      2.Trained data set: up to Sep-2021.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;2.gpt-4-0314:&lt;/u&gt;&lt;/strong&gt; Snapshot of gpt-4 from March 14th, 2023. Unlike gpt-4, this model will not receive updates, and will only be supported for a three-month period ending on June 14th, 2023.&lt;br&gt;
      1.Max token supported: 8192 tokens.&lt;br&gt;
      2.Trained data set: up to Sep-2021.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;3.gpt-4-32k:&lt;/u&gt;&lt;/strong&gt; Same capabilities as the base gpt-4 mode but with 4x the context length. Will be updated with our latest model iteration.&lt;br&gt;
      1.Max token supported: 32768 tokens.&lt;br&gt;
      2.Trained data set: up to Sep-2021.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;4.gpt-4-32k-0314:&lt;/u&gt;&lt;/strong&gt; Snapshot of gpt-4-32 from March 14th, 2023. Unlike gpt-4-32k, this model will not receive updates, and will only be supported for a three-month period ending on June 14th, 2023.&lt;br&gt;
      1.Max token supported: 32768 tokens.&lt;br&gt;
      2.Trained data set: up to Sep-2021.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Other models:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.DALL.E&lt;br&gt;
2.Whisper&lt;br&gt;
3.Embedding&lt;br&gt;
4.Moderation&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;DALL.E:&lt;/u&gt;&lt;/strong&gt; DALLE is an artificial intelligence program that can produce art and realistic images from a description in natural language. We currently provide support for the creation of new images with a specific size, the editing of existing images, and the creation of variations of user-provided images. The DALLE model that is currently available through our API is the second version of DALLE, which has more accurate, realistic, and images with a 4x higher resolution than the first model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Whisper:&lt;/u&gt;&lt;/strong&gt; A general-purpose speech detection model is whisper. It is a multi-task model that can perform multilingual voice recognition, speech translation, and language identification and was trained on a sizable dataset of varied audio. Our API presently offers the Whisper v2-large model under the name whisper-1.&lt;br&gt;
Right now, there is no distinction between the Whisper accessible through our API and the open-source version. However, we provide an optimized inference procedure through our API, which makes using Whisper through our API much faster than using other methods.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Embedding:&lt;/u&gt;&lt;/strong&gt; It is a numerical representation of text that can be used to quantify the relatedness between two pieces of text. At a fraction of the price, our second-generation embedding model, text-embedding-ada-002, is intended to take the position of the 16 first-generation embedding models that came before it. &lt;br&gt;
Tasks involving search, clustering, recommendations, anomaly detection, and categorization can benefit from embeddings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Moderation:&lt;/u&gt;&lt;/strong&gt; The Moderation models' purpose is to determine whether material abides by Open Ai’s usage guidelines. &lt;br&gt;
The models offer the ability to categorize material by searching for items that fall under the following headings: hate, hate/threat, self-harm, sexual, sexual/minors, violence, and violence/graphic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;How to integrate Chat GPT in .NET application?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an account in OpenAI.com.&lt;/li&gt;
&lt;li&gt;Get the API-key from the Open AI website once successfully logged in.&lt;/li&gt;
&lt;li&gt;There are 2 different ways to implement this in .NET

&lt;ol&gt;
&lt;li&gt;Completion request class&lt;/li&gt;
&lt;li&gt;Direct Http client usage to hit Open AI end points.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Completion request implementation:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
1.Install Open AI from the NuGet package manager.&lt;/p&gt;

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

&lt;p&gt;There are few inputs we need to pass to the completion request. They are.&lt;br&gt;
&lt;strong&gt;&lt;u&gt;a. Prompt:&lt;/u&gt;&lt;/strong&gt; It is basically the input string where we are sending from the input request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;b. Model:&lt;/u&gt;&lt;/strong&gt; This is the place we need to define which Chat GPT model we are going to use when we are making a API call to Open AI endpoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;c. Temperature:&lt;/u&gt;&lt;/strong&gt; It gives sampling rate for the search that we are trying with. If we are sampling rate is higher ex) 0.9f we can get creative answer from the endpoint. If we are using 0f we will get the standard answers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;d. Max Tokens:&lt;/u&gt;&lt;/strong&gt; It gives the information how much is the maximum string that the API will give as a response. This can be set manually if we are using either completion request class or from Http Client as well. We need to ensure the maximum token available to generate response for the particular model before specifying the value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;e. TopP:&lt;/u&gt;&lt;/strong&gt; An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. It is generally recommend to use this or OpenAI_API.Completions.CompletionRequest.Temperature but not both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;f. Frequency Penalty:&lt;/u&gt;&lt;/strong&gt; The scale of the penalty for how often a token is used. Should generally be between 0 and 1, although negative numbers are allowed to encourage token reuse. Defaults to 0.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;g. Presence Penalty:&lt;/u&gt;&lt;/strong&gt; The scale of the penalty applied if a token is already present at all. Should generally be between 0 and 1, although negative numbers are allowed to encourage token reuse. Defaults to 0.&lt;/p&gt;

&lt;p&gt;2.Apply the API key and start running the application.&lt;br&gt;
3.Full code for creating the working model using completion request class.&lt;br&gt;
4.Sample C# code: &lt;br&gt;
   var gpt = new OpenAIAPI(apiKey);&lt;br&gt;
                CompletionRequest completionRequest = new &lt;br&gt;
                CompletionRequest()&lt;br&gt;
                {&lt;br&gt;
                    Prompt = input,&lt;br&gt;
                    Model = Model.DavinciText,&lt;br&gt;
                    Temperature = 0.5f,&lt;br&gt;
                    MaxTokens = 4000,&lt;br&gt;
                    TopP = 1.0,&lt;br&gt;
                    FrequencyPenalty = 0.0,&lt;br&gt;
                    PresencePenalty = 0.0,&lt;br&gt;
                };&lt;br&gt;
                completionResult = await &lt;br&gt;
         gpt.Completions.CreateCompletionAsync(completionRequest);&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Http client Implementation:&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
1.We just need some basic idea of how Http client works before implementing this. We need to pass the proper parameters and request and response formats that should match with the Open API endpoint which is officially released.&lt;/p&gt;

&lt;p&gt;2.There are different endpoints which was provided by Open AI for chat completion, Image generation, Image edit, Audio translation, Audio transcription and so on. Let's see one how to implement the chat completion in Http client.&lt;/p&gt;

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

&lt;p&gt;3.It requires a base address to establish a connection to the open API endpoint. For chat completion we need to use this URL: &lt;a href="https://api.openai.com/v1/completions"&gt;https://api.openai.com/v1/completions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Authorization can be done by the unique API-key given by Open AI this will perform authentication for us.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I have used .NET 6 so the Http client will have PostAsJsonAsync() method where we need to pass the input request.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With the help of ReadFromJsonAsync() method in the response we can get the result from Open AI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Here is the C# code.&lt;br&gt;
     public async Task &lt;br&gt;
     GenerateCompletion(ChatCompletionRequestcs request, &lt;br&gt;
     CancellationToken cancellationToken = default)&lt;br&gt;
    {&lt;br&gt;
    try&lt;br&gt;
        {&lt;br&gt;
         HttpClient httpClient = new HttpClient();&lt;br&gt;
         httpClient.BaseAddress = new Uri(chatEndpoint); &lt;br&gt;
         httpClient.DefaultRequestHeaders.Add("Authorization", &lt;br&gt;
         $"Bearer {apiKey}");&lt;br&gt;
         httpClient.DefaultRequestHeaders.Add("Accept", &lt;br&gt;
         "application/json");&lt;br&gt;
         var res = await &lt;br&gt;
         httpClient.PostAsJsonAsync(chatEndpoint, request,&lt;br&gt;&lt;br&gt;
         cancellationToken);&lt;br&gt;
         var result = await &lt;br&gt;
         res.Content.ReadFromJsonAsync &lt;br&gt;
         (cancellationToken: cancellationToken);&lt;br&gt;
         return result;&lt;br&gt;
        }&lt;br&gt;
        catch (Exception)&lt;br&gt;
        {&lt;br&gt;
            throw;&lt;br&gt;
        }&lt;br&gt;
    }&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Advantages of Chat GPT:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Automated decision making with AI based system.&lt;/li&gt;
&lt;li&gt;Precise use case with safety and security of data we search.&lt;/li&gt;
&lt;li&gt;Increased accuracy.&lt;/li&gt;
&lt;li&gt;Quick response time and increased engagement.&lt;/li&gt;
&lt;li&gt;Reduced expense and increased customer service.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Disadvantages of Chat GPT?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inaccuracies and Ambiguities in some times.&lt;/li&gt;
&lt;li&gt;Limited Knowledge of Recent Events - because it is trained 
with data up to 2021.&lt;/li&gt;
&lt;li&gt;Ethical Issues and Concerns.&lt;/li&gt;
&lt;li&gt;Other Possible Legal Implications.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion:&lt;/u&gt;&lt;/strong&gt; Chat GPT is a highly powerful language model with the potential to revolutionize a variety of fields and sectors. It is a useful tool for applications like chatbots, virtual assistants, and content production due to its capacity to generate extremely accurate and contextually relevant responses to natural language inputs. Although if bias and interpretability provide difficulties that must be overcome, Chat GPT represents a promising area for future research and development in the field of artificial intelligence.&lt;/p&gt;

&lt;p&gt;Thanks for reading the article, if you have any queries or suggestions, please post it in the comments section.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>What is CORS?</title>
      <dc:creator>Arun Kumar Palani</dc:creator>
      <pubDate>Tue, 07 Mar 2023 15:10:33 +0000</pubDate>
      <link>https://forem.com/arunkumar2331996/what-is-cors-how-can-we-secure-our-application-using-cors-5fdh</link>
      <guid>https://forem.com/arunkumar2331996/what-is-cors-how-can-we-secure-our-application-using-cors-5fdh</guid>
      <description>&lt;p&gt;Hi, I am Arun Kumar Palani, Senior software engineer in Luxoft. Let's discuss CORS in detail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: This is a technical topic. If the reader is from a development background, he/she can easily get the key concepts of CORS. If not from development background, please read it twice it will help you to understand what is CORS? And how we can implement it in any application. &lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;What is CORS?&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;CORS is a technique that allows servers to specify who can access its resources and which HTTP request methods are allowed by the requested resource.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Origin and sample use case:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;CORS started to make request resource giving easier and more effective. With CORS, it is attainable for one app to share possessions with an application owned by another domain. This leads to a netting where many apps from various rules share money with one another.&lt;/p&gt;

&lt;p&gt;For example, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Online food delivery app:&lt;/strong&gt; have you ever doubted how miscellaneous online food delivery apps’ latest fares and other connected data lands on your favorite food delivery app? That’s the power of the CORS policy. If you are going to build an online food delivery application that integrates data and possessions from all vendors and hotels, the easiest habit would be to attract data from the vendor’s or hotel’s APIs with CORS configured.
Specifically, CORS is a technical implementation that uses additional HTTP headers to state browsers to give a web request running at one inception access to selected possessions from a different inception. A web application kills a cross-origin HTTP request when it requests a property that has a different origin (rule, protocol, or traffic) from its own. A CORS request can be sparked by providing an additional plunge called “Origin” in the http request.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The cross-origin request policy of the browser (or web view) determines whether the request is allowed. Most browsers implement a same-origin policy that restricts how JavaScript can interact with resources from other domains. The same-origin policy is a critical security mechanism that helps isolate potentially malicious code from running on a user's web page. The same-origin policy has some drawbacks, however. For example, it prevents web pages from loading resources from other domains that they might need to display content or interact with users. &lt;/p&gt;

&lt;p&gt;CORS is a mechanism that allows web pages to request resources from other domains in a way that is safe and secure. CORS defines a standard way for browsers to request resources from other domains. When a browser makes a request for a resource from a different domain, it first sends a request to the server to see if the server will allow the cross-origin request. If the server allows the request, the browser then makes the request for the resource. The server can specify which resources are allowed to be requested from other domains, and which methods (such as GET or POST) are allowed. The server can also specify how long the response to the request can take. CORS is a safe and secure way for web pages to request resources from other domains. It is a standard that is supported by all major browsers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do we need such communications?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.Nowadays modern application architecture and evolving microservice design implementations require a front-end application and a backend application.&lt;/p&gt;

&lt;p&gt;2.Assume for Frontend we might use Angular or React. Because it is simple, lightweight and we can create SPA or multiple page applications with html and CSS combination with improved state management techniques like redux, store etc.&lt;/p&gt;

&lt;p&gt;3.For Backend we might use .NET, Java or python based on product and architectural suggestions.&lt;/p&gt;

&lt;p&gt;4.Our Angular application is hosted on some web app and the backend application is hosted on some different web app.&lt;br&gt;
Ex) Angular app: https:anuglartestapp.com&lt;br&gt;
Ex) backend app: https:testapi.com&lt;/p&gt;

&lt;p&gt;5.To establish a connection between these two web apps we might need some configurations that can be explicitly written in our only allow the origin of my front-end application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What will happen If we don’t specify such origin conditions?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.The backend application can be accessed by different people and different other endpoints.&lt;/p&gt;

&lt;p&gt;2.It will lead to a cross site scripting attack and might create security vulnerability in the application.&lt;/p&gt;

&lt;p&gt;3.If proper permission is not provided it will again lead to security vulnerability. Ex) (we want to expose a GET method to some third-party but if we don’t add CORS to only GET method the third party may access to POST, PUT &amp;amp; DELETE which is security concern)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to work with CORS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.First, we need to check the HTTP scheme: Whether it is HTTP or HTTPS&lt;/p&gt;

&lt;p&gt;2.Second, we need to check the port where the application is hosted.&lt;/p&gt;

&lt;p&gt;3.Third, we need to the check domain name of the hosted application.&lt;/p&gt;

&lt;p&gt;Once we get all those necessary information, we need to configure our front-end URLs to the back-end application so that it can communicate and produces response in the UI.&lt;/p&gt;

&lt;p&gt;1.From the example we can see the scheme is HTTPS for both the frontend and backend, the port if we run in local host both the applications will run on different ports. We can see the domain name is different for each web app.&lt;br&gt;
Ex) Angular app: https:anuglartestapp.com&lt;br&gt;
Ex) backend app: https:testapi.com&lt;br&gt;
Technical configurations: We must be very careful when we configure CORS for a web client, and we need to provide only necessary permissions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Preflight request?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The CORS Operates in the following manner for Complicated Requests:&lt;br&gt;
1.A pre-flight request is sent to the destination site before the actual request is sent. The OPTIONS HTTP Request method is used to send this pre-flight request.&lt;/p&gt;

&lt;p&gt;2.The Authorized methods and Allowed origin information about the target site would be included in the response to the pre-flight request. The browser sends the actual GET/POST request after evaluating this answer to see whether the target site can deliver the desired information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CORS attributes:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It works by setting specific HTTP headers, which allow a server to specify which origins are allowed to access its resources. The most common CORS headers are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request headers:&lt;/strong&gt; These headers are set by the client browser when it makes a call to server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Base Origin:&lt;/strong&gt; This gives the details about the client application where the client application is hosted (The DNS related details of the client app)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access-Control-Request-Methods&lt;/strong&gt;: This is the header which is added in preflight mechanism of the request. It will check with the backend server whether these methods are allowed in the backend server for processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access-Control-Allow-Headers:&lt;/strong&gt;  Here we can pass which http headers are allowed to pass to the backend server to establish connection. This is also a preflight mechanism to check which http headers are supposed to be allowed in server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response headers:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access-Control-Allow-Origin:&lt;/strong&gt; This header specifies which origin is allowed to make requests to the resource. If the values come from the base origin did not match with the server configured value, then the user will experience CORS error on the mismatched Origin.&lt;br&gt;
&lt;u&gt;Sample headers:&lt;/u&gt;&lt;br&gt;
1.Access-Control-Allow-Origin: * &lt;br&gt;
2.Access-Control-Allow-Origin:  where origin = [&lt;a href="http://www.test.com"&gt;www.test.com&lt;/a&gt;]&lt;br&gt;
3.Access-Control-Allow-Origin: null which refers to null reference origin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access-Control-Allow-Methods:&lt;/strong&gt; This header specifies which HTTP methods (e.g., GET, POST, PUT, etc.) are allowed to access the resource. If the headers did not match with the Access-Control-Request-Methods request headers, then the user or the resource who is sending the request will experience CORS error on the permissible methods.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Sample headers:&lt;/u&gt;&lt;br&gt;
1.Access-Control-Allow-Methods: * which allows all header.&lt;br&gt;
2.Access-Control-Allow- Methods: &amp;lt; methods -name&amp;gt; [GET, PUT, POST, DELETE] We can specify which methods are allowed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access-Control-Allow-Headers&lt;/strong&gt;: This header specifies which HTTP headers (e.g., Content-Type, Authorization, etc.) are allowed to be sent with the request.&lt;br&gt;
&lt;u&gt;Sample headers:&lt;/u&gt;&lt;br&gt;
1.Access-Control-Allow-Headers: * which allows all header.&lt;br&gt;
2.Access-Control-Allow-Headers: .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access-Control-Max-Age:&lt;/strong&gt; This header specifies how long (in seconds) the preflight request can be cached in the browser.&lt;br&gt;
&lt;u&gt;Sample headers:&lt;/u&gt;&lt;br&gt;
1.Access-Control-Max-Age: 3600 specifies the preflight request is valid for next 1 hour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access-Control-Allow-Credentials&lt;/strong&gt;: Requests are passed without credentials like cookies or the authorization header by default in CORS. But, by setting the CORS Access-Control-Allow-Credentials header to true, the cross-domain server can allow reading the response when credentials are supplied to it. The browser will allow the requesting website to access the answer if the asking website uses JavaScript to signal that it is sending cookies along with the request since the Access-Control-Allow-Credentials response header is set to true.&lt;br&gt;
&lt;u&gt;Sample headers:&lt;/u&gt;&lt;br&gt;
1.Access-Control-Allow-Credentials: true, which allows credentials to be shared. We can toggle it based on the requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Implement CORS in .NET core?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.Install the NuGet package - Microsoft.AspNetCore.Cors&lt;br&gt;
2.In configureService() method add - services.AddCors()&lt;br&gt;
3.In Configure() method - options =&amp;gt; options.AllowAnyOrigin()&lt;br&gt;
4.CORS can be enabled in controller level by adding [EnableCors] attribute and we need to add few lines in ConfigureService() method.&lt;br&gt;
services.AddCors(options =&amp;gt; { options.AddPolicy(\"AllowSpecificOrigin\", builder =&amp;gt;&lt;br&gt;
{&lt;br&gt;
         builder.WithOrigins(\"&lt;a href="http://localhost:3000%5C%22"&gt;http://localhost:3000\"&lt;/a&gt;)&lt;br&gt;
         .AllowAnyHeader()&lt;br&gt;
         .AllowAnyMethod();&lt;br&gt;
            });&lt;br&gt;
      });&lt;br&gt;
}&lt;br&gt;
We need to change the origin as per requirements, we can also add multiple origins and can also set what method can access the controller.&lt;br&gt;
5.In configure method we need to add it as a middleware&lt;br&gt;
app.UseCors(\"AllowSpecificOrigin\");&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Implement CORS in .NET framework?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Install the Microsoft.AspNet.WebApi.Cors NuGet package&lt;/li&gt;
&lt;li&gt; We need to add the following line of code to the WebApiConfig.cs file -&amp;gt; config.EnableCors();&lt;/li&gt;
&lt;li&gt; We can also CORS in the controller level, method level as well. By adding EnableCors[“&lt;em&gt;”,”&lt;/em&gt;”,”*”] as an attribute from the controller top. This is the default value for security purpose we need to configure the Domain, Method, Port where we want to provide access.&lt;/li&gt;
&lt;li&gt; Another way is writing this code in a separate class file and providing all the domain URL’s, methods and ports and we can add this class as a attribute over the controller top.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;CORS in Microservice:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Prior to the standardization of CORS, the same-origin-policy (SOP) prohibits resource sharing between two web application domains with different origins. Yet today, microservice architecture is becoming more popular. This combines numerous tiny apps to create large, complicated applications. The ability to share resources is crucial for these little applications. Although they are hosted on several domains or ports and deployed on various servers, they are loosely connected. Standardized CORS are essential in this situation. Even when a http request is performed to a different domain, subdomain, protocol, or port, it still permits resource sharing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Significance of SOP:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SOP is a crucial security feature that limits the interactions between resources imported from different origins in a document or script. It assists in isolating potentially harmful papers, hence lowering attack surfaces. Cross Site Scripting (XSS) and Cross Site Request Forgery (CSRF) attacks frequently target or hit web applications. Developers of online applications have utilized SOP as a solution to this problem.&lt;/p&gt;

&lt;p&gt;The concept of "origin," which mandates that two web pages in the same domain, host, and protocol have the same origin, is a crucial part of SOP. Traditionally, origins are formatted as follows: "Origin= (domain, port, protocol)".&lt;/p&gt;

&lt;p&gt;For example, a rule running in a browser cannot access the values on other domains running in the alike browser. This is causing the web browser carries out the same origin tactics, isolating the data being joint between two different requests on the same portal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of CORS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.We can provide options for different domains of the application would establish communication between each other in a secure way.&lt;br&gt;
2.We can provide security of the resource in three levels.&lt;br&gt;
a. Origin level&lt;br&gt;
b. Method level&lt;br&gt;
c. Header level&lt;br&gt;
3.The front-end application can easily integrate with the back end in a secure for data exchanging.&lt;br&gt;
4.We can test the CORS header in the postman and verify it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages of CORS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.CORS increases the complexity of the applications, and it can introduce security risks if it is not properly implemented.&lt;br&gt;
2.Access-Control-Allow-Origin: (*) All domains are allowed which leads to CSRF attack.&lt;br&gt;
3.Improper regular expression in the validations leads to request failure even if it is a valid request.&lt;/p&gt;

</description>
      <category>cors</category>
      <category>webdev</category>
      <category>programming</category>
      <category>security</category>
    </item>
    <item>
      <title>Agile software development in simple.</title>
      <dc:creator>Arun Kumar Palani</dc:creator>
      <pubDate>Fri, 07 Oct 2022 12:04:43 +0000</pubDate>
      <link>https://forem.com/arunkumar2331996/agile-software-development-in-simple-2on0</link>
      <guid>https://forem.com/arunkumar2331996/agile-software-development-in-simple-2on0</guid>
      <description>&lt;p&gt;Hi I am Arun Kumar Palani, Senior software engineer in &lt;strong&gt;Luxoft&lt;/strong&gt;. Lets discuss agile in detail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Agile basically?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agile is a project management technique which is used to create software products in an iterative approach. Rather than creating a complete product in one stretch, we can breakdown that approach into smaller units, so that we can continuously deliver an item in each sprint. If any increment/story does not meet our expectations, we can only work on that increment and deliver it in the upcoming sprints by not disturbing the previously completed increments/stories. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sSwpVe_t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqxb5i2wqyc36s1d80dr.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sSwpVe_t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqxb5i2wqyc36s1d80dr.PNG" alt="Image description" width="880" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Quality products will be delivered at the end of each sprint. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The product will be developed and delivered faster than the waterfall model. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regular Inspection and adaptation when there is a change in requirements. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Openness and communication will be sent to all the levels in the team and can get clear visibility. We can directly talk to stakeholders and customers to get a clear picture of the exact requirement and track that in Jira or project management tool. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stakeholder engagement and client satisfaction can be reviewed at the end of each release. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;When the requirement is dynamic it is a bit hard to achieve the exact goal at the time described. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When the product is ever changing then it is a never-ending project.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What is Scrum?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Scrum is a framework for developing software products and it is one of the famous agile software development methodologies. Scrum is a lightweight framework, and it can create products in an incremental and iterative approach. It helps the organization and team to solve complex problems with adaptive resolution.  &lt;/p&gt;

&lt;p&gt;So, what are the main concepts of scrum? &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Scrum theory &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scrum values &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scrum team &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scrum artifacts &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scrum events &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Scrum theory:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;It is basically the set of ideas which is used to create a completely working software product. They are &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Transparency, &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inspection and &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adaptation.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These three main principles are very useful for creating iterative and incremental solutions. All these three principles are interrelated.  &lt;/p&gt;

&lt;p&gt;Transparency enables inspection and adaptation. &lt;/p&gt;

&lt;p&gt;Inspection without adaptation is not useful. &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Scrum Values:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;“The success” in the software we created using scrum mainly depends on how we are using the main scrum value. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are the main values of Scrum?&lt;/strong&gt; &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Commitment:&lt;/strong&gt; It is a goal that all the members in the team want to achieve and to create a valuable increment. The scrum master helps the development team by not adding anything in the middle of the sprint. This will help achieve the goals of the individual and sprint goal as well. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus:&lt;/strong&gt; It helps team members to focus on the sprint goal. This can be achieved by scrum master by not burdening the team members with additional tasks. If the team member faces an impediment, it should be immediately resolved so that focus of the sprint won't be affected. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Openness:&lt;/strong&gt; All the team members in the scrum team must be honest and transparent in their progress. The purpose of the daily scrum meetings is to share the progress of every individual in the team, and it helps to achieve openness with the help of transparency. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Respect:&lt;/strong&gt; It is the most important thing in the scrum team, all the team members should each other by their values and the work they do. There is a concept in scrum inside the team all are developers there is no seniority. One developer should equally respect other developers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Courage:&lt;/strong&gt; The scrum team must be open and courage to take the tuff problems and try to resolve them or try to find a solution to that problem. All the team members should be given a chance to work with this kind of problem so that equality in the scrum team is maintained. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scrum Team:&lt;/strong&gt; The scrum team is composed of the scrum master, the Product owner and the Development team. Within the scrum team there is no sub team. It is a cross functional team, which means all the members in the team must have the necessary skills to create a value. The scrum team is a self-managed team, they know what to do? When to do it? And how to do it? To create a value.&lt;/p&gt;

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

&lt;p&gt;The scrum team is a small team typically not more than 10 people so that it helps the team to communicate with each other. The smaller the team, the better the communication is. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Developer:&lt;/strong&gt; They are the members of the scrum team who are committed to creating an increment at each sprint. The skills of all the developers vary from domain to domain and project technical stack.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsibility of the developer:&lt;/strong&gt;  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go through the sprint backlog and create a plan for the sprint to execute it properly. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Committed to create a valuable increment each sprint. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cross functional, should adapt new technology and provide solutions &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accountability and should maintain professionalism to the team members and stories they committed to finish. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Must respect all the other developers in the team. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developers in the scrum team should have courage to take difficult stories and can complete them on time.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They should be adaptable for the changing requirement.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Product owner:&lt;/strong&gt; The product owner is the one who is accountable for maintaining the effective product backlog for the scrum team. He is the one who is responsible for maximizing the product value from the resultant work of the scrum team.  &lt;/p&gt;

&lt;p&gt;The product owner talks to the stakeholders and customers regularly and checks feedback for the item we delivered and for the new enhancements. The decision taken by the product owner is visible to all the stakeholders and the scrum team. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsibility of the Product owner:&lt;/strong&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Should reorder the product backlog. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Should define the product goal. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Responsible for clear communication for the product backlog items &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating transparent product backlog item. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Should help the development team when there is a doubt about the product backlog item. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regularly in touch with customers and get feedback and new enhancements they want. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Should take proper decision. Because the PO decision on the product is the final and the organization should respect it. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Scrum master:&lt;/strong&gt; The Scrum master is the one who establishes scrum in the team as well as the organizational level. They are helping the team to adapt scrum and coach them by understanding scrum values. &lt;/p&gt;

&lt;p&gt;The role of the scrum master is not only coaching scrum across team and organization. If they wish to develop some piece of code or if they wish to test some functionality, it is always allowed. The scrum master can perform dual roles if they wish to do it.  &lt;/p&gt;

&lt;p&gt;The scrum master must be in touch with the product owner and should help him find a technique to align product backlog items. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsibility of the Scrum master:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;To remove the impediments faced by the scrum team members. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Help people to coach scrum when it is required. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Helping the team members to create high valued increments and it should match the definition of done for that story. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide training and coaching scrum for the organization to adapt to it. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure that all meetings are happening at the same time so that consistency reduces the complexity. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Should create meetings properly with stakeholders at proper time so that the scrum team can ask their doubts and create a valuable increment. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It’s the responsibility of the scrum master to timebox all events like sprint planning, daily scrum, sprint review and sprint retrospective. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All the meetings are positive and productive, it’s again the responsibility of the scrum master. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Scrum artifacts:&lt;/strong&gt; Artifacts in the scrum describing the product goals/vision and how we are going to create a successful product. It is a roadmap for the product's success.  &lt;/p&gt;

&lt;p&gt;The three main artifacts of scrum methodology are  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Product backlog &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sprint backlog &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An increment &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What is Product backlog?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Product backlog describes the complete project, and it is a living document. Inside the product backlog the high valued items of the product are placed in an ordered way so that it can be picked up in the sprint refinement process and create a valuable increment. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who can do all these things?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The product owner is the one who maintains the product backlog and orders the highly valued stories at the top of the list. It's the duty of the product owner to contact the customers regularly and stakeholders to get feedback and new enhancements can be written in a priority-based stories in the product backlog. &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Sprint backlog:&lt;/strong&gt; It is the place where we keep track of all the work we are doing inside the sprint. The sprint backlog contains the stories or features which have high priority in the product backlog. When a feature or story is assigned to the sprint backlog it needs to be refined before starting the work. &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;An Increment:&lt;/strong&gt; At the end of each sprint an increment will be born. An increment is a valuable thing that adds value to the product and makes the product developed. This increment is reviewed by the stakeholders, product owners and customers before releasing that to the actual product. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When will the Increment be successful?&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;Once it meets all the points of the acceptance criteria, thoroughly reviewed by the product owner, giving enough time for the customer and stakeholders to review the changes. Once it meets all the definition of done the story will be considered as a successful increment. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who will mark the definition of done?&lt;/strong&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The developer in the scrum team will mark all the definition of done. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;But the product owner will cross verify the DOD. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, the increment is a new addition to the product and meets the goal of the product backlog in an iterative manner. If the story which fails to be a part of the increment it will be re-estimated and added again to the next sprint based on the priority. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scrum events:&lt;/strong&gt; All the events in the scrum process are timeboxed. We should keep track of the time for all the scrum meetings.  &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;The Sprint:&lt;/strong&gt; It is a time boxed event with the maximum time for the sprint 1 month and we can decrease the time period based on our work culture.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sprint planning:&lt;/strong&gt; Sprint planning is 8 hours and for a shorter sprint the time will decrease. In the sprint planning event, we will discuss with the entire team regarding the stories that we are going to pick and work on in the sprint. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sprint review:&lt;/strong&gt; 4 hours and for shorter sprint the time will decrease. In this event we will show case our active increment to the stakeholders and customers and will get review and feedback. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sprint retrospective:&lt;/strong&gt; 3 hours and for shorter sprint the time will decrease. In this event we will check what went wrong/good and how to improve the weaker areas all things will be discussed, and the checklist will be actively revisited at the next retro meeting. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Daily scrum:&lt;/strong&gt; 15 minutes. In this event we will check the below three points. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What are we going to do today? &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What did we do yesterday? &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Are there any impediments we are facing? &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What is Velocity?&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;Velocity is a term used to describe the scrum team’s completed work. Basically, it is calculated by the number of stories we estimated to take in to the sprint, before sprint starts and the number of stories we completed at the end of the sprint. &lt;/p&gt;

&lt;p&gt;The velocity chart looks like this, vertical axis – Total story points, horizontal axis – no of sprints. &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Average velocity of the team - 46:&lt;/strong&gt; It is calculated by  &lt;/p&gt;

&lt;p&gt;Total story delivered towards all the sprint/ number of sprints = 464/10 = 46.4 This team can complete 46 story points on average each sprint. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Burnt down chart:&lt;/strong&gt; It shows the actual progress of the team in a sprint. How effectively the time is used. &lt;/p&gt;

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

</description>
      <category>agile</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
