<?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: Duru Juliet Chinenye</title>
    <description>The latest articles on DEV Community by Duru Juliet Chinenye (@duru_julietchinenye_349f).</description>
    <link>https://dev.to/duru_julietchinenye_349f</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%2F3720567%2Fb472d41c-c8b8-464f-aed6-41043d430684.jpg</url>
      <title>DEV Community: Duru Juliet Chinenye</title>
      <link>https://dev.to/duru_julietchinenye_349f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/duru_julietchinenye_349f"/>
    <language>en</language>
    <item>
      <title>production-grade deployment of The Epic Book, a Node.js + MySQL web application on AWS</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Thu, 23 Apr 2026 15:45:25 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/production-grade-deployment-of-the-epic-book-a-nodejs-mysql-web-application-on-aws-5ghi</link>
      <guid>https://dev.to/duru_julietchinenye_349f/production-grade-deployment-of-the-epic-book-a-nodejs-mysql-web-application-on-aws-5ghi</guid>
      <description>&lt;p&gt;Just deployed a full-stack web application to AWS using Terraform + Ansible.&lt;/p&gt;

&lt;p&gt;As part of my cloud engineering journey, I completed a &lt;/p&gt;

&lt;p&gt;Here's what I built from scratch:&lt;/p&gt;

&lt;p&gt;Infrastructure (Terraform)&lt;br&gt;
• VPC, public subnet, internet gateway, and route tables&lt;br&gt;
• Security groups with control&lt;br&gt;
• Ubuntu 22.04 EC2 instance with SSH key authentication&lt;br&gt;
• All infrastructure destroyed and recreated in minutes; that’s the power of IaC&lt;/p&gt;

&lt;p&gt;Configuration Management (Ansible)&lt;br&gt;
• 3 clean, reusable roles: common → nginx → epicbook&lt;br&gt;
• Nginx configured as a reverse proxy in front of Node.js&lt;br&gt;
• MySQL provisioned and configured automatically&lt;br&gt;
• PM2 process manager keeping the app alive&lt;br&gt;
• Fully idempotent: re-running the playbook shows zero failures&lt;/p&gt;

&lt;p&gt;Result: A live, browser-accessible web app served over HTTP with nginx proxying to a Node.js backend connected to MySQL, all automated, repeatable, and production-ready.&lt;/p&gt;

&lt;p&gt;Challenges I overcame:&lt;br&gt;
• The app wasn't a static site; it had to switch from file serving to a full reverse proxy setup&lt;br&gt;
• MySQL authentication required, matching the app's config exactly&lt;br&gt;
• Port conflicts on re-runs taught me the importance of clean state management in automation&lt;/p&gt;

&lt;p&gt;What this taught me: Real deployments are never just "run a script, and it works." They require understanding full-stack networking, web servers, application runtimes, databases, and process management and how they all connect.&lt;/p&gt;

&lt;p&gt;This is exactly how production engineering teams operate, and I'm proud to have built it end-to-end. &lt;br&gt;
Tech used: AWS EC2 · Terraform · Ansible · Nginx · Node.js · MySQL · PM2 · Ubuntu 22.04&lt;br&gt;
I want to sincerely thank my mentors, Pravin Mishra, Praveen Pandey, Abhishek Makwana ,Mobarak Hosen,Onuche Paul and Nkechi Anna Ahanonye&lt;/p&gt;

&lt;h1&gt;
  
  
  DevOps #AWS #Terraform #Ansible #CloudEngineering #IaC #Linux #Nginx #NodeJS #MySQL #LearningInPublic #CloudComputing #Infrastructure
&lt;/h1&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>node</category>
      <category>terraform</category>
    </item>
    <item>
      <title>Deployment of a Mini Finance Dashboard using Terraform and Ansible</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Thu, 23 Apr 2026 15:03:38 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/deployment-of-a-mini-finance-dashboard-using-terraform-and-ansible-497j</link>
      <guid>https://dev.to/duru_julietchinenye_349f/deployment-of-a-mini-finance-dashboard-using-terraform-and-ansible-497j</guid>
      <description>&lt;p&gt;Deployed the Mini Finance Dashboard this week using Terraform and Ansible. &lt;/p&gt;

