<?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: Shraddha</title>
    <description>The latest articles on DEV Community by Shraddha (@bagshraddha).</description>
    <link>https://dev.to/bagshraddha</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%2F328196%2Fdc0108a4-4276-413d-a511-5c0386a1fea6.jpg</url>
      <title>DEV Community: Shraddha</title>
      <link>https://dev.to/bagshraddha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bagshraddha"/>
    <language>en</language>
    <item>
      <title>Three Tier application on AWS.</title>
      <dc:creator>Shraddha</dc:creator>
      <pubDate>Thu, 26 Feb 2026 15:40:34 +0000</pubDate>
      <link>https://dev.to/bagshraddha/three-tier-application-on-aws-3a8g</link>
      <guid>https://dev.to/bagshraddha/three-tier-application-on-aws-3a8g</guid>
      <description>&lt;p&gt;While we deploy a three tier application,its very important to understand the three tiers or layers in short.I have explained the layers in brief:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tier 1 — Presentation Layer (Frontend)&lt;/strong&gt;&lt;br&gt;
Component: Nginx on EC2&lt;br&gt;
 Subnet: Public subnet&lt;br&gt;
 Port: 80 (HTTP)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Role&lt;/li&gt;
&lt;li&gt;Serves static files (HTML, CSS, JS)&lt;/li&gt;
&lt;li&gt;Receives user requests&lt;/li&gt;
&lt;li&gt;Forwards API calls to backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why in public subnet?&lt;/strong&gt;&lt;br&gt;
Any application has a frontend serving the clients so needs internet access.So that the users connect directly to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tier 2 — Application Layer (Backend)&lt;/strong&gt;&lt;br&gt;
Component: Node.js app (Express)&lt;br&gt;
 Runs on: Same EC2 instance&lt;br&gt;
 Port: 3000&lt;br&gt;
 Managed by: PM2&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Role&lt;/li&gt;
&lt;li&gt;Handles business logic&lt;/li&gt;
&lt;li&gt;Processes requests&lt;/li&gt;
&lt;li&gt;Communicates with database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;br&gt;
Security**&lt;br&gt;
Not directly exposed to internet.This layer is not exposed to the internet and no traffic is directly allowed as its a secured layer where userdata will reside.The backend is only accessible through Nginx.(webserver)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tier 3 — Data Layer (Database)&lt;/strong&gt;&lt;br&gt;
Component: RDS MySQL&lt;br&gt;
 Subnet: Private subnet&lt;br&gt;
 Public access: Disabled&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Role&lt;/li&gt;
&lt;li&gt;Stores books, users, reviews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here we have used RDS(Relational database service) of AWS.Only backend can connect so that its a highly secured application server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security benefit&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Database not exposed to internet&lt;/li&gt;
&lt;li&gt;Reduces attack surface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The deployment of the three tier architecture goes like this:&lt;/p&gt;

&lt;p&gt;NETWORK ARCHITECTURE :In this I have used VPC (virtual private cloud)&lt;/p&gt;

&lt;p&gt;🔹 1️⃣ VPC&lt;br&gt;
Name: capstone-vpc&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CIDR: 10.0.0.0/16&lt;/li&gt;
&lt;li&gt;DNS Resolution: ✅ Enabled&lt;/li&gt;
&lt;li&gt;DNS Hostnames: ✅ Enabled&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔹 2️⃣ Subnets (2 AZ High Availability)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public Subnets (Web + Public ALB + NAT)&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;AZ&lt;/li&gt;
&lt;li&gt;CIDR&lt;/li&gt;
&lt;li&gt;web-public-a&lt;/li&gt;
&lt;li&gt;ap-south-1a&lt;/li&gt;
&lt;li&gt;10.0.1.0/24&lt;/li&gt;
&lt;li&gt;web-public-b&lt;/li&gt;
&lt;li&gt;ap-south-1b&lt;/li&gt;
&lt;li&gt;10.0.2.0/24&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ Enable Auto-assign Public IP on both public subnets&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App Private Subnets (Internal ALB + App EC2)&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;AZ&lt;/li&gt;
&lt;li&gt;CIDR&lt;/li&gt;
&lt;li&gt;app-private-a&lt;/li&gt;
&lt;li&gt;ap-south-1a&lt;/li&gt;
&lt;li&gt;10.0.3.0/24&lt;/li&gt;
&lt;li&gt;app-private-b&lt;/li&gt;
&lt;li&gt;ap-south-1b&lt;/li&gt;
&lt;li&gt;&lt;p&gt;10.0.4.0/24&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DB Private Subnets (RDS only)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AZ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CIDR&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;db-private-a&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ap-south-1a&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;10.0.5.0/24&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;db-private-b&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ap-south-1b&lt;br&gt;
10.0.6.0/24&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔹 3️⃣ Internet Gateway&lt;br&gt;
Name: capstone-igw&lt;br&gt;
Attach to capstone-vpc&lt;/p&gt;

