<?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>DEV Community: 19Naveen</title>
    <description>The latest articles on DEV Community by 19Naveen (@19naveen).</description>
    <link>https://dev.to/19naveen</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%2F2746705%2Fcdbca285-c142-439d-9d7b-1671c184d6c1.jpeg</url>
      <title>DEV Community: 19Naveen</title>
      <link>https://dev.to/19naveen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/19naveen"/>
    <language>en</language>
    <item>
      <title>3Tier Web Application</title>
      <dc:creator>19Naveen</dc:creator>
      <pubDate>Wed, 09 Apr 2025 16:55:07 +0000</pubDate>
      <link>https://dev.to/19naveen/3tier-web-application-3gh9</link>
      <guid>https://dev.to/19naveen/3tier-web-application-3gh9</guid>
      <description>&lt;h1&gt;
  
  
  AWS Three-Tier Web Architecture: Comprehensive Setup Guide
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

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

&lt;p&gt;The three-tier web architecture is a proven design pattern that separates an application into three logical tiers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Presentation Tier (Web Tier)&lt;/li&gt;
&lt;li&gt;Application Tier (App Tier)&lt;/li&gt;
&lt;li&gt;Data Tier (Database Tier)&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ul&gt;
&lt;li&gt;Virtual Private Cloud (VPC)&lt;/li&gt;
&lt;li&gt;Subnets across multiple Availability Zones&lt;/li&gt;
&lt;li&gt;Internet Gateway&lt;/li&gt;
&lt;li&gt;NAT Gateway&lt;/li&gt;
&lt;li&gt;Security Groups&lt;/li&gt;
&lt;li&gt;Elastic Load Balancers&lt;/li&gt;
&lt;li&gt;EC2 Instances&lt;/li&gt;
&lt;li&gt;RDS Database&lt;/li&gt;
&lt;li&gt;S3 Bucket&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Network Infrastructure Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1 VPC Configuration
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;Create a VPC with CIDR block (e.g., 10.0.0.0/16)&lt;/li&gt;
&lt;li&gt;Enable DNS hostnames and support&lt;/li&gt;
&lt;li&gt;Use VPC Wizard or AWS Console "VPC and more" feature&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Subnet Strategy
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Public Subnets (Web Tier):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For internet-facing resources&lt;/li&gt;
&lt;li&gt;Typically in different Availability Zones&lt;/li&gt;
&lt;li&gt;Associated with Internet Gateway&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Private Subnets (App and Database Tiers):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For internal application and database resources&lt;/li&gt;
&lt;li&gt;Not directly accessible from the internet&lt;/li&gt;
&lt;li&gt;Routed through NAT Gateway&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  1.2 Internet and NAT Gateways
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;Create an Internet Gateway and attach to VPC&lt;/li&gt;
&lt;li&gt;Create NAT Gateway in each public subnet&lt;/li&gt;
&lt;li&gt;Configure route tables to direct traffic appropriately&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1.3 Security Groups
&lt;/h3&gt;

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

&lt;p&gt;Create distinct security groups for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web Tier EC2 Instances&lt;/li&gt;
&lt;li&gt;Application Tier EC2 Instances&lt;/li&gt;
&lt;li&gt;Load Balancers&lt;/li&gt;
&lt;li&gt;RDS Database&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Best Practices
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Implement least privilege principle&lt;/li&gt;
&lt;li&gt;Only open necessary ports&lt;/li&gt;
&lt;li&gt;Restrict inbound and outbound traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sample Web Security Group&lt;/strong&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  1.4 Route Table
&lt;/h3&gt;

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

&lt;h2&gt;
  
  
  2. Compute Resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 EC2 Instances and Roles
&lt;/h3&gt;

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

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

&lt;ul&gt;
&lt;li&gt;Launch instances in private subnets&lt;/li&gt;
&lt;li&gt;Use Amazon Linux 2 or Amazon Linux 2023&lt;/li&gt;
&lt;li&gt;Create IAM roles for SSM and S3 access&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Web Tier EC2
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Hosts web server and frontend&lt;/li&gt;
&lt;li&gt;Placed in public subnet behind load balancer&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Application Tier EC2
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Hosts backend application logic&lt;/li&gt;
&lt;li&gt;Placed in private subnet&lt;/li&gt;
&lt;li&gt;Communicates with database tier&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Database Tier
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 RDS Configuration
&lt;/h3&gt;

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

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