&lt;p&gt;Here is what I built:&lt;br&gt;
Provisioned an AWS EC2 instance using Terraform &lt;br&gt;
Created VPC, Subnet, Internet Gateway and Security Groups as code &lt;br&gt;
Configured passwordless SSH access with ED25519 keys &lt;br&gt;
Used Ansible roles to install Nginx, Node.js, MySQL &lt;br&gt;
Deployed the Mini Finance Dashboard, fully accessible from any browser &lt;br&gt;
Verified the site loads live with HTTP 200 ✓&lt;br&gt;
The best part? The entire infrastructure is code. I can destroy it and rebuild it in minutes. That is the power of doing it right.&lt;br&gt;
Terraform handles the infrastructure. Ansible handles the configuration. &lt;br&gt;
Real problems I hit and pushed through:&lt;br&gt;
Nginx returned 403. The app is Node.js, not static files. Reconfigured as a full reverse proxy and kept moving&lt;/p&gt;

&lt;p&gt;MySQL auth was failing; credentials had to match the app config exactly. Fixed native password authentication and moved on&lt;/p&gt;

&lt;p&gt;I want to sincerely thank my mentors, Pravin Mishra, Praveen Pandey, Abhishek Makwana ,Mobarak Hosen,Onuche Paul and Nkechi Anna Ahanonye&lt;/p&gt;

&lt;h1&gt;
  
  
  DevOps #AWS #Cloud #Terraform #Ansible #Linux #Ubuntu #NodeJS #MySQL #Nginx #MiniFinanceDashboard #Infrastructure #ShipIt #CareerGrowth #Tech
&lt;/h1&gt;

</description>
      <category>automation</category>
      <category>aws</category>
      <category>devops</category>
      <category>terraform</category>
    </item>
    <item>
      <title>Deploying a full, three-tier book review web app on Azure</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Mon, 16 Mar 2026 05:52:00 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/deploying-a-full-three-tier-book-review-web-app-on-azure-j3h</link>
      <guid>https://dev.to/duru_julietchinenye_349f/deploying-a-full-three-tier-book-review-web-app-on-azure-j3h</guid>
      <description>&lt;p&gt;I designed and deployed one of my most hands-on cloud engineering projects: deploying a secure, scalable book review application using a full three-tier architecture on Microsoft Azure.&lt;br&gt;
But the real growth came from the challenge I hit along the way and how I solved it.&lt;/p&gt;

&lt;p&gt;The Problem I Encountered&lt;br&gt;
After deploying the backend (Node.js/Express) for the book review app in private subnets, the frontend couldn’t reach it.&lt;br&gt;
The internal load balancer was healthy, and the backend was running on port 3001, but every request from the frontend timed out.&lt;br&gt;
Everything looked correct: subnets, routes, health probes, VM status—yet the app simply wouldn’t connect.&lt;/p&gt;

&lt;p&gt;How I Solved It&lt;br&gt;
The issue turned out to be a Network Security Group (NSG) misconfiguration.&lt;br&gt;
The App Tier NSG wasn’t allowing inbound traffic from the Web Tier on port 3001, even though the internal load balancer was configured correctly.&lt;/p&gt;

&lt;p&gt;I fixed it by:&lt;br&gt;
•Updating the App Tier NSG&lt;br&gt;
•Allowing inbound traffic only from the Web Tier NSG&lt;br&gt;
•Opening port 3001 specifically for internal communication&lt;br&gt;
As soon as that rule was added, the Book Review app connected instantly.&lt;br&gt;
This experience reinforced a key lesson: Azure NSGs don’t assume trust; you must define it explicitly.&lt;/p&gt;