&lt;p&gt;🔹 4️⃣ NAT Gateway&lt;br&gt;
Create in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subnet: web-public-a&lt;/li&gt;
&lt;li&gt;Name: capstone-nat&lt;/li&gt;
&lt;li&gt;Connectivity: Public&lt;/li&gt;
&lt;li&gt;Allocate Elastic IP&lt;/li&gt;
&lt;li&gt;Wait until status = Available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔹 5️⃣ Route Tables &lt;br&gt;
Public Route Table&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: capstone-public-rt&lt;/li&gt;
&lt;li&gt;Route:&lt;/li&gt;
&lt;li&gt;0.0.0.0/0 → capstone-igw&lt;/li&gt;
&lt;li&gt;Associate:&lt;/li&gt;
&lt;li&gt;web-public-a&lt;/li&gt;
&lt;li&gt;web-public-b&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Private Route Table&lt;br&gt;
Name: capstone-private-rt&lt;br&gt;
Route:&lt;br&gt;
0.0.0.0/0 → capstone-nat&lt;br&gt;
Associate:&lt;br&gt;
app-private-a&lt;/p&gt;

&lt;p&gt;app-private-b&lt;/p&gt;

&lt;p&gt;db-private-a&lt;/p&gt;

&lt;p&gt;db-private-b&lt;/p&gt;

&lt;p&gt;✔ Network design is now correct.&lt;/p&gt;

&lt;p&gt;✅ PART 2 — SECURITY GROUPS Chain:&lt;br&gt;
Internet → Public ALB → Web EC2 → Internal ALB → App EC2 → RDS&lt;/p&gt;

&lt;p&gt;1️⃣ Public ALB SG&lt;br&gt;
Name: capstone-public-alb-sg&lt;br&gt;
Inbound:&lt;br&gt;
HTTP 80 → 0.0.0.0/0&lt;/p&gt;

&lt;p&gt;Outbound:&lt;br&gt;
Allow all&lt;/p&gt;

&lt;p&gt;2️⃣ Web EC2 SG&lt;br&gt;
Name: capstone-web-ec2-sg&lt;br&gt;
Inbound:&lt;br&gt;
HTTP 80 → Source: capstone-public-alb-sg&lt;/p&gt;

&lt;p&gt;SSH 22 → My IP&lt;/p&gt;

&lt;p&gt;Outbound:&lt;br&gt;
Allow all&lt;/p&gt;

&lt;p&gt;3️⃣ Internal ALB SG&lt;br&gt;
Name: capstone-internal-alb-sg&lt;br&gt;
Inbound:&lt;br&gt;
HTTP 80 → Source: capstone-web-ec2-sg&lt;/p&gt;

&lt;p&gt;Outbound:&lt;br&gt;
Allow all&lt;/p&gt;

&lt;p&gt;⚠ Not 0.0.0.0/0&lt;/p&gt;

&lt;p&gt;4️⃣ App EC2 SG&lt;br&gt;
Name: capstone-app-ec2-sg&lt;br&gt;
Inbound:&lt;br&gt;
Custom TCP 3001 → Source: capstone-internal-alb-sg&lt;/p&gt;

&lt;p&gt;SSH 22 → Source: capstone-web-ec2-sg&lt;/p&gt;

&lt;p&gt;Outbound:&lt;br&gt;
Allow all&lt;/p&gt;

&lt;p&gt;5️⃣ DB SG&lt;br&gt;
Name: capstone-db-sg&lt;br&gt;
Inbound:&lt;br&gt;
MySQL 3306 → Source: capstone-app-ec2-sg&lt;/p&gt;

&lt;p&gt;Outbound:&lt;br&gt;
Default&lt;/p&gt;