&lt;ul&gt;
&lt;li&gt;Use Amazon Aurora MySQL&lt;/li&gt;
&lt;li&gt;Multi-AZ deployment for high availability&lt;/li&gt;
&lt;li&gt;Create subnet group across multiple AZs&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Database Setup Steps
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Create subnet group&lt;/li&gt;
&lt;li&gt;Choose Dev/Test template&lt;/li&gt;
&lt;li&gt;Configure database insights&lt;/li&gt;
&lt;li&gt;Set up monitoring (optional)&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3.2 Database Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Create database&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;webappdb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Create transactions table&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt; &lt;span class="n"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="nb"&gt;DECIMAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Insert sample data&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="k"&gt;VALUES&lt;/span&gt; 
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'groceries'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'class'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'other groceries'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'brownies'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Storage and Code Deployment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 S3 Bucket
&lt;/h3&gt;

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

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

&lt;ul&gt;
&lt;li&gt;Create S3 bucket for application code&lt;/li&gt;
&lt;li&gt;Use versioning and encryption&lt;/li&gt;
&lt;li&gt;Configure appropriate IAM policies&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4.2 Code Deployment
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone repository&lt;/span&gt;
git clone https://github.com/Naveen3251/AWS_3Tier.git

&lt;span class="c"&gt;# Update database configuration&lt;/span&gt;
&lt;span class="c"&gt;# Edit app-tier/DbConfig.js with:&lt;/span&gt;
&lt;span class="c"&gt;# - RDS endpoint&lt;/span&gt;
&lt;span class="c"&gt;# - Database credentials&lt;/span&gt;
&lt;span class="c"&gt;# - Database name (webappdb)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Application Setup
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2FData%2FEC2_SSM2_installation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2FData%2FEC2_SSM2_installation.png" alt="EC2 SSM Installation" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 Node.js Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Node Version Manager (NVM)&lt;/span&gt;
curl &lt;span class="nt"&gt;-o-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

&lt;span class="c"&gt;# Install Node.js&lt;/span&gt;
nvm &lt;span class="nb"&gt;install &lt;/span&gt;16
nvm use 16

&lt;span class="c"&gt;# Install PM2 process manager&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; pm2

&lt;span class="c"&gt;# Install application dependencies&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# Start application&lt;/span&gt;
pm2 start index.js
pm2 startup
pm2 save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.2 Verification Endpoints
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Health Check: &lt;code&gt;GET /health&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Transactions: &lt;code&gt;GET /transaction&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Internal Load Balancing and Auto Scaling
&lt;/h2&gt;

&lt;p&gt;Create Target Group:&lt;/p&gt;

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

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

&lt;p&gt;Create Load Balancer:&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Review&lt;/strong&gt;&lt;/p&gt;

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

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

&lt;p&gt;Launch Template:&lt;/p&gt;

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

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

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

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

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

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

&lt;p&gt;Update Config File&lt;br&gt;
Web Instance Deployment&lt;br&gt;
Configure Web Instance&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Monitoring and Maintenance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Enable AWS CloudWatch metrics&lt;/li&gt;
&lt;li&gt;Set up alarms for resource utilization&lt;/li&gt;
&lt;li&gt;Regularly update and patch instances&lt;/li&gt;
&lt;li&gt;Implement backup strategies&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Estimated Costs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Monitor resources using AWS Cost Explorer&lt;/li&gt;
&lt;li&gt;Consider using AWS Budgets&lt;/li&gt;
&lt;li&gt;Leverage AWS Free Tier for learning&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>AWS 101 Practice Workshop</title>
      <dc:creator>19Naveen</dc:creator>
      <pubDate>Mon, 31 Mar 2025 14:05:01 +0000</pubDate>
      <link>https://dev.to/19naveen/aws-101-practice-workshop-43dh</link>
      <guid>https://dev.to/19naveen/aws-101-practice-workshop-43dh</guid>
      <description>&lt;h1&gt;
  
  
  &lt;code&gt;Architecture Diagram&lt;/code&gt;
&lt;/h1&gt;

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