&lt;p&gt;What I Built&lt;br&gt;
Here’s the full architecture behind the book review app:&lt;br&gt;
Frontend (Web Tier)&lt;br&gt;
•Next.js served via Nginx on Ubuntu&lt;br&gt;
•Behind a Public Azure Load Balancer&lt;br&gt;
•Lives in public subnets only&lt;br&gt;
Backend (App Tier)&lt;br&gt;
•Node.js/Express API on port 3001&lt;br&gt;
•Deployed in private subnets&lt;br&gt;
•Accessible only through an Internal Load Balancer&lt;br&gt;
Database (Data Tier)&lt;br&gt;
•Azure Database for MySQL Flexible Server&lt;br&gt;
•Multi-AZ high availability&lt;br&gt;
•Read replica for scaling&lt;br&gt;
•NSGs allowing only App Tier traffic on port 3306&lt;br&gt;
Networking&lt;br&gt;
•Custom VNet (10.0.0.0/16)&lt;br&gt;
•6 subnets across 2 zones&lt;br&gt;
•Strict NSGs per tier&lt;br&gt;
•No public exposure for backend or database&lt;/p&gt;

&lt;p&gt;I want to sincerely thank my mentors,  Pravin Mishra, Praveen Pandey, Abhishek Makwana and Mobarak Hosen&lt;/p&gt;

&lt;h1&gt;
  
  
  CloudEngineering #Azure #DevOps #Nextjs #Nodejs #MySQL #ThreeTierArchitecture #CloudSecurity #AzureNetworking #LoadBalancing #FullStack #CloudProjects #TechJourney #MicrosoftAzure #CloudArchitect #BookReviewApp #DuruBuildsCloud
&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%2Fdrmoy4d1givnciz3ln5e.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%2Fdrmoy4d1givnciz3ln5e.png" alt=" " width="800" height="532"&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%2F1rsqhr36ht7efnt465my.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%2F1rsqhr36ht7efnt465my.png" alt=" " width="712" height="292"&gt;&lt;/a&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%2Fro8e6d72i3xkyzaila77.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%2Fro8e6d72i3xkyzaila77.png" alt=" " width="772" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>azure</category>
      <category>devops</category>
      <category>networking</category>
    </item>
    <item>
      <title>Deploying the Epic Book Web App on Azure: End-to-End, Production-Ready Architecture</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Mon, 16 Mar 2026 03:28:25 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/deploying-the-epic-book-web-app-on-azure-end-to-end-production-ready-architecture-2l6f</link>
      <guid>https://dev.to/duru_julietchinenye_349f/deploying-the-epic-book-web-app-on-azure-end-to-end-production-ready-architecture-2l6f</guid>
      <description>&lt;p&gt;I just wrapped up one of my most comprehensive cloud engineering projects: designing, securing, and deploying a full-stack Epic Book web app on Microsoft Azure using real production patterns.&lt;br&gt;
This project pushed me far beyond “just deploy a VM.”&lt;br&gt;
I had to think like an architect: networking, security, scalability, and infrastructure design all mattered as much as the code itself.&lt;br&gt;
Frontend Layer&lt;br&gt;
I built a React frontend that communicates with an Express.js API over HTTPS.&lt;br&gt;
The backend runs on port 5000, giving me a clean separation between UI, API, and infrastructure.&lt;br&gt;
Application Layer (Public Subnet)&lt;br&gt;
I deployed a Node.js + Nginx web server on Ubuntu 22.04, placed behind an Azure Load Balancer with a public IP.&lt;br&gt;
To keep things secure, I locked down the Web NSG to ports 80 and 22 only and assigned a dedicated public IP + NIC for full network control.&lt;br&gt;
Nginx handles reverse proxying to Node.js, improving performance and security.&lt;br&gt;
Database Layer (Private Subnet)&lt;br&gt;
For the database, I used Azure Database for MySQL Flexible Server (epiSQ-db).&lt;br&gt;
It sits in a fully private subnet with zero public exposure.&lt;br&gt;
•DB NSG allows only port 8006&lt;br&gt;
•MySQL port 3306 is accessible only from within the VNet (10.0.0.0/16)&lt;br&gt;
This ensures the database is completely isolated from the public internet.&lt;br&gt;
Security-First Architecture&lt;br&gt;
Security guided every decision I made:&lt;br&gt;
•Private subnet isolation for the database&lt;br&gt;
•Strict NSG rules on both web and DB layers&lt;br&gt;
•Load Balancer as the only public entry point&lt;br&gt;
•Zero-trust approach to MySQL access&lt;br&gt;
•Controlled, predictable traffic flow end to end&lt;br&gt;
Traffic Flow&lt;br&gt;
Internet → Load Balancer → Web VM → MySQL Flexible Server&lt;br&gt;
My Biggest Takeaway&lt;br&gt;
This project reminded me that cloud engineering is more than writing code.&lt;br&gt;
It’s about understanding how your application lives in the cloud, how it’s secured, how it scales, and how every component communicates.&lt;br&gt;
If you're a developer looking to level up, start thinking beyond your local machine. The cloud is where your application truly becomes real.&lt;/p&gt;