&lt;p&gt;Security design is correct ✅&lt;/p&gt;

&lt;p&gt;✅ TASK 3 — RDS (Highly Available)&lt;br&gt;
Engine: MySQL&lt;br&gt;
 Multi-AZ: Enabled&lt;br&gt;
 Read Replica: Enabled&lt;br&gt;
 Public Access: ❌ No&lt;br&gt;
 Subnet Group: db-private-a &amp;amp; db-private-b&lt;br&gt;
 Security Group: capstone-db-sg&lt;br&gt;
Initial DB Name: databasename&lt;/p&gt;

&lt;p&gt;✅ EC2 INSTANCES &lt;br&gt;
AMI: Ubuntu Server 22.04 LTS&lt;br&gt;
Username:&lt;br&gt;
ubuntu&lt;/p&gt;

&lt;p&gt;web-ec2&lt;br&gt;
Subnet: web-public-a&lt;/p&gt;

&lt;p&gt;Auto Public IP: Enabled&lt;/p&gt;

&lt;p&gt;SG: capstone-web-ec2-sg&lt;/p&gt;

&lt;p&gt;Key: capstone-key.pem&lt;/p&gt;

&lt;p&gt;app-ec2&lt;br&gt;
Subnet: app-private-a&lt;/p&gt;

&lt;p&gt;Public IP: Disabled&lt;/p&gt;

&lt;p&gt;SG: capstone-app-ec2-sg&lt;/p&gt;

&lt;p&gt;✅ INTERNAL TARGET GROUP&lt;br&gt;
Name: capstone-app-tg&lt;br&gt;
 Protocol: HTTP&lt;br&gt;
 Port: 3001&lt;br&gt;
 VPC: capstone-vpc&lt;br&gt;
 Target: app-ec2&lt;br&gt;
Health Check:&lt;br&gt;
Path: /&lt;/p&gt;

&lt;p&gt;Port: traffic port&lt;/p&gt;

&lt;p&gt;✅ INTERNAL ALB &lt;br&gt;
Name: capstone-internal-alb&lt;br&gt;
 Scheme: Internal&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subnets:&lt;/li&gt;
&lt;li&gt;app-private-a&lt;/li&gt;
&lt;li&gt;app-private-b&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security Group:&lt;br&gt;
capstone-internal-alb-sg&lt;/p&gt;

&lt;p&gt;Listener:&lt;br&gt;
HTTP 80 → Forward to capstone-app-tg&lt;/p&gt;

&lt;p&gt;✅ SSH (UBUNTU)&lt;br&gt;
From local machine:&lt;br&gt;
chmod 400 capstone-key.pem&lt;br&gt;
ssh -i capstone-key.pem ubuntu@&lt;br&gt;
From web to app:&lt;br&gt;
ssh -i capstone-key.pem ubuntu@&lt;br&gt;
(You may use SSH agent forwarding instead — better practice)&lt;/p&gt;

&lt;p&gt;✅ BACKEND SETUP (UBUNTU)&lt;br&gt;
On app-ec2:&lt;br&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br&gt;
sudo apt install git nodejs npm mysql-client -y&lt;br&gt;
sudo npm install -g pm2&lt;br&gt;
Clone:&lt;br&gt;
git clone &lt;a href="https://github.com/pravinmishraaws/book-review-app" rel="noopener noreferrer"&gt;https://github.com/pravinmishraaws/book-review-app&lt;/a&gt;&lt;br&gt;
cd book-review-app&lt;br&gt;
npm install&lt;br&gt;
cd backend&lt;br&gt;
Edit:&lt;br&gt;
nano .env&lt;br&gt;
Add:&lt;br&gt;
DB_HOST=&lt;br&gt;
DB_USER=admin&lt;br&gt;
DB_PASSWORD=Password123!&lt;br&gt;
DB_NAME=databasename&lt;br&gt;
PORT=3001&lt;br&gt;
ALLOWED_ORIGIN=http://&lt;br&gt;
Start:&lt;br&gt;
pm2 start src/server.js --name backend&lt;br&gt;
pm2 startup&lt;br&gt;
pm2 save&lt;/p&gt;