&lt;p&gt;&lt;strong&gt;Build Website&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setup Networking (VPC)&lt;/li&gt;
&lt;li&gt;Resource Security (SGs)&lt;/li&gt;
&lt;li&gt;Access Management (IAM)&lt;/li&gt;
&lt;li&gt;Deploy Compute (EC2)&lt;/li&gt;
&lt;li&gt;Administer Web Server (SSM)&lt;/li&gt;
&lt;li&gt;Load Balancing (ALB)&lt;/li&gt;
&lt;li&gt;Storage (S3)&lt;/li&gt;
&lt;li&gt;Scaling (ASG)&lt;/li&gt;
&lt;li&gt;Test Web Server&lt;/li&gt;
&lt;li&gt;Final Output&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Setup Networking (VPC)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the AWS Management Console and locate the VPC service.&lt;/li&gt;
&lt;li&gt;Click Create VPC.&lt;/li&gt;
&lt;li&gt;Select VPC and more. This will start the VPC wizard.&lt;/li&gt;
&lt;li&gt;Create a private and public subnet in 2 Availability Zone
Each subnet is connected to a route table, which determines how network traffic is routed. The public subnets are routed to an Internet Gateway&lt;/li&gt;
&lt;li&gt;In the NAT gateways section, select 1 per AZ.&lt;/li&gt;
&lt;li&gt;Review the Network&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Click Create VPC&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;✅ &lt;strong&gt;Your VPC with public &amp;amp; private subnets is now ready!&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Resource Security (SGs)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Browse to the Security Groups part of the Amazon EC2 service.&lt;/li&gt;
&lt;li&gt;click Create security group to define a new custom security group for our resource&lt;/li&gt;
&lt;li&gt;In the Inbound rules section click Add rule

&lt;ol&gt;
&lt;li&gt;Load Balancer --&amp;gt; HTTP   TCP 80  Anywhere-IPv4   Allow HTTP inbound from Internet&lt;/li&gt;
&lt;li&gt;EC2 --&amp;gt; HTTP TCP 80  Load Balancer Security Group    Allow HTTP inbound from Load Balancer&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Tags are metadata labels you can apply to AWS resources for organization and cost tracking. Create a new tag for the security group by clicking Add new tag. Enter Name for Key and LoadBalancerSecurityGroup for Value.&lt;/li&gt;
&lt;li&gt;Finalize the creation by clicking Create security group&lt;/li&gt;
&lt;/ul&gt;

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

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

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

&lt;p&gt;✅ &lt;strong&gt;Your Secuirty Group is Created...&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Access Management (IAM)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Browse to the IAM service and click create Role.&lt;/li&gt;
&lt;li&gt;Select AWS Service. Choose EC2 for the service or use case.&lt;/li&gt;
&lt;li&gt;Select EC2 Role for AWS Systems Manager and click Next&lt;/li&gt;
&lt;li&gt;Confirm that the AmazonSSMManagedInstanceCore policy and AmazonS3ReadOnlyAccess Policy has been added to the role and click Next&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Name the role. Scroll to the bottom and click Create role&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h2&gt;
  
  
  4. Deploy Compute (EC2)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Browse to the EC2 service.&lt;/li&gt;
&lt;li&gt;Click Launch Instance.&lt;/li&gt;
&lt;li&gt;Name the server and choose the created VPC, SG, add Role and paste the code then click create.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
yum update -y
# Install Session Manager agent
yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
systemctl enable amazon-ssm-agent
# Install and start the php web server
dnf install -y httpd wget php-json php
chkconfig httpd on
systemctl start httpd
systemctl enable httpd

# Install AWS SDK for PHP
wget https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip
unzip aws.zip -d /var/www/html/sdk
rm aws.zip

#Install the web pages for our lab
if [ ! -f /var/www/html/index.html ]; then
rm index.html
fi
cd /var/www/html
wget https://ws-assets-prod-iad-r-iad-ed304a55c2ca1aee.s3.us-east-1.amazonaws.com/2aa53d6e-6814-4705-ba90-04dfa93fc4a3/index.php

# Update existing packages
dnf update -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;h2&gt;
  
  
  5. Administer Web Server (SSM)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In the Amazon EC2 dashboard, select the web server instance. You'll notice it only has a private IP address, not a public one&lt;/li&gt;