&lt;p&gt;I want to sincerely thank my mentors, Pravin Mishra, Praveen Pandey, Abhishek Makwana and Mobarak Hosen&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%2Fhm04se234hlfxxyfj7tt.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%2Fhm04se234hlfxxyfj7tt.png" alt=" " width="576" height="576"&gt;&lt;/a&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%2F06sa19jj1hmpvhknc97r.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%2F06sa19jj1hmpvhknc97r.jpg" alt=" " width="745" height="386"&gt;&lt;/a&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%2Filwyverrd65i3k22vaum.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%2Filwyverrd65i3k22vaum.jpg" alt=" " width="720" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>azure</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>High Availability (HA) two-tier web application architecture on AWS</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Thu, 26 Feb 2026 15:14:09 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/high-availability-ha-two-tier-web-application-architecture-on-aws-425j</link>
      <guid>https://dev.to/duru_julietchinenye_349f/high-availability-ha-two-tier-web-application-architecture-on-aws-425j</guid>
      <description>&lt;p&gt;I completed a full High Availability (HA) WordPress architecture on AWS, built using production-grade DevOps patterns across multiple Availability Zones.&lt;br&gt;
Core Architecture:&lt;br&gt;
• Multi AZ VPC with public + private subnets, IGW, NAT&lt;br&gt;
• Application Load Balancer distributing traffic across AZ a and AZ b&lt;br&gt;
• Auto Scaling Group using a Launch Template with automated user data to install/configure WordPress&lt;br&gt;
• RDS Multi AZ MySQL deployed in private subnets with SG to SG access only&lt;br&gt;
• Security Group chaining enforcing strict east-west flow: Internet → ALB → EC2 → RDS&lt;br&gt;
Automation &amp;amp; Self Healing:&lt;br&gt;
• EC2 instances bootstrap WordPress automatically (runtime install, config, DB connection)&lt;br&gt;
• ASG replaces failed instances without manual intervention&lt;br&gt;
• ALB health checks ensure only healthy nodes receive traffic&lt;br&gt;
HA Validation:&lt;br&gt;
• Terminated EC2 instances → ASG launched replacements automatically&lt;br&gt;
• Simulated AZ disruption → ALB continued serving traffic from the remaining AZ&lt;br&gt;
• WordPress remained fully available throughout all tests&lt;br&gt;
This project demonstrates end-to-end HA design: resilient networking, automated compute, fault-tolerant database, and real failure testing—key capabilities for modern Cloud/DevOps engineering.&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%2Ftb0kk0o66rmcqdvgdjgv.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%2Ftb0kk0o66rmcqdvgdjgv.jpg" alt=" " width="597" height="452"&gt;&lt;/a&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%2F09ald0s0kmpoa9ib14x5.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%2F09ald0s0kmpoa9ib14x5.jpg" alt=" " width="707" height="253"&gt;&lt;/a&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%2F8rrt97juyu2mefj9g22b.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%2F8rrt97juyu2mefj9g22b.jpg" alt=" " width="411" height="416"&gt;&lt;/a&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%2Fya7umbiyfkgoyxckw6o4.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%2Fya7umbiyfkgoyxckw6o4.jpg" alt=" " width="751" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>three-tier web application architecture</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Thu, 26 Feb 2026 15:03:48 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/three-tier-web-application-architecture-jd6</link>
      <guid>https://dev.to/duru_julietchinenye_349f/three-tier-web-application-architecture-jd6</guid>
      <description>&lt;p&gt;I engineered and deployed a High Availability (HA) three-tier web application architecture on AWS, built inside a VPC spanning multiple Availability Zones to ensure continuous uptime and fault tolerance. The design uses public, private application, and private database subnets, enforcing strict network isolation and enterprise-grade security.&lt;br&gt;