&lt;p&gt;✅ FRONTEND SETUP (UBUNTU)&lt;br&gt;
On web-ec2:&lt;br&gt;
sudo apt update&lt;br&gt;
sudo apt install nginx git nodejs npm -y&lt;br&gt;
sudo npm install -g npm&lt;br&gt;
sudo npm install -g pm2&lt;br&gt;
Clone:&lt;br&gt;
git clone &lt;a href="https://github.com/application_repo" rel="noopener noreferrer"&gt;https://github.com/application_repo&lt;/a&gt;&lt;br&gt;
cd app/frontend&lt;br&gt;
npm install&lt;br&gt;
Create .env:&lt;br&gt;
NEXT_PUBLIC_API_URL=/api&lt;br&gt;
Build:&lt;br&gt;
npm run build&lt;br&gt;
pm2 start npm --name frontend -- start&lt;br&gt;
pm2 save&lt;/p&gt;

&lt;p&gt;✅ NGINX CONFIG &lt;br&gt;
Edit:&lt;br&gt;
sudo nano /etc/nginx/sites-available/default&lt;br&gt;
Use your internal ALB DNS:&lt;br&gt;
proxy_pass http://;&lt;br&gt;
Test:&lt;br&gt;
sudo nginx -t&lt;br&gt;
sudo systemctl restart nginx&lt;/p&gt;

&lt;p&gt;✅ PUBLIC ALB &lt;br&gt;
Name: capstone-public-alb&lt;br&gt;
 Scheme: Internet-facing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Subnets:&lt;/li&gt;
&lt;li&gt;web-public-a&lt;/li&gt;
&lt;li&gt;web-public-b&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security Group:&lt;br&gt;
capstone-public-alb-sg&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;capstone-web-tg&lt;/li&gt;
&lt;li&gt;Port 80&lt;/li&gt;
&lt;li&gt;Target: web-ec2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ FINAL TRAFFIC FLOW &lt;br&gt;
User&lt;br&gt;
↓&lt;br&gt;
Public ALB&lt;br&gt;
↓&lt;br&gt;
Web EC2 (Ubuntu + Nginx + Frontend)&lt;br&gt;
↓&lt;br&gt;
Internal ALB&lt;br&gt;
↓&lt;br&gt;
App EC2 (Ubuntu + PM2 Backend 3001)&lt;br&gt;
↓&lt;br&gt;
RDS (Multi-AZ MySQL)&lt;/p&gt;

&lt;p&gt;In this designed architecture, we can host the application in three tiers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Presentation Layer (Frontend)&lt;/li&gt;
&lt;li&gt;Application Layer (Backend)&lt;/li&gt;
&lt;li&gt;Data Layer (Database)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;P.S.This post is a part of DMI Cohort run by Pravin Mishra.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>aws</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Exploring Jira.</title>
      <dc:creator>Shraddha</dc:creator>
      <pubDate>Thu, 05 Feb 2026 06:36:58 +0000</pubDate>
      <link>https://dev.to/bagshraddha/exploring-jira-39je</link>
      <guid>https://dev.to/bagshraddha/exploring-jira-39je</guid>
      <description>&lt;p&gt;This article explains the workflow processes in DevOps, focusing on managing work items and utilizing various process templates for effective project management.&lt;br&gt;
Managing work items effectively in  DevOps is essential for delivering high-quality software on time. Jira acts as your project’s central hub, providing a real-time view of progress, priorities, and blockers. Teams can collaborate directly on work items, update statuses, and link tasks to code, builds, and releases—all in one place.&lt;/p&gt;

&lt;p&gt;In a typical Agile Scrum setup, work moves through a few clear stages during every sprint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backlog grooming&lt;/strong&gt; is where the Product Owner collects new requirements, user stories, and bug fixes, then prioritizes them so the most important work comes first.&lt;/p&gt;

&lt;p&gt;Next comes &lt;strong&gt;sprint planning&lt;/strong&gt;, where the team picks the stories for the sprint, sets a goal, and estimates how much effort each task will take.&lt;/p&gt;

&lt;p&gt;During &lt;strong&gt;development and testing&lt;/strong&gt;, developers build the features while testers verify everything works as expected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan and track work with Scrum processes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You build a project plan by creating a backlog of work items that represent features, requirements, user stories, or other work. Track bugs, tasks, and blocking issues using the Bug, Task, and Impediment work item types. To support portfolio management, create features and epics to roll up PBIs across teams.&lt;br&gt;
**&lt;br&gt;
What is Scrum?**&lt;/p&gt;