&lt;li&gt;Select the Session Manager tab in ec2 instance and click Connect.&lt;/li&gt;
&lt;li&gt;run the following commands:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo -n 'Private IPv4 Address: ' &amp;amp;&amp;amp; ifconfig enX0 | grep -i mask | awk '{print $2}'| cut -f2 -d: &amp;amp;&amp;amp; \
echo -n 'Public IPv4 Address: ' &amp;amp;&amp;amp; curl checkip.amazonaws.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2FData%2FSSM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/.%2FData%2FSSM.png" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
Excellent, there's the private IP address you noted in step 1 This means we successfully connected to the right instance without exposing the SSH protocol. However, you'll also notice there is a Public IP address - this is the Elastic IP allocated for the NAT Gateway. The NAT Gateway allows resources in the private subnet, like our web server, to communicate with the Internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Load Balancing (ALB)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create load balancer.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Create under Application Load Balancer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Basic configuration&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load balancer name   WebServerLoadBalancer&lt;/li&gt;
&lt;li&gt;Basic configuration  Scheme  Internet-facing&lt;/li&gt;
&lt;li&gt;Basic configuration  Load balancer IP address type   IPv4&lt;/li&gt;
&lt;li&gt;Network mapping  VPC project-vpc&lt;/li&gt;
&lt;li&gt;Network mapping  Availability Zone 1 project-subnet-public1&lt;/li&gt;
&lt;li&gt;Network mapping  Availability Zone 2 project-subnet-public2&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;add the Load Balancer Security Group you created earlier.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;add ALB security group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Leave the default settings of HTTP and port 80 in the Listeners and routing section, then click Create target group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure the new target group with the following settings:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Basic configuration  Target group name WebServerTargetGroup&lt;/li&gt;
&lt;li&gt;Basic configuration  Protocol    HTTP&lt;/li&gt;
&lt;li&gt;Basic configuration  Port    80&lt;/li&gt;
&lt;li&gt;Basic configuration  IP address type IPv4&lt;/li&gt;
&lt;li&gt;Basic configuration  VPC project-vpc&lt;/li&gt;
&lt;li&gt;Basic configuration  Protocol version    HTTP1&lt;/li&gt;
&lt;li&gt;Health checks    Health check protocol   HTTP&lt;/li&gt;
&lt;li&gt;Health checks    Health check path   /&lt;/li&gt;
&lt;li&gt;Next to proceed to the register targets settings.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select mywebserver and click include as pending below. This will configure the load balancer to route web traffic from the Internet to the EC2 web server instance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Create target group to finalize the setup, &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;close the browser tab to return to the load balancer configuration.&lt;/li&gt;
&lt;li&gt;In the Listeners and routing section, click the refresh button and select the WebServerTargetGroup we just created&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;click Create load balancer&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h2&gt;
  
  
  7. Storage (S3)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Click Create Bucket&lt;/li&gt;
&lt;li&gt;Upload some files to the bucket&lt;/li&gt;
&lt;li&gt;Download Data from this &lt;a href="https://ws-assets-prod-iad-r-iad-ed304a55c2ca1aee.s3.us-east-1.amazonaws.com/2aa53d6e-6814-4705-ba90-04dfa93fc4a3/UnzipAndUpload.zip" rel="noopener noreferrer"&gt;Link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Auto Scaling Group
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create Launch Template&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Create Auto Scaling Group using the Launch Template

&lt;ol&gt;
&lt;li&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnjqio5756ux8aq34g5xa.png" alt="Image description" width="800" height="374"&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41al5ae0k1pckr77er6e.png" alt="Image description" width="800" height="354"&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Review the information before creating ASG
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu453bfl435ttwztyb6ct.png" alt="Image description" width="800" height="365"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. Test Web Server
&lt;/h2&gt;

&lt;p&gt;Copy the DNS name from the Load Balancer page and paste it into a new browser tab. Make sure it's http not https...&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Output:
&lt;/h2&gt;

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

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