The public tier hosts an internet-facing Application Load Balancer (ALB) that distributes traffic across AZs and performs real-time health checks. The application tier runs on EC2 instances inside private subnets, orchestrated by an Auto Scaling Group (ASG) with launch templates for consistent, repeatable deployments. The database tier uses Amazon RDS MySQL configured for Multi AZ failover, automated backups, and private-only access.&lt;br&gt;
To validate the architecture’s resilience, I performed controlled failure testing by manually terminating active EC2 instances. The ASG immediately replaced them, and the ALB seamlessly routed traffic to healthy targets with zero downtime. The application remained fully accessible throughout the test, confirming the system’s ability to self-heal, scale automatically, and maintain strict tier isolation.&lt;br&gt;
This deployment demonstrates my ability to design and operate production-ready, secure, and fault-tolerant cloud architectures aligned with modern DevOps and AWS best practices.&lt;/p&gt;

&lt;p&gt;I want to sincerely thank my mentors, Pravin Mishra, Praveen Pandey, Abhishek Makwana, Mobarak Hosen, Onuche Paul&lt;/p&gt;

&lt;h1&gt;
  
  
  S #CloudArchitecture #DevOps #SolutionsArchitect #CloudComputing #AWSArchitecture #Tech  #AWS, #CloudComputing, #DevOps, #CloudEngineering, #AWSSolutionsArchitect
&lt;/h1&gt;

&lt;h1&gt;
  
  
  HighAvailabili #ThreeTierArchitecture#TechCareer, #Hiring
&lt;/h1&gt;

&lt;p&gt;#Recruiters #OpenToWork #ScalableArchitecture, #InfrastructureAsCode&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%2Fq2cf7nxixf8xxc93x0h5.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%2Fq2cf7nxixf8xxc93x0h5.jpg" alt=" " width="800" height="366"&gt;&lt;/a&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%2Fdu0veguwgtjhuo90zpaf.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%2Fdu0veguwgtjhuo90zpaf.jpg" alt=" " width="705" height="267"&gt;&lt;/a&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%2Fm8j66e1jowbija3d5jvj.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%2Fm8j66e1jowbija3d5jvj.jpg" alt=" " width="721" height="327"&gt;&lt;/a&gt;and &lt;/p&gt;

</description>
      <category>architecture</category>
      <category>aws</category>
      <category>networking</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Deploying a Static Website on Amazon S3</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Mon, 16 Feb 2026 03:51:33 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/deploying-a-static-website-on-amazon-s3-3f02</link>
      <guid>https://dev.to/duru_julietchinenye_349f/deploying-a-static-website-on-amazon-s3-3f02</guid>
      <description>&lt;p&gt;Over the past few days, I completed a practical cloud engineering exercise: deploying a static website using &lt;strong&gt;Amazon S3&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
This simple project taught me essential concepts around cloud storage, permissions, hosting, and real‑world deployment workflows.&lt;/p&gt;

&lt;p&gt;In this article, I’m sharing the exact steps I followed, what I learned, and why this exercise is valuable for anyone building cloud or DevOps skills.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating the S3 Bucket**&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I started by creating a new S3 bucket that would host my website files.&lt;br&gt;&lt;br&gt;
I ensured the bucket name was globally unique and selected the correct AWS Region.&lt;/p&gt;