&lt;p&gt;Scrum is a framework for developing and sustaining complex products. This Guide contains the definition of Scrum. This definition consists of Scrum’s accountabilities, events, artifacts, and the rules that bind them together. Ken Schwaber and Jeff Sutherland developed Scrum; the Scrum Guide is written and provided by them. Together, they stand behind the Scrum Guide.&lt;br&gt;
**&lt;br&gt;
How Work Flows in an Agile Scrum Sprint**&lt;/p&gt;

&lt;p&gt;When I started learning Scrum, one of the first things I wanted to understand was how work actually moves inside a sprint. It turns out that each sprint follows a simple but structured flow, and every stage has a clear purpose.&lt;/p&gt;

&lt;p&gt;Let’s break it down step by step.&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%2F9e8yid6qx2r78z30346w.jpg" 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%2F9e8yid6qx2r78z30346w.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Backlog Grooming (Refinement)&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where everything begins.&lt;/p&gt;

&lt;p&gt;The Product Owner collects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New requirements&lt;/li&gt;
&lt;li&gt;User stories&lt;/li&gt;
&lt;li&gt;Bug fixes&lt;/li&gt;
&lt;li&gt;Improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All these items go into the product backlog.&lt;br&gt;
Then they are prioritized, so the most valuable or urgent work is at the top.&lt;/p&gt;

&lt;p&gt;This step ensures the team always knows what matters most.&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Sprint Planning&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once the backlog is ready, the team moves into sprint planning.&lt;/p&gt;

&lt;p&gt;During this meeting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The team selects stories from the backlog&lt;/li&gt;
&lt;li&gt;Defines the sprint goal&lt;/li&gt;
&lt;li&gt;Estimates the effort required for each story&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of sprint planning, the team has a clear plan for the sprint.&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Development and Testing&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the main working phase of the sprint.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers build the features.&lt;/li&gt;
&lt;li&gt;Testers validate the functionality.&lt;/li&gt;
&lt;li&gt;The team meets daily in stand-up meetings to:&lt;/li&gt;
&lt;li&gt;Share progress&lt;/li&gt;
&lt;li&gt;Discuss blockers&lt;/li&gt;
&lt;li&gt;Stay aligned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps communication open and helps solve issues quickly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Sprint Review and Retrospective&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;At the end of the sprint, the team holds two important meetings.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sprint Review&lt;/li&gt;
&lt;li&gt;The team demonstrates completed work.&lt;/li&gt;
&lt;li&gt;Stakeholders give feedback.&lt;/li&gt;
&lt;li&gt;The product direction may be adjusted if needed.&lt;/li&gt;
&lt;li&gt;Sprint Retrospective&lt;/li&gt;
&lt;li&gt;The team reflects on the sprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Discusses:&lt;/p&gt;

&lt;p&gt;What went well&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What could be improved&lt;/li&gt;
&lt;li&gt;Decides small actions for the next sprint.&lt;/li&gt;
&lt;li&gt;This is how teams continuously improve.&lt;/li&gt;
&lt;li&gt;Final Thoughts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Scrum sprint isn’t just about building features.&lt;br&gt;
It’s a cycle of planning, building, reviewing, and improving.&lt;/p&gt;

&lt;p&gt;When each stage is followed properly, the team stays aligned, work becomes predictable, and improvements happen naturally with every sprint.&lt;/p&gt;