</description>
      <category>aws</category>
    </item>
    <item>
      <title>Amazon Network Load Balancer</title>
      <dc:creator>19Naveen</dc:creator>
      <pubDate>Wed, 22 Jan 2025 10:01:35 +0000</pubDate>
      <link>https://dev.to/19naveen/aws-glue-5d2b</link>
      <guid>https://dev.to/19naveen/aws-glue-5d2b</guid>
      <description>&lt;p&gt;_&lt;em&gt;Your high-performance gateway for handling millions of requests with ultra-low latency&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftj5j2gjlgb0r2rufiagy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftj5j2gjlgb0r2rufiagy.jpeg" alt="Image description" width="270" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazon Network Load Balancer represents AWS's Layer 4 load balancing solution, designed to handle the most demanding workloads while maintaining exceptional performance. Operating at the connection level (TCP/UDP), it serves as your network's traffic conductor, efficiently distributing incoming requests across multiple targets, such as EC2 instances, containers, and IP addresses. In other words Elastic Load Balancing automatically distributes your incoming traffic across multiple targets, such as EC2 instances, containers, and IP addresses, in one or more Availability Zones. It monitors the health of its registered targets, and routes traffic only to the healthy targets. Elastic Load Balancing scales your load balancer as your incoming traffic changes over time. It can automatically scale to the vast majority of workloads. Some of the components of NLB are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html" rel="noopener noreferrer"&gt;Load balancers&lt;/a&gt;: Listeners define how NLB handles incoming traffic by specifying the protocol and port.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html" rel="noopener noreferrer"&gt;Listeners&lt;/a&gt;: Backend resources (e.g., EC2 instances) are grouped into target groups. NLB directs traffic to targets within these groups.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html" rel="noopener noreferrer"&gt;Target groups&lt;/a&gt;: Periodic health checks ensure only healthy targets receive traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Think of NLB as a highly efficient traffic controller at a busy airport. Just as an air traffic controller needs to handle multiple aircraft simultaneously while ensuring minimal delays, NLB manages millions of requests per second while maintaining consistent, low-latency connections. Its ability to preserve source IP addresses and maintain static IP endpoints makes it particularly valuable for applications requiring precise network control and predictable addressing.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does It Work?
&lt;/h2&gt;

&lt;p&gt;The Network Load Balancer routes incoming client requests to backend targets (e.g., EC2 instances, IP addresses, or containers) based on predefined rules. It uses static IP addresses for consistent endpoint management and performs health checks to ensure traffic is only sent to healthy targets.&lt;/p&gt;

&lt;p&gt;Let's try to understand the flow with an example:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwrd887ytor9twgjllcx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwrd887ytor9twgjllcx.png" alt="Example" width="431" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Flow Example: With Two EC2 Instances&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Incoming Request&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A client sends an HTTPS request to &lt;code&gt;https://example.com&lt;/code&gt; (NLB’s endpoint).
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;NLB Listeners&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Listener on port 443 identifies the request and routes it to Target Group A.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Target Group A&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contains EC2 Instance 1 and EC2 Instance 2.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Health Check&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NLB checks if both instances are healthy:

&lt;ul&gt;
&lt;li&gt;EC2 Instance 1: Healthy ✅
&lt;/li&gt;
&lt;li&gt;EC2 Instance 2: Healthy ✅
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Traffic Routing&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NLB sends the request to EC2 Instance 1 (based on load distribution).
&lt;/li&gt;
&lt;li&gt;If EC2 Instance 1 is busy or fails health checks later, NLB will route traffic to EC2 Instance 2.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Response to Client&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 Instance 1 processes the request and sends the response back via the NLB to the client.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Key Features of AWS Network Load Balancer (NLB)&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ultra-Low Latency&lt;/strong&gt; : NLB is designed to handle millions of requests per second with minimal latency, making it ideal for latency-sensitive applications.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TCP, UDP, and TLS Support&lt;/strong&gt; : Supports multiple transport protocols, including TCP for general-purpose traffic, UDP for real-time applications, and TLS for secure connections with built-in TLS termination.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Static IP Addresses and Elastic IPs&lt;/strong&gt; : Assigns static IP addresses to each load balancer, simplifying DNS configurations and providing consistent endpoints. Elastic IPs can also be used for better control over IP allocation.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cross-Zone Load Balancing&lt;/strong&gt; : Distributes traffic evenly across targets in multiple Availability Zones (AZs), ensuring reliability and high availability.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IP Address Targeting&lt;/strong&gt; : Routes traffic directly to targets using private IP addresses, enabling seamless integration with on-premises and hybrid cloud environments.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Health Checks&lt;/strong&gt; : Continuously monitors the health of registered targets and routes traffic only to healthy instances, ensuring high reliability.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;: Automatically scales to handle traffic spikes, supporting millions of connections without manual intervention.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integration with Other AWS Services&lt;/strong&gt;: Works seamlessly with AWS services like Amazon ECS, Amazon EKS, and AWS CloudFormation for automated deployments.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How NLB is different from Other Load Balancer
&lt;/h2&gt;

&lt;p&gt;When compared to its siblings in the AWS load balancer family, NLB stands out for its raw performance capabilities. While Application Load Balancer (ALB) excels at HTTP-level routing and Classic Load Balancer (CLB) offers basic load balancing, NLB specializes in high-throughput, low-latency scenarios where every millisecond counts.&lt;/p&gt;