&lt;p&gt;This bucket became the storage location for all my HTML, CSS, and image files.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Uploading the Website Files**&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Next, I uploaded the contents of my portfolio template.&lt;br&gt;&lt;br&gt;
A key lesson here: &lt;strong&gt;S3 requires &lt;code&gt;index.html&lt;/code&gt; to be at the root level&lt;/strong&gt;, not inside a folder.&lt;/p&gt;

&lt;p&gt;I uploaded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;index.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;CSS files
&lt;/li&gt;
&lt;li&gt;Images and asset folders
&lt;/li&gt;
&lt;li&gt;Additional HTML pages
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once uploaded, I confirmed everything appeared correctly in the Objects tab.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enabling Static Website Hosting&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To turn the bucket into a functioning website, I enabled:&lt;/p&gt;

&lt;p&gt;Properties → Static website hosting&lt;/p&gt;

&lt;p&gt;I selected “Host a static website” and entered:&lt;/p&gt;

&lt;p&gt;Index document:** &lt;code&gt;index.html&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;AWS then generated a Website Endpoint URL, which acts as the public link to the site.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Making the Website Public**&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By default, S3 buckets are private.&lt;br&gt;&lt;br&gt;
To allow public access, I updated two things:&lt;/p&gt;

&lt;p&gt;a. Block Public Access Settings**&lt;br&gt;
I ensured that “Block all public access” was turned &lt;strong&gt;off&lt;/strong&gt; for this assignment.&lt;br&gt;
b. Bucket Policy**&lt;br&gt;
I added a policy that allows public read access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PublicReadGetObject"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Allow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Principal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"s3:GetObject"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:s3:::pravin-portfolio-duru-eu-west-2/*"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This step ensures that anyone can load the website files in their browser.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Testing the Website Endpoint&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I opened the S3 Website Endpoint in my browser to verify that the site loaded correctly.&lt;br&gt;&lt;br&gt;
A quick hard refresh (Ctrl + F5) helped clear cached versions.&lt;/p&gt;

&lt;p&gt;Seeing the homepage appear confirmed that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hosting was enabled
&lt;/li&gt;
&lt;li&gt;Permissions were correct
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;index.html&lt;/code&gt; was in the right place
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was the moment the deployment became real.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Updating and Redeploying&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To simulate a real DevOps workflow, I made a small change to the homepage text in &lt;code&gt;index.html&lt;/code&gt;, saved the file, and re‑uploaded it to S3.&lt;/p&gt;

&lt;p&gt;AWS automatically overwrote the previous version.&lt;/p&gt;

&lt;p&gt;Refreshing the website showed the updated content — a simple but powerful demonstration of the &lt;strong&gt;edit → deploy → verify&lt;/strong&gt; cycle used in real CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;This project reinforced several important cloud engineering concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud storage structure matters
&lt;/li&gt;
&lt;li&gt;Permissions determine accessibility
&lt;/li&gt;
&lt;li&gt;Static hosting requires explicit configuration
&lt;/li&gt;
&lt;li&gt;Deployment is a repeatable workflow
&lt;/li&gt;
&lt;li&gt;Small changes require redeployment
&lt;/li&gt;
&lt;li&gt;Testing and verification are essential
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even though S3 hosting is simple, it teaches foundational skills that scale into more advanced cloud and DevOps practices.&lt;/p&gt;

&lt;p&gt;Final Thoughts**&lt;/p&gt;

&lt;p&gt;Deploying a static website on S3 is a great beginner‑friendly cloud project.&lt;br&gt;&lt;br&gt;
It builds confidence, strengthens understanding of AWS services, and mirrors real‑world deployment workflows.&lt;/p&gt;

&lt;p&gt;I’m excited to continue building, learning, and sharing my cloud journey — one project at a time.&lt;/p&gt;