&lt;p&gt;P.S. This post is part of the DevOps Micro Internship (DMI) Cohort-2 by Pravin Mishra. You can start your DevOps journey by joining this Discord community (&lt;a href="https://lnkd.in/dZEzMSUR" rel="noopener noreferrer"&gt;https://lnkd.in/dZEzMSUR&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;Image credits: &lt;a href="https://kodekloud.com" rel="noopener noreferrer"&gt;https://kodekloud.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Further readings:&lt;br&gt;
&lt;a href="https://scrumguides.org/" rel="noopener noreferrer"&gt;https://scrumguides.org/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://notes.kodekloud.com/docs/AZ-400/Configure-Activity-Traceability-and-Flow-of-Work/Flow-of-Work-SCRUM/page" rel="noopener noreferrer"&gt;https://notes.kodekloud.com/docs/AZ-400/Configure-Activity-Traceability-and-Flow-of-Work/Flow-of-Work-SCRUM/page&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agile</category>
      <category>devops</category>
      <category>management</category>
      <category>productivity</category>
    </item>
    <item>
      <title>My Hands-On Journey with Git, GitHub &amp; Real-World Team Workflows</title>
      <dc:creator>Shraddha</dc:creator>
      <pubDate>Fri, 30 Jan 2026 12:37:15 +0000</pubDate>
      <link>https://dev.to/bagshraddha/my-hands-on-journey-with-git-github-real-world-team-workflows-3fli</link>
      <guid>https://dev.to/bagshraddha/my-hands-on-journey-with-git-github-real-world-team-workflows-3fli</guid>
      <description>&lt;p&gt;Learning git was never such fun.Lets simplify the version control journey. Version control is one of those things everyone uses, but not everyone truly understands—especially how it fits into real DevOps workflows.&lt;/p&gt;

&lt;p&gt;I spent time working deeply with Git, GitHub, and team-style workflows, and this week honestly changed how I look at source control. Git wasn’t about memorizing commands—it was about understanding why things are done a certain way in real projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From “Just Files” to Real Version Control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It all starts by setting up a small project on your local system. At first glance, it was just another folder—but the moment Git was initialized, that folder gained memory.How, use the command as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
`git init`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every change, every experiment, every rollback suddenly became traceable. That’s when it really hit me:&lt;br&gt;
Git isn’t about commands—it’s about accountability and confidence.&lt;/p&gt;

&lt;p&gt;We use the command &lt;code&gt;git status&lt;/code&gt; for tracing the changes. We create a new file for example index.html but how will git know its for the versioning or project so we add it by &lt;code&gt;git add index.html&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;Now git knows the file is for git but what about the pals who work with you on the same project so we are making a commit for a understanding with the command &lt;code&gt;git commit -m "Here goes the message"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I also worked with both local and global Git identities, which made me realize how important author attribution is in professional environments, especially when multiple teams and repositories are involved.Here we add our name and email while creating a config so that we all know who has done the commit, you now now where the accountability comes from!&lt;/p&gt;

&lt;p&gt;The commands used for setting up are :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`git config --local user.name "username"
    git config --local user.email "user@example.com"
`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suddenly we want to add a new file to the project so we create it but this time in a different way.Git is like a tree, the master/main is the tree trunk and we have to create a new branch and then merge it as different people are involved and we need to ensure that the main project is not effected.Imagine like its a production environment so slight change in the code can bring the application down.&lt;/p&gt;

&lt;p&gt;So we create a new branch that a new file with the command as (lets say its a feature update/contact-page)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`git checkout -b feature/contact-page`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We then have to make the required changes and merge it.We can use the commands as&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout master
git merge feature/contact-page
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So now we have create a new branch, edited the required and we have merged it with our main.(that is the tree trunk)This is the simplest way to understand git.&lt;/p&gt;

&lt;p&gt;But what about enormous code on the internet.Aren't those like roots all over the earth. Imagine you wish to fetch something like some other persons or other organizations repository(used repo in short)so what we do, we use a fork to use the code for own github account.&lt;/p&gt;

&lt;p&gt;Github is used as an example here so the enormous pool of code is the github, I can fork any public repo by forking it by simple pressing the button of 'fork'.&lt;/p&gt;

&lt;p&gt;Now what, we have cloned it to our own repo.Lets imagine that you are a developer in an xyz organization with a repo where you are required to fork, clone and then update the code.Lets say you are two friends working on two different pages(branches) and would report to a project lead.So you for the particular code would work and make changes as per requirement and then create a &lt;strong&gt;pull request&lt;/strong&gt;.By creating a pull request you are asking your manager to review the code.&lt;/p&gt;

&lt;p&gt;But here's where security comes in, we have to set up a secured connection from your local machine to the organizations account.&lt;br&gt;
So we generate PAT, nothing but access tokens that allow you to pass through the authentication grids.&lt;/p&gt;

&lt;p&gt;Later we check the connectivity by&lt;br&gt;&lt;br&gt;
&lt;code&gt;ssh -T git@github.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;These are the commands to set a origin URL and upstream URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote set-url origin 
git remote add upstream 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can verify the origin and upstream by the command as :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote -v

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

&lt;/div&gt;



&lt;p&gt;Once you have all set for the merging of your code and for your review you can then you can push it by&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`git push -u origin nameofthebranch`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then create a pull request by going to your fork on GitHub, Click Compare &amp;amp; pull request.Ensure PR target is correct and create a Pull request.This is the general flow or understanding.&lt;/p&gt;

&lt;p&gt;P.S. This post is a part of DevOps Micro Internship (DMIByPravinMishra) by&lt;/p&gt;

&lt;p&gt;If you’d like to join cohort 3.&lt;/p&gt;

&lt;p&gt;Join the Discord community here: &lt;a href="https://discord.com/invite/GKUuEaknTG" rel="noopener noreferrer"&gt;https://discord.com/invite/GKUuEaknTG&lt;/a&gt;&lt;/p&gt;

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

</description>
      <category>devops</category>
      <category>git</category>
      <category>github</category>
    </item>
    <item>
      <title>A dive in nginx!</title>
      <dc:creator>Shraddha</dc:creator>
      <pubDate>Thu, 22 Jan 2026 13:07:15 +0000</pubDate>
      <link>https://dev.to/bagshraddha/a-dive-in-nginx-47aj</link>
      <guid>https://dev.to/bagshraddha/a-dive-in-nginx-47aj</guid>
      <description>&lt;p&gt;What is a webserver?In simple words it serves the request received from a client using the hardware its hosted on and the software being used.&lt;/p&gt;

&lt;p&gt;So processing the request can be done in various ways right? Here comes the roles of different structures,and different types of webservers who have their own way of handling the request.Here are the main players namely apache, nginx,IIS Litespeed Openresty, Caddy etc.&lt;/p&gt;

&lt;p&gt;I have elaborated nginx and its working in this blog,and soon will focus on the others as well.&lt;/p&gt;

&lt;p&gt;Features:&lt;br&gt;
Asynchronous, Event-Driven Architecture as compared to Process/thread-based&lt;br&gt;
It can server max concurrent connections 10,000.&lt;/p&gt;

&lt;p&gt;The Event Loop takes multiple requests without waiting.&lt;br&gt;
Worker Processes prepares/computes and sends it to the client when each is ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Master Process&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Supervises worker lifecycle
Reloads configuration without downtime
Never blocks on I/O or client handling
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Worker Processes&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Each runs an independent, single-threaded event loop
Handles connection acceptance, reading, writing, and multiplexing
Scales across CPU cores by running multiple workers.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Here are few use cases which we will cover in later blogs.&lt;/strong&gt;&lt;br&gt;
Load Balancing&lt;br&gt;
Reverse Proxy&lt;br&gt;
Forward Proxy&lt;br&gt;
Caching&lt;/p&gt;

&lt;p&gt;Deep diving further into the nginx architecture, the main configuration file is at the /etc/nginx/nginx.conf&lt;/p&gt;

&lt;p&gt;At a glance, an &lt;strong&gt;nginx.conf&lt;/strong&gt; file is divided into four main sections:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Global settings
events block
http block
server block

**1.Global settings**
These settings define user permissions, worker processes,file location, compression, caching, and more.

**2.Events block**
This controls Nginx’s event model and the maximum number of simultaneous connections per worker.

**3.http block**
Contains HTTP directives for logging, timeouts, compression, MIME types, and includes for server blocks.

**4.server block**
Configures how Nginx responds to requests for specific domain names or IP addresses (virtual hosts).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Here are some important configuration files.&lt;/p&gt;

&lt;p&gt;/etc/nginx/nginx.conf   Main configuration file&lt;br&gt;
/etc/nginx/sites-available/ Store individual server block files&lt;br&gt;
/etc/nginx/sites-enabled/   Symbolic links to enabled sites from sites-available&lt;br&gt;
/etc/nginx/conf.d/  Additional configuration snippets (e.g., SSL, load balancing)&lt;br&gt;
/var/www/...    Default web content roots (Debian/Ubuntu)&lt;br&gt;
/usr/share/nginx/html&lt;/p&gt;

&lt;p&gt;I will further add the important and intermediate configurations as per the scenario so its easier for understanding.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Documents to refer:
https://nginx.org/en/docs/
https://notes.kodekloud.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;P.S. This post is a part of DevOps Micro Internship by &lt;strong&gt;Pravin Mishra.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webserver</category>
      <category>nginx</category>
    </item>
  </channel>
</rss>