&lt;p&gt;A key distinguishing feature is its ability to handle both TCP and UDP protocols, making it the go-to choice for applications like gaming servers, IoT devices, and media streaming platforms where consistent, high-speed performance is crucial.&lt;/p&gt;

&lt;h2&gt;
  
  
  REAL WORLD APPLICATIONS
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gaming Servers&lt;/strong&gt;: Handle high-speed, real-time connections for multiplayer games.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IoT Applications:&lt;/strong&gt; Efficiently manage millions of device connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Financial Services&lt;/strong&gt;: Provide low-latency, secure connections for financial transactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Web Applications:&lt;/em&gt;&lt;/strong&gt; Distribute traffic across multiple servers to ensure reliability and high availability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microservices&lt;/strong&gt;: Direct traffic between containerized applications on ECS or EKS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content Delivery&lt;/strong&gt; : Directs incoming requests to geographically distributed resources, improving response times for content-heavy applications.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Benefits of migrating from a Classic Load Balancer
&lt;/h2&gt;

&lt;p&gt;Using a Network Load Balancer instead of a Classic Load Balancer has the following benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ability to handle volatile workloads and scale to millions of requests per second.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for static IP addresses for the load balancer. You can also assign one Elastic IP address per subnet enabled for the load balancer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for registering targets by IP address, including targets outside the VPC for the load balancer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for routing requests to multiple applications on a single EC2 instance. You can register each instance or IP address with the same target group using multiple ports.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for containerized applications. Amazon Elastic Container Service (Amazon ECS) can select an unused port when scheduling a task and register the task with a target group using this port. This enables you to make efficient use of your clusters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for monitoring the health of each service independently, as health checks are defined at the target group level and many Amazon CloudWatch metrics are reported at the target group level. Attaching a target group to an Auto Scaling group enables you to scale each service dynamically based on demand.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;The pricing model for NLB is based on the following components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Load Balancer Hours&lt;/strong&gt;:
Charges apply for each hour or partial hour the load balancer is active.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Processing Charges&lt;/strong&gt;:
Billed per GB of data processed through the load balancer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional Features&lt;/strong&gt;:
Additional costs for cross-zone load balancing or using static IPs.
For detailed pricing, visit the &lt;a href="https://aws.amazon.com/elasticloadbalancing/pricing/" rel="noopener noreferrer"&gt;&lt;strong&gt;AWS Pricing Page&lt;/strong&gt;&lt;/a&gt; for Network Load Balancer.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Limitations and Challenges
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Protocol Constraints&lt;/strong&gt;:
Only operates at Layer 4; for advanced HTTP/HTTPS routing, use Application Load Balancer (ALB).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning Curve&lt;/strong&gt;: Requires understanding network configurations to utilize it effectively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Additional Costs&lt;/strong&gt;:
High data processing requirements can lead to increased costs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Real-World Example: Online Streaming Platform&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Scenario&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A popular online streaming platform needed a reliable and high-performance load-balancing solution to handle millions of concurrent viewers globally while ensuring minimal latency and uninterrupted service.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;How It Is Used&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Traffic Distribution&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The AWS Network Load Balancer directs incoming TCP traffic from viewers to multiple backend media servers located in various AWS Availability Zones.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Health Monitoring&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuous health checks ensure only healthy servers receive traffic, preventing downtime for users.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NLB automatically scales to manage traffic spikes during popular live events, such as sports or concerts, without requiring manual intervention.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Static IP and Elastic IPs&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The platform uses NLB's static IPs to simplify DNS configurations for consistent endpoints across their global user base.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TLS Termination&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NLB terminates TLS connections at the load balancer, offloading encryption overhead from backend servers, improving performance.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Outcome&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The platform achieved low-latency streaming for millions of users.
&lt;/li&gt;
&lt;li&gt;High availability ensured no disruptions during traffic surges.
&lt;/li&gt;
&lt;li&gt;Simplified operations with automated scalability and static IPs.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;: Similar use cases include video streaming platforms like Netflix or Twitch, which rely on high-performance load balancers for seamless user experiences.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Refer AWS Documentation to learn more Details about &lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html" rel="noopener noreferrer"&gt;Network Load Balancer&lt;/a&gt;&lt;br&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Steps to create a Network Load Balancer: &lt;a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html" rel="noopener noreferrer"&gt;AWS NLB Creation Guide&lt;/a&gt;
&lt;/h2&gt;

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