&lt;p&gt;I want to sincerely thank my mentors,Pravin Mishra, Praveen Pandey, Abhishek Makwana and Mobarak Hosen&lt;br&gt;
This post is part of the DevOps Micro Internship (DMI) Cohort 2 by Pravin Mashra&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%2Fsjja5clq06pb7apipis8.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%2Fsjja5clq06pb7apipis8.jpg" alt=" " width="777" height="273"&gt;&lt;/a&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%2Fgr5ixahh4s1ubsb7avuy.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%2Fgr5ixahh4s1ubsb7avuy.jpg" alt=" " width="780" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS #CloudComputing #DevOps #AmazonS3 #WebDevelopment
&lt;/h1&gt;

&lt;h1&gt;
  
  
  CloudEngineering #StaticWebsiteHosting #WomenInTech
&lt;/h1&gt;

&lt;h1&gt;
  
  
  LearningInPublic #TechJourney
&lt;/h1&gt;



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



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

&lt;/div&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>DevOps lifecycle</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Fri, 13 Feb 2026 12:58:02 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/devops-lifecycle-387h</link>
      <guid>https://dev.to/duru_julietchinenye_349f/devops-lifecycle-387h</guid>
      <description>&lt;p&gt;DevOps Micro‑Internship: Setting Up My Delivery Workflow&lt;br&gt;
Today I completed the first practical task of the DevOps Micro‑Internship, and it was a full end-to-end workflow that mirrors how real engineering teams deliver software.&lt;br&gt;
Here’s what I accomplished:&lt;br&gt;
🔹 Set Up My Local Development Environment&lt;br&gt;
 Cloned the Pravin Mishra Portfolio Template repository and created a dedicated feature branch:&lt;br&gt;
 feature/footer-v1&lt;br&gt;
 This ensured I followed a clean, professional Git workflow.&lt;br&gt;
🔹 Made My First UI Increment&lt;br&gt;
 Opened the project in VS Code and added the required footer text to the homepage.&lt;br&gt;
 Committed the change using a semantic commit message to keep history clean and traceable.&lt;br&gt;
🔹 Deployed to My EC2 Instance&lt;br&gt;
 Uploaded the updated files using SCP, served them via Nginx, and verified the change live at:&lt;br&gt;
 👉 &lt;a href="http://35.176.28.156" rel="noopener noreferrer"&gt;http://35.176.28.156&lt;/a&gt;&lt;br&gt;
🔹 Updated Jira to Reflect Real Delivery Flow&lt;br&gt;
 Moved my Day 1 sub‑task from To Do → In Progress → Done&lt;br&gt;
 Added my Daily Scrum comment to the Story to maintain visibility and accountability.&lt;/p&gt;

&lt;p&gt;What I Learned &lt;br&gt;
• How to follow a real DevOps workflow: code → commit → deploy → verify&lt;br&gt;
 • Why all work should be done locally, not directly on EC2&lt;br&gt;
 • How to deploy static website changes using SCP + Nginx&lt;br&gt;
 • How to troubleshoot server issues (missing Nginx, missing directories, permissions)&lt;br&gt;
 • How to track work professionally in Jira using subtasks, sprint goals, and Daily Scrum updates&lt;br&gt;
 • The value of shipping small, visible increments instead of waiting for a big final change&lt;br&gt;
 • How to validate deployments by checking the live URL&lt;br&gt;
This experience reinforced something I believe strongly:&lt;br&gt;
 DevOps is not just about tools — it’s about discipline, clarity, and delivering value in small, reliable steps.&lt;/p&gt;

&lt;p&gt;I want to sincerely thank my mentors, Pravin Mishra, Praveen Pandey, Abhishek Makwana and Mobarak Hosen&lt;br&gt;
 This post is part of the DevOps Micro Internship (DMI) Cohort 2 by Pravin Mashra&lt;br&gt;
 hashtag&lt;/p&gt;

&lt;p&gt;hashtag#DevOps hashtag#Scrum hashtag#Agile hashtag#Jira hashtag#Cloud hashtag#EC2 hashtag#Nginx hashtag#Git hashtag#SoftwareEngineering hashtag#LearningInPublic hashtag#ContinuousImprovement&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Deploying a React Application on an Ubuntu EC2 Server (AWS) Using Nginx</title>
      <dc:creator>Duru Juliet Chinenye</dc:creator>
      <pubDate>Thu, 22 Jan 2026 02:15:36 +0000</pubDate>
      <link>https://dev.to/duru_julietchinenye_349f/deploying-a-react-application-on-an-ubuntu-ec2-server-aws-using-nginx-19ea</link>
      <guid>https://dev.to/duru_julietchinenye_349f/deploying-a-react-application-on-an-ubuntu-ec2-server-aws-using-nginx-19ea</guid>
      <description>&lt;p&gt;Overview&lt;br&gt;
I successfully completed a remote Linux deployment project as part of DMI Cohort 2. In this project, I deployed a React application on an Ubuntu EC2 instance and served it through Nginx. The workflow covered end‑to‑end server setup, secure SSH access, installation of Node.js and Nginx, building the React application for production, and configuring Nginx to serve the optimized build. This experience strengthened my confidence in Linux administration, cloud deployment practices, and real‑world DevOps workflows&lt;/p&gt;

&lt;p&gt;Prerequisites&lt;br&gt;
An AWS account with permission to create EC2 instances&lt;br&gt;
Linux commands (cd, ls, nano, sudo, etc.)&lt;br&gt;
An SSH client such as Git Bash&lt;br&gt;
Internet access for package installation and AWS connectivity&lt;br&gt;
A React project that is ready for a production build&lt;/p&gt;

&lt;p&gt;Step 1: Launching an Ubuntu EC2 Instance&lt;br&gt;
I start by logging into the AWS Console and navigating to EC2.&lt;br&gt;
From there, I launch a new instance and configure it with the following settings:&lt;br&gt;
Name: react-app-server&lt;br&gt;
AMI: Ubuntu Server 22.04 LTS&lt;br&gt;
Instance type: t2.micro (Free Tier eligible)&lt;br&gt;
Key pair: I create a new key&lt;br&gt;
Network settings: &lt;br&gt;
Allow SSH (22)&lt;br&gt;
Allow HTTP (80)&lt;br&gt;
Once the instance is running, I take note of the public IPv4 address because I’ll need it throughout the deployment.&lt;/p&gt;

&lt;p&gt;Step 2: Connecting to the Server via SSH&lt;br&gt;
After the instance is ready, I connect to it securely using SSH.&lt;br&gt;
I ensure my key file has the correct permissions, and then I authenticate into the server using the public IP address.&lt;/p&gt;

&lt;p&gt;Step 3: Installing Node.js, Nginx, and Required Build Tools&lt;br&gt;
The first thing I do on the server is update the package list and install the tools I need.&lt;br&gt;
I install Node.js (LTS version) because I’ll use it to build the React application.&lt;br&gt;
Next, I install Nginx, which will serve the production build.&lt;br&gt;
I enable and start Nginx so it runs automatically whenever the server boots.&lt;br&gt;
At this point, I put the server’s public IP address in a browser, and I see the default Nginx welcome page. That confirms Nginx is running correctly.&lt;/p&gt;

&lt;p&gt;Step 4: Configuring Nginx to Serve the React Application&lt;br&gt;
With the production build ready, I configure Nginx to serve it. After testing the configuration, I reload Nginx. Once Nginx restarts, my React application becomes accessible through the server’s public IP address.&lt;/p&gt;

&lt;p&gt;Step 6: Validating the Deployment&lt;br&gt;
Finally, I open a browser and navigate to the server’s public IP address.&lt;br&gt;
At this point, I see my React application running in production mode, served cleanly through Nginx.&lt;/p&gt;

&lt;p&gt;Grateful to the DMI Cohort 2 community and mentors Pravin Mishra, Praveen Pandey, Abhishek Makwana, and the entire DMI community for the guidance and support throughout this Linux-focused session.&lt;br&gt;
hashtag#Linux hashtag#AWS hashtag#EC2 hashtag#ReactJS hashtag#Nginx hashtag#DevOps hashtag#CloudComputing hashtag#DMICohort2 hashtag#MicroInternship&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
