<?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: Avinash wagh</title>
    <description>The latest articles on DEV Community by Avinash wagh (@avinashwagh).</description>
    <link>https://dev.to/avinashwagh</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%2F3701727%2F2b181b0c-9ee2-4744-ad2e-d57af7726891.png</url>
      <title>DEV Community: Avinash wagh</title>
      <link>https://dev.to/avinashwagh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/avinashwagh"/>
    <language>en</language>
    <item>
      <title>🚀 Day 10 of My Cloud Journey: Setting Up Kubernetes with Kind &amp; kubectl on AWS EC2</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Mon, 30 Mar 2026 03:45:16 +0000</pubDate>
      <link>https://dev.to/avinashwagh/day-10-of-my-cloud-journey-setting-up-kubernetes-with-kind-kubectl-on-aws-ec2-4oi7</link>
      <guid>https://dev.to/avinashwagh/day-10-of-my-cloud-journey-setting-up-kubernetes-with-kind-kubectl-on-aws-ec2-4oi7</guid>
      <description>&lt;p&gt;After getting hands-on with Docker, the next natural step in my journey was &lt;strong&gt;Kubernetes&lt;/strong&gt; — the backbone of modern container orchestration.&lt;/p&gt;

&lt;p&gt;Today, I took my first step into Kubernetes by setting up a cluster using &lt;strong&gt;Kind&lt;/strong&gt; and &lt;strong&gt;kubectl&lt;/strong&gt; on an AWS EC2 instance ☁️&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Why Kubernetes?
&lt;/h2&gt;

&lt;p&gt;While Docker helps us run containers, managing multiple containers across environments becomes complex.&lt;/p&gt;

&lt;p&gt;👉 That’s where Kubernetes comes in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automates deployment and scaling&lt;/li&gt;
&lt;li&gt;Ensures high availability&lt;/li&gt;
&lt;li&gt;Manages container lifecycle efficiently&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is exactly what real-world systems use in production.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ My Setup (AWS EC2)
&lt;/h2&gt;

&lt;p&gt;Instead of using local machine, I chose AWS EC2 to simulate a real-world environment.&lt;/p&gt;

&lt;p&gt;🔹 Why EC2?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Closer to production setup&lt;/li&gt;
&lt;li&gt;Better for remote access and testing&lt;/li&gt;
&lt;li&gt;Helps understand cloud infrastructure&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Tools I Installed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. kubectl (Kubernetes CLI)
&lt;/h3&gt;

&lt;p&gt;kubectl is the command-line tool used to interact with Kubernetes clusters.&lt;/p&gt;

&lt;p&gt;🔹 Install latest version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-LO&lt;/span&gt; &lt;span class="s2"&gt;"https://dl.k8s.io/release/&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-L&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; https://dl.k8s.io/release/stable.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;/bin/linux/amd64/kubectl"&lt;/span&gt;
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x kubectl
&lt;span class="nb"&gt;sudo mv &lt;/span&gt;kubectl /usr/local/bin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl version &lt;span class="nt"&gt;--client&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  2. Kind (Kubernetes in Docker)
&lt;/h3&gt;

&lt;p&gt;Kind allows us to run Kubernetes clusters inside Docker containers.&lt;/p&gt;

&lt;p&gt;🔹 Install stable version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-Lo&lt;/span&gt; ./kind https://kind.sigs.k8s.io/dl/v0.31.0/kind-linux-amd64
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x ./kind
&lt;span class="nb"&gt;sudo mv&lt;/span&gt; ./kind /usr/local/bin/kind
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🔹 Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kind &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 Creating My First Kubernetes Cluster
&lt;/h2&gt;

&lt;p&gt;Once both tools were installed, I created my first cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kind create cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⏳ It took a couple of minutes to set up everything automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Verifying the Cluster
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kind-control-plane   Ready   control-plane
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔️ My Kubernetes cluster is now up and running!&lt;/p&gt;




&lt;h2&gt;
  
  
  🔥 First Deployment (Nginx)
&lt;/h2&gt;

&lt;p&gt;To test everything, I deployed a simple Nginx application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create deployment nginx &lt;span class="nt"&gt;--image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nginx
kubectl expose deployment nginx &lt;span class="nt"&gt;--type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;NodePort &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check resources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
kubectl get svc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌐 Accessing the Application
&lt;/h2&gt;

&lt;p&gt;Since I'm using EC2, I used port forwarding:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl port-forward service/nginx 8080:80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now accessible via:&lt;br&gt;
👉 http://:8080&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;kubectl is used to interact with Kubernetes&lt;/li&gt;
&lt;li&gt;Kind makes it easy to run local clusters using Docker&lt;/li&gt;
&lt;li&gt;Kubernetes abstracts infrastructure and manages containers efficiently&lt;/li&gt;
&lt;li&gt;Setting up on EC2 gives a more real-world experience&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔄 My Learning Reflection
&lt;/h2&gt;

&lt;p&gt;Today’s learning shifted my mindset from:&lt;/p&gt;

&lt;p&gt;👉 “Running containers with Docker”&lt;br&gt;
to&lt;br&gt;
👉 “Orchestrating containers using Kubernetes”&lt;/p&gt;

&lt;p&gt;This feels like a big step toward becoming a Cloud/DevOps Engineer 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  📘 Learning in Public
&lt;/h2&gt;

&lt;p&gt;I’m documenting my journey as I transition from .NET Developer to Cloud Engineer.&lt;/p&gt;

&lt;p&gt;🔗 LinkedIn → &lt;a href="https://www.linkedin.com/in/avinashwagh-" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/avinashwagh-&lt;/a&gt;&lt;br&gt;
🔗 GitHub → &lt;a href="https://github.com/Avinash8600" rel="noopener noreferrer"&gt;https://github.com/Avinash8600&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Let’s Connect
&lt;/h2&gt;

&lt;p&gt;If you're learning Kubernetes, DevOps, or Cloud — let’s grow together 🙌&lt;/p&gt;

&lt;p&gt;Would love feedback, suggestions, or tips from the community!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>kubernetes</category>
      <category>aws</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>🚀 Day 9 of My Cloud Journey: Mastering Docker Volumes, Compose &amp; Registry</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Tue, 24 Mar 2026 04:44:12 +0000</pubDate>
      <link>https://dev.to/avinashwagh/day-9-of-my-cloud-journey-mastering-docker-volumes-compose-registry-2ik1</link>
      <guid>https://dev.to/avinashwagh/day-9-of-my-cloud-journey-mastering-docker-volumes-compose-registry-2ik1</guid>
      <description>&lt;p&gt;When I started learning Docker, running containers felt exciting. But very quickly, I ran into a practical question:&lt;/p&gt;

&lt;p&gt;👉 &lt;em&gt;What happens to my data when a container stops or gets deleted?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That’s when I realized — containers are &lt;strong&gt;ephemeral by design&lt;/strong&gt;, and real-world applications need &lt;strong&gt;persistent storage, multi-service orchestration, and efficient image management&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So today, I explored three critical Docker concepts:&lt;br&gt;
&lt;strong&gt;Volumes, Docker Compose, and Docker Registry&lt;/strong&gt; 🐳&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Why This Matters
&lt;/h2&gt;

&lt;p&gt;In modern cloud applications, we rarely run a single container. Instead, we deal with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Databases that must retain data&lt;/li&gt;
&lt;li&gt;Backend and frontend services running together&lt;/li&gt;
&lt;li&gt;Applications deployed across environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Handling all this manually is not scalable. Docker provides powerful solutions to simplify these challenges.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 1. Understanding Docker Volumes (Persistent Storage)
&lt;/h2&gt;

&lt;p&gt;Containers are temporary, but data should not be.&lt;/p&gt;

&lt;p&gt;Docker Volumes solve this problem by storing data &lt;strong&gt;outside the container lifecycle&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 What I Learned
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Volumes persist data even if containers are removed&lt;/li&gt;
&lt;li&gt;They are managed by Docker and are more reliable than container storage&lt;/li&gt;
&lt;li&gt;Ideal for databases like MySQL, PostgreSQL, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Hands-on
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker volume create my-volume

docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; mysql-db &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; my-volume:/var/lib/mysql &lt;span class="se"&gt;\&lt;/span&gt;
  mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔️ Even after removing the container, the data remains safe&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ 2. Docker Compose (Managing Multi-Container Apps)
&lt;/h2&gt;

&lt;p&gt;Running multiple containers manually can quickly become messy.&lt;/p&gt;

&lt;p&gt;Docker Compose allows us to define and manage &lt;strong&gt;multi-container applications using a single YAML file&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 What I Learned
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Define services, networks, and volumes in one place&lt;/li&gt;
&lt;li&gt;Start all services with a single command&lt;/li&gt;
&lt;li&gt;Makes development and testing much easier&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Sample &lt;code&gt;docker-compose.yml&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3'&lt;/span&gt;
&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;db&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql-db&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;db-data:/var/lib/mysql&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;flask-app&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;flask-app&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;5000:5000"&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;db&lt;/span&gt;

&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;db-data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ▶️ Run everything
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔️ Multiple services running together with one command&lt;/p&gt;




&lt;h2&gt;
  
  
  🌐 3. Docker Registry (Image Management)
&lt;/h2&gt;

&lt;p&gt;Once applications are built, they need to be shared and deployed.&lt;/p&gt;

&lt;p&gt;Docker Registry helps store and distribute images across environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔹 What I Learned
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Images can be pushed to repositories like Docker Hub&lt;/li&gt;
&lt;li&gt;Enables easy deployment across teams and servers&lt;/li&gt;
&lt;li&gt;Versioning helps manage application updates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔹 Basic Workflow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker tag my-app username/my-app
docker push username/my-app
docker pull username/my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔️ Simplifies deployment and collaboration&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Volumes ensure &lt;strong&gt;data persistence&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Docker Compose simplifies &lt;strong&gt;multi-container orchestration&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Registry enables &lt;strong&gt;image sharing and deployment&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;These concepts are essential for &lt;strong&gt;real-world DevOps and cloud environments&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔄 My Learning Reflection
&lt;/h2&gt;

&lt;p&gt;Today’s learning shifted my mindset from:&lt;br&gt;
👉 &lt;em&gt;“Running containers”&lt;/em&gt;&lt;br&gt;
to&lt;br&gt;
👉 &lt;em&gt;“Designing real-world, scalable applications using Docker”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’m starting to see how these concepts connect to tools like Kubernetes and cloud platforms like AWS.&lt;/p&gt;




&lt;h2&gt;
  
  
  📘 Learning in Public
&lt;/h2&gt;

&lt;p&gt;I’m documenting my journey as I transition from &lt;strong&gt;.NET Developer to Cloud Engineer&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn → &lt;a href="https://www.linkedin.com/in/avinashwagh-" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/avinashwagh-&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub → &lt;a href="https://github.com/Avinash8600" rel="noopener noreferrer"&gt;https://github.com/Avinash8600&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Let’s Connect
&lt;/h2&gt;

&lt;p&gt;If you're learning Docker, DevOps, or Cloud — I’d love to connect, learn, and grow together.&lt;/p&gt;

&lt;p&gt;Feedback and suggestions are always welcome 🙌&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>aws</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>🚀Deployed a Containerized Flask Message App on AWS EC2 using Docker</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Wed, 18 Mar 2026 04:21:32 +0000</pubDate>
      <link>https://dev.to/avinashwagh/deployed-a-containerized-flask-message-app-on-aws-ec2-using-docker-2ffa</link>
      <guid>https://dev.to/avinashwagh/deployed-a-containerized-flask-message-app-on-aws-ec2-using-docker-2ffa</guid>
      <description>&lt;p&gt;In this article, I’ll walk through how I built and deployed a &lt;strong&gt;containerized Message Board Web Application&lt;/strong&gt; using Python Flask and MySQL on AWS EC2. This project helped me gain hands-on experience with Docker, cloud deployment, and backend development.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Project Overview
&lt;/h2&gt;

&lt;p&gt;The application is a simple message board where users can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add messages&lt;/li&gt;
&lt;li&gt;Delete messages&lt;/li&gt;
&lt;li&gt;Store data in a MySQL database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both the application and database are containerized using Docker and communicate over a shared network.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Flask&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;AWS EC2&lt;/li&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏗️ Architecture
&lt;/h2&gt;

&lt;p&gt;The project consists of two main containers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flask Application Container&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MySQL Database Container&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These containers are connected via a custom Docker network:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The Flask app connects to MySQL using the container name (&lt;code&gt;mysql-db&lt;/code&gt;) as the hostname.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Step-by-Step Implementation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1️⃣ Create Docker Network
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker network create message-network
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  2️⃣ Run MySQL Container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--name&lt;/span&gt; mysql-db &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--network&lt;/span&gt; message-network &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;messagedb &lt;span class="se"&gt;\&lt;/span&gt;
mysql:8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3️⃣ Build Flask App Image
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; flask-message-app &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  4️⃣ Run Flask Container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-p&lt;/span&gt; 5001:5001 &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--network&lt;/span&gt; message-network &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--name&lt;/span&gt; flask-app &lt;span class="se"&gt;\&lt;/span&gt;
flask-message-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌐 Deployment on AWS EC2
&lt;/h2&gt;

&lt;p&gt;I deployed this project on an AWS EC2 instance by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launching a Linux-based EC2 instance&lt;/li&gt;
&lt;li&gt;Installing Docker&lt;/li&gt;
&lt;li&gt;Running both containers inside the instance&lt;/li&gt;
&lt;li&gt;Configuring the Security Group to allow inbound traffic on port &lt;strong&gt;5001&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔗 Live Demo
&lt;/h2&gt;

&lt;p&gt;🌐 &lt;a href="http://13.235.243.101:5001" rel="noopener noreferrer"&gt;http://13.235.243.101:5001&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📷 Screenshots
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Web Application UI&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%2Fup1d2lrgv6bh1jcvv81n.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%2Fup1d2lrgv6bh1jcvv81n.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mobile View&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%2F23tllx2vbku9exdzcxvx.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%2F23tllx2vbku9exdzcxvx.jpeg" alt=" " width="800" height="1786"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running Docker Containers&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%2Fw6v4ke5gjtvsex4lltpk.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%2Fw6v4ke5gjtvsex4lltpk.png" alt=" " width="800" height="122"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MySQL Database Table&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%2Fo8tfib2qkefpki4rtav6.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%2Fo8tfib2qkefpki4rtav6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Key Learnings
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Understanding Docker containerization&lt;/li&gt;
&lt;li&gt;Managing multi-container applications&lt;/li&gt;
&lt;li&gt;Setting up Docker networks for communication&lt;/li&gt;
&lt;li&gt;Deploying applications on AWS EC2&lt;/li&gt;
&lt;li&gt;Troubleshooting real-world issues&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Future Improvements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Add message timestamps&lt;/li&gt;
&lt;li&gt;Implement edit functionality&lt;/li&gt;
&lt;li&gt;Use Docker Compose&lt;/li&gt;
&lt;li&gt;Add Nginx reverse proxy&lt;/li&gt;
&lt;li&gt;Set up CI/CD pipeline&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔗 GitHub Repository
&lt;/h2&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/Avinash8600/containerized-flask-message-app" rel="noopener noreferrer"&gt;https://github.com/Avinash8600/containerized-flask-message-app&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  👨‍💻 About Me
&lt;/h2&gt;

&lt;p&gt;I’m a Software Engineer with a focus on Cloud and DevOps, passionate about building and deploying scalable applications.&lt;/p&gt;




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

&lt;p&gt;This project was a great hands-on experience in combining backend development with cloud and containerization technologies. It helped me understand how real-world applications are deployed and managed.&lt;/p&gt;

&lt;p&gt;If you have any feedback or suggestions, feel free to share!&lt;/p&gt;




</description>
      <category>aws</category>
      <category>docker</category>
      <category>ec2</category>
      <category>devops</category>
    </item>
    <item>
      <title>Day 7 of My Cloud Journey: Getting Started with Docker &amp; Containerization</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Sat, 14 Mar 2026 04:50:48 +0000</pubDate>
      <link>https://dev.to/avinashwagh/day-7-of-my-cloud-journey-getting-started-with-docker-containerization-1p0n</link>
      <guid>https://dev.to/avinashwagh/day-7-of-my-cloud-journey-getting-started-with-docker-containerization-1p0n</guid>
      <description>&lt;p&gt;Over the past few days of my cloud learning journey, I explored different parts of AWS infrastructure.&lt;/p&gt;

&lt;p&gt;From deploying applications to designing secure cloud networks, each day has helped me understand how modern cloud systems are built.&lt;/p&gt;

&lt;p&gt;Quick recap of the previous learning days:&lt;/p&gt;

&lt;p&gt;Day 3 – Deployed a web application on a Linux server using Amazon EC2 and Nginx&lt;br&gt;
Day 4 – Hosted a static website using Amazon S3&lt;br&gt;
Day 5 – Explored backend services with Amazon RDS, DynamoDB, and AWS Lambda&lt;br&gt;
Day 6 – Built secure cloud networks using AWS VPC, VPC Peering, and Billing Alerts&lt;/p&gt;

&lt;p&gt;After learning about infrastructure and networking, the next logical step in my journey was:&lt;/p&gt;

&lt;p&gt;Containerization with Docker.&lt;/p&gt;

&lt;p&gt;Docker is one of the most important tools used in modern DevOps and Cloud Engineering workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Objective of Day 7&lt;/strong&gt;&lt;br&gt;
The goal today was to understand:&lt;/p&gt;

&lt;p&gt;• What Docker is&lt;br&gt;
• Why containers are used in modern application development&lt;br&gt;
• How to run containers using Docker&lt;br&gt;
• Basic Docker commands and container lifecycle&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🐳 Step 1: Understanding Docker&lt;/strong&gt;&lt;br&gt;
Docker is a platform that allows developers to package applications and their dependencies into containers.&lt;/p&gt;

&lt;p&gt;A container ensures that an application runs the same way in every environment.&lt;/p&gt;

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

&lt;p&gt;A developer might build an application on their local machine, but it could fail when deployed to a server because of missing dependencies or different system configurations.&lt;/p&gt;

&lt;p&gt;Docker solves this problem by packaging:&lt;/p&gt;

&lt;p&gt;Application code&lt;br&gt;
Runtime&lt;br&gt;
Libraries&lt;br&gt;
Dependencies&lt;br&gt;
System tools&lt;/p&gt;

&lt;p&gt;All inside a single container image.&lt;/p&gt;

&lt;p&gt;This makes applications portable, consistent, and easy to deploy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧩 Step 2: Installing Docker&lt;/strong&gt;&lt;br&gt;
To start working with containers, I installed Docker and verified the installation.&lt;/p&gt;

&lt;p&gt;Docker provides a command-line interface to manage containers and images.&lt;/p&gt;

&lt;p&gt;To test the installation, I ran the famous hello-world container.&lt;/p&gt;

&lt;p&gt;Example command:&lt;/p&gt;

&lt;p&gt;docker run hello-world&lt;br&gt;
This command downloads the image from Docker Hub and runs it inside a container.&lt;/p&gt;

&lt;p&gt;Seeing the successful output confirmed that Docker was installed and working correctly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚙️ Step 3: Running Basic Containers&lt;/strong&gt;&lt;br&gt;
Next, I experimented with simple containers using lightweight images.&lt;/p&gt;

&lt;p&gt;For example, running an Alpine Linux container:&lt;/p&gt;

&lt;p&gt;docker run alpine&lt;br&gt;
This allowed me to understand how containers start, execute commands, and stop after completion.&lt;/p&gt;

&lt;p&gt;I also explored commands like:&lt;/p&gt;

&lt;p&gt;docker ps&lt;br&gt;
docker ps -a&lt;br&gt;
docker stop &lt;br&gt;
These commands help manage running and stopped containers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📦 Step 4: Understanding Docker Images&lt;/strong&gt;&lt;br&gt;
Another key concept is Docker Images.&lt;/p&gt;

&lt;p&gt;An image is a template used to create containers.&lt;/p&gt;

&lt;p&gt;Images can be downloaded from Docker Hub, which is a public registry containing thousands of ready-to-use images.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;p&gt;Nginx&lt;br&gt;
Node.js&lt;br&gt;
Python&lt;br&gt;
MySQL&lt;br&gt;
Redis&lt;/p&gt;

&lt;p&gt;Using images, developers can quickly deploy applications without manually installing dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Key Technical Takeaways&lt;/strong&gt;&lt;br&gt;
Today’s learning introduced several important DevOps concepts:&lt;/p&gt;

&lt;p&gt;• Containers package applications with their dependencies&lt;br&gt;
• Docker ensures applications run consistently across environments&lt;br&gt;
• Docker images act as templates for containers&lt;br&gt;
• Containers are lightweight and start very quickly&lt;br&gt;
• Docker commands help manage container lifecycle&lt;/p&gt;

&lt;p&gt;Understanding Docker is a fundamental skill for Cloud Engineers and DevOps Engineers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Reflection&lt;/strong&gt;&lt;br&gt;
Over the past few days, my learning journey has expanded from cloud infrastructure to containerization.&lt;/p&gt;

&lt;p&gt;Day 3&lt;br&gt;
Application deployment on EC2 with Nginx&lt;/p&gt;

&lt;p&gt;Day 4&lt;br&gt;
Static website hosting using S3&lt;/p&gt;

&lt;p&gt;Day 5&lt;br&gt;
Backend systems using RDS, DynamoDB, and Lambda&lt;/p&gt;

&lt;p&gt;Day 6&lt;br&gt;
Cloud networking with VPC and billing alerts&lt;/p&gt;

&lt;p&gt;Day 7&lt;br&gt;
Introduction to Docker and containerization&lt;/p&gt;

&lt;p&gt;Each step is helping me understand how modern cloud-native applications are built and deployed.&lt;/p&gt;

&lt;p&gt;The next step in this journey will be exploring:&lt;/p&gt;

&lt;p&gt;Dockerfiles&lt;br&gt;
Building custom images&lt;br&gt;
Running applications inside containers&lt;br&gt;
Deploying containers in the cloud&lt;/p&gt;

&lt;p&gt;This is just the beginning of my Docker and containerization journey.&lt;/p&gt;

&lt;p&gt;More learning ahead. 🚀&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>aws</category>
      <category>learninginpublic</category>
    </item>
    <item>
      <title>Day 6 of My Cloud Journey: Building Secure AWS Networks with VPC, VPC Peering &amp; Billing Alerts</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Thu, 12 Mar 2026 04:37:07 +0000</pubDate>
      <link>https://dev.to/avinashwagh/day-6-of-my-cloud-journey-building-secure-aws-networks-with-vpc-vpc-peering-billing-alerts-4gk8</link>
      <guid>https://dev.to/avinashwagh/day-6-of-my-cloud-journey-building-secure-aws-networks-with-vpc-vpc-peering-billing-alerts-4gk8</guid>
      <description>&lt;p&gt;When I first started learning cloud computing, I mostly focused on launching servers and deploying applications.&lt;/p&gt;

&lt;p&gt;But as I continued exploring AWS services, I realized something important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure is not just about servers — it’s also about networking, security, and cost management&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On previous days of my learning journey:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 3&lt;/strong&gt; – Deployed a web application on a Linux server using Amazon EC2 and Nginx&lt;br&gt;
&lt;strong&gt;Day 4&lt;/strong&gt; – Hosted a static website using Amazon S3&lt;br&gt;
&lt;strong&gt;Day 5&lt;/strong&gt; – Explored backend architecture with Amazon RDS, DynamoDB, and AWS Lambda&lt;/p&gt;

&lt;p&gt;Today’s learning focused on an essential part of cloud architecture:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud networking and cost monitoring&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I explored three key AWS concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Virtual Private Cloud (VPC)&lt;/li&gt;
&lt;li&gt;VPC Peering&lt;/li&gt;
&lt;li&gt;Billing Alerts using CloudWatch
These services helped me understand how cloud environments are structured securely and how engineers monitor cloud costs effectively.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🚀 Objective of Day 6&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal today was to understand how cloud networks are designed and how organizations control spending in cloud environments.&lt;/p&gt;

&lt;p&gt;The main learning areas were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding private cloud networking&lt;/li&gt;
&lt;li&gt;Creating and configuring a Virtual Private Cloud&lt;/li&gt;
&lt;li&gt;Connecting two VPC networks using VPC Peering&lt;/li&gt;
&lt;li&gt;Setting up billing alerts to monitor cloud spending&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These topics are critical for &lt;strong&gt;Cloud Engineers, DevOps Engineers, and Solutions Architects&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌐 Step 1: Understanding AWS VPC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first concept I explored was &lt;strong&gt;AWS Virtual Private Cloud (VPC)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A VPC allows you to create a &lt;strong&gt;logically isolated network inside AWS&lt;/strong&gt;, where you can securely launch resources like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 instances&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Load balancers&lt;/li&gt;
&lt;li&gt;Containers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It works very similarly to a &lt;strong&gt;traditional data center network&lt;/strong&gt;, but everything is managed in the cloud.&lt;/p&gt;

&lt;p&gt;Inside a VPC, we can define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IP address ranges (CIDR blocks)&lt;/li&gt;
&lt;li&gt;Subnets&lt;/li&gt;
&lt;li&gt;Route tables&lt;/li&gt;
&lt;li&gt;Internet gateways&lt;/li&gt;
&lt;li&gt;Security groups&lt;/li&gt;
&lt;li&gt;Network ACLs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives engineers full control over** how resources communicate with each other and with the internet**.&lt;/p&gt;

&lt;p&gt;Example architecture:&lt;/p&gt;

&lt;p&gt;VPC&lt;br&gt;
 ├── Public Subnet&lt;br&gt;
 │     └── EC2 Web Server&lt;br&gt;
 │&lt;br&gt;
 └── Private Subnet&lt;br&gt;
       └── Database Server&lt;/p&gt;

&lt;p&gt;This type of architecture is widely used in production environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧩 Step 2: Creating a VPC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using the AWS Management Console, I created a custom VPC.&lt;/p&gt;

&lt;p&gt;Configuration included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CIDR block: 10.0.0.0/16&lt;/li&gt;
&lt;li&gt;Public subnet&lt;/li&gt;
&lt;li&gt;Internet Gateway&lt;/li&gt;
&lt;li&gt;Route table association&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allowed resources in the public subnet to &lt;strong&gt;communicate with the internet&lt;/strong&gt;, while still remaining inside a secure private network.&lt;/p&gt;

&lt;p&gt;Understanding VPC structure helped me see how &lt;strong&gt;cloud networks are designed similarly to enterprise networking systems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 Step 3: Learning VPC Peering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, I explored &lt;strong&gt;VPC Peering&lt;/strong&gt;, which allows two VPCs to communicate with each other privately.&lt;/p&gt;

&lt;p&gt;Normally, VPCs are isolated networks.&lt;/p&gt;

&lt;p&gt;But sometimes applications are distributed across multiple VPCs, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One VPC for application servers&lt;/li&gt;
&lt;li&gt;Another VPC for databases&lt;/li&gt;
&lt;li&gt;Separate VPCs for different environments (Dev, Test, Production)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;VPC Peering creates a private connection between them&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;VPC A (10.0.0.0/16)&lt;br&gt;
        │&lt;br&gt;
        │  VPC Peering Connection&lt;br&gt;
        │&lt;br&gt;
VPC B (192.168.0.0/16)&lt;/p&gt;

&lt;p&gt;Key points about VPC Peering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traffic stays inside the AWS network&lt;/li&gt;
&lt;li&gt;No internet gateway is required&lt;/li&gt;
&lt;li&gt;Low latency and secure communication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To enable communication, route tables must be updated to allow traffic between the VPC CIDR blocks.&lt;/p&gt;

&lt;p&gt;This concept is very important in &lt;strong&gt;large-scale microservice architectures&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💰 Step 4: Monitoring Costs with Billing Alerts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the most important lessons when learning cloud platforms is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Always monitor your cloud spending&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AWS provides a powerful way to track costs using** billing alerts and CloudWatch alarms**.&lt;/p&gt;

&lt;p&gt;I created a billing alert to notify me if my AWS usage crosses a certain amount.&lt;/p&gt;

&lt;p&gt;Configuration included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable AWS billing alerts&lt;/li&gt;
&lt;li&gt;Create a CloudWatch alarm&lt;/li&gt;
&lt;li&gt;Set threshold (example: $5)&lt;/li&gt;
&lt;li&gt;Add email notification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Workflow:&lt;/p&gt;

&lt;p&gt;AWS Usage&lt;br&gt;
      ↓&lt;br&gt;
Billing Metric&lt;br&gt;
      ↓&lt;br&gt;
CloudWatch Alarm&lt;br&gt;
      ↓&lt;br&gt;
Email Notification&lt;/p&gt;

&lt;p&gt;This ensures engineers get &lt;strong&gt;immediate alerts when costs increase unexpectedly&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cost monitoring is a critical skill in real-world cloud engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Key Technical Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today’s learning introduced some very important infrastructure concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How AWS VPC creates isolated cloud networks&lt;/li&gt;
&lt;li&gt;How subnets divide public and private resources&lt;/li&gt;
&lt;li&gt;How VPC Peering connects separate cloud networks&lt;/li&gt;
&lt;li&gt;How route tables control network communication&lt;/li&gt;
&lt;li&gt;How CloudWatch billing alerts help monitor cloud costs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One key realization stood out:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud engineering is not only about deploying applications — it's also about designing secure networks and managing infrastructure costs effectively&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Reflection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Over the past few days, my cloud learning journey has covered multiple aspects of AWS infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 3&lt;/strong&gt;&lt;br&gt;
Application deployment on EC2 with Nginx&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 4&lt;/strong&gt;&lt;br&gt;
Static website hosting using S3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 5&lt;/strong&gt;&lt;br&gt;
Backend systems using RDS, DynamoDB, and Lambda&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 6&lt;/strong&gt;&lt;br&gt;
Cloud networking with VPC and monitoring costs using billing alerts&lt;/p&gt;

&lt;p&gt;Each day is helping me understand &lt;strong&gt;how modern cloud architectures are built step by step&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The more I learn, the more I realize how powerful cloud platforms are for building scalable and secure systems.&lt;/p&gt;

&lt;p&gt;And this is just the beginning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 6 of my Cloud Engineering journey — more learning ahead&lt;/strong&gt;. 🚀&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloud</category>
      <category>learninginpublic</category>
    </item>
    <item>
      <title>From Static Storage to Managed Databases: Learning Amazon RDS, DynamoDB &amp; AWS Lambda (Day 5)</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Mon, 09 Mar 2026 04:23:52 +0000</pubDate>
      <link>https://dev.to/avinashwagh/from-static-storage-to-managed-databases-learning-amazon-rds-dynamodb-aws-lambda-day-5-3mnj</link>
      <guid>https://dev.to/avinashwagh/from-static-storage-to-managed-databases-learning-amazon-rds-dynamodb-aws-lambda-day-5-3mnj</guid>
      <description>&lt;p&gt;When I started learning cloud engineering, I believed infrastructure was mostly about launching servers and hosting applications.&lt;/p&gt;

&lt;p&gt;In the past few days, that perspective has changed significantly.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Day 3&lt;/strong&gt;, I deployed a web application on a Linux server using &lt;strong&gt;Amazon EC2&lt;/strong&gt; and &lt;strong&gt;Nginx&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Day 4&lt;/strong&gt;, I hosted a static website using &lt;strong&gt;Amazon S3&lt;/strong&gt; without running a server at all.&lt;/p&gt;

&lt;p&gt;Today’s learning introduced another important part of cloud architecture:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Databases and serverless computing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I explored how applications store and process data using:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Amazon RDS&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- Amazon DynamoDB&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These services showed me how AWS enables developers to build scalable backend systems &lt;strong&gt;without managing infrastructure manually&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 The Objective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today’s goal was to understand how cloud applications manage and process data.&lt;/p&gt;

&lt;p&gt;The focus areas were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploying a &lt;strong&gt;managed relational database&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Connecting an application server to the database&lt;/li&gt;
&lt;li&gt;Learning &lt;strong&gt;NoSQL database architecture&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Executing backend logic using &lt;strong&gt;serverless functions&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This meant working with three important AWS services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon RDS&lt;/li&gt;
&lt;li&gt;Amazon DynamoDB&lt;/li&gt;
&lt;li&gt;AWS Lambda&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🗄️ Step 1: Understanding Amazon RDS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first service I explored was &lt;strong&gt;Amazon RDS&lt;/strong&gt; (Relational Database Service).&lt;/p&gt;

&lt;p&gt;RDS is a managed database service that allows developers to run relational databases without handling server management tasks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OS patching&lt;/li&gt;
&lt;li&gt;Backups&lt;/li&gt;
&lt;li&gt;High availability configuration&lt;/li&gt;
&lt;li&gt;Scaling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AWS takes care of the infrastructure while developers focus on applications.&lt;/p&gt;

&lt;p&gt;Supported database engines include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- MySQL&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- PostgreSQL&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- MariaDB&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- Oracle Database&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- Microsoft SQL Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For practice, I created a MySQL &lt;strong&gt;RDS instance&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚙️ Step 2: Launching an RDS Database&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I created my first managed database instance using the AWS console.&lt;/p&gt;

&lt;p&gt;Configuration included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Engine: MySQL&lt;/li&gt;
&lt;li&gt;Instance type: db.t3.micro (Free Tier eligible)&lt;/li&gt;
&lt;li&gt;Storage: 20 GB&lt;/li&gt;
&lt;li&gt;Region: Mumbai&lt;/li&gt;
&lt;li&gt;Public accessibility: enabled for testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the instance was created, AWS automatically &lt;strong&gt;provided a database endpoint&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This endpoint acts like the database address that applications use to connect.&lt;/p&gt;

&lt;p&gt;Example structure:&lt;/p&gt;

&lt;p&gt;mydb.xxxxxx.ap-south-1.rds.amazonaws.com&lt;/p&gt;

&lt;p&gt;Instead of installing MySQL manually on a server, AWS handled the entire database infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 Step 3: Connecting EC2 to RDS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, I connected my &lt;strong&gt;Amazon EC2&lt;/strong&gt; instance to the RDS database.&lt;/p&gt;

&lt;p&gt;The connection required proper &lt;strong&gt;network and security configuration&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Steps included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allowing inbound database access in &lt;strong&gt;security groups&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Using the RDS endpoint&lt;/li&gt;
&lt;li&gt;Connecting via MySQL client from the EC2 server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once connected, I was able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create databases&lt;/li&gt;
&lt;li&gt;Create tables&lt;/li&gt;
&lt;li&gt;Insert and retrieve data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This demonstrated how &lt;strong&gt;application servers interact with managed databases in real-world cloud architectures&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧩 Step 4: Understanding DynamoDB (NoSQL)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After working with relational databases, I explored &lt;strong&gt;Amazon DynamoDB&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;DynamoDB is a &lt;strong&gt;fully managed NoSQL database&lt;/strong&gt; designed for high scalability and low latency.&lt;/p&gt;

&lt;p&gt;Unlike relational databases, DynamoDB stores data in:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Tables&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- Items&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- Attributes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example structure:&lt;/p&gt;

&lt;p&gt;Users Table&lt;br&gt;
 ├── UserID&lt;br&gt;
 ├── Name&lt;br&gt;
 ├── Email&lt;br&gt;
 └── CreatedDate&lt;/p&gt;

&lt;p&gt;Key advantages of DynamoDB include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatic scaling&lt;/li&gt;
&lt;li&gt;Millisecond latency&lt;/li&gt;
&lt;li&gt;Serverless architecture&lt;/li&gt;
&lt;li&gt;Fully managed infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes DynamoDB ideal for modern cloud applications such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mobile apps&lt;/li&gt;
&lt;li&gt;gaming backends&lt;/li&gt;
&lt;li&gt;real-time analytics&lt;/li&gt;
&lt;li&gt;serverless architectures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;⚡ Step 5: Running Serverless Code with AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, I explored &lt;strong&gt;AWS Lambda&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Lambda allows developers to &lt;strong&gt;run code without managing servers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of deploying applications on EC2, Lambda executes code &lt;strong&gt;only when triggered&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Common triggers include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API requests&lt;/li&gt;
&lt;li&gt;file uploads&lt;/li&gt;
&lt;li&gt;database events&lt;/li&gt;
&lt;li&gt;scheduled tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For practice, I created a Lambda function that interacted with DynamoDB.&lt;/p&gt;

&lt;p&gt;The workflow looked like this:&lt;/p&gt;

&lt;p&gt;Client Request&lt;br&gt;
     ↓&lt;br&gt;
AWS Lambda Function&lt;br&gt;
     ↓&lt;br&gt;
DynamoDB Table&lt;br&gt;
     ↓&lt;br&gt;
Response Returned&lt;/p&gt;

&lt;p&gt;This architecture is known as &lt;strong&gt;serverless backend architecture&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The biggest advantage is that AWS automatically handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;infrastructure&lt;/li&gt;
&lt;li&gt;scaling&lt;/li&gt;
&lt;li&gt;execution environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers only focus on writing code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Key Technical Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today’s learning introduced important backend architecture concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How &lt;strong&gt;Amazon RDS&lt;/strong&gt; provides managed relational databases&lt;/li&gt;
&lt;li&gt;How EC2 applications communicate with RDS&lt;/li&gt;
&lt;li&gt;The difference between &lt;strong&gt;SQL and NoSQL databases&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;Amazon DynamoDB&lt;/strong&gt; handles high-scale workloads&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;AWS Lambda&lt;/strong&gt; runs backend code without servers&lt;/li&gt;
&lt;li&gt;How serverless architecture simplifies infrastructure management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One key realization stood out:&lt;/p&gt;

&lt;p&gt;Cloud platforms allow developers to &lt;strong&gt;choose between multiple architectures depending on the application’s needs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Reflection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In just a few days of learning cloud engineering, I’ve experienced several different deployment models:&lt;/p&gt;

&lt;p&gt;Day 3&lt;br&gt;
Application deployed on &lt;strong&gt;Amazon EC2&lt;/strong&gt; using &lt;strong&gt;Nginx&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 4&lt;br&gt;
Static website hosted using &lt;strong&gt;Amazon S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 5&lt;br&gt;
Backend architecture using &lt;strong&gt;Amazon RDS, Amazon DynamoDB&lt;/strong&gt;, and &lt;strong&gt;AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each approach solves a different type of problem.&lt;/p&gt;

&lt;p&gt;Traditional servers provide full control.&lt;/p&gt;

&lt;p&gt;Object storage enables lightweight hosting.&lt;/p&gt;

&lt;p&gt;Serverless services enable scalable backend architectures.&lt;/p&gt;

&lt;p&gt;Understanding when to use each of these approaches is what makes cloud engineering powerful.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;Day 5 of my cloud learning journey&lt;/strong&gt;, and every day the architecture possibilities are becoming clearer.&lt;/p&gt;

&lt;p&gt;More exploration ahead. 🚀&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>serverless</category>
    </item>
    <item>
      <title>From EC2 Servers to Serverless Hosting: Learning Amazon S3, IAM &amp; AWS CLI (Day 4)</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Fri, 06 Mar 2026 04:34:11 +0000</pubDate>
      <link>https://dev.to/avinashwagh/from-ec2-servers-to-serverless-hosting-learning-amazon-s3-iam-aws-cli-day-4-iak</link>
      <guid>https://dev.to/avinashwagh/from-ec2-servers-to-serverless-hosting-learning-amazon-s3-iam-aws-cli-day-4-iak</guid>
      <description>&lt;p&gt;When I started learning cloud engineering, I initially thought cloud deployment meant launching servers.&lt;/p&gt;

&lt;p&gt;In my previous article, I deployed a web application on a Linux server using &lt;strong&gt;Amazon EC2&lt;/strong&gt; and &lt;strong&gt;Nginx&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That was a huge milestone.&lt;/p&gt;

&lt;p&gt;But today I learned something even more powerful.&lt;/p&gt;

&lt;p&gt;In the cloud, &lt;strong&gt;sometimes you don’t need a server at all&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead, you can host applications using &lt;strong&gt;object storage&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today’s focus was learning &lt;strong&gt;Amazon S3&lt;/strong&gt;, understanding &lt;strong&gt;Identity and Access Management&lt;/strong&gt;, and interacting with AWS services using the &lt;strong&gt;command line&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And it completely changed how I see infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 The Objective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today’s goal was simple but important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand how &lt;strong&gt;cloud storage works&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Learn &lt;strong&gt;user and permission management&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Deploy a &lt;strong&gt;static website without a server&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Interact with AWS using the &lt;strong&gt;CLI&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This meant working with three important AWS components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Amazon S3&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- AWS Identity and Access Management&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;- AWS Command Line Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📦 Step 1: Understanding Amazon S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, I learned about &lt;strong&gt;Amazon S3&lt;/strong&gt; (Simple Storage Service).&lt;/p&gt;

&lt;p&gt;It is an &lt;strong&gt;object storage service&lt;/strong&gt; used to store files in the cloud.&lt;/p&gt;

&lt;p&gt;Instead of folders and files like a normal system, S3 stores data as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Buckets&lt;/strong&gt; → Containers for storage&lt;br&gt;
&lt;strong&gt;- Objects&lt;/strong&gt; → Files inside buckets&lt;/p&gt;

&lt;p&gt;So the structure looks like:&lt;/p&gt;

&lt;p&gt;Bucket&lt;br&gt;
 ├── index.html&lt;br&gt;
 ├── error.html&lt;br&gt;
 ├── images/&lt;br&gt;
 └── css/&lt;/p&gt;

&lt;p&gt;Buckets are globally unique and act like &lt;strong&gt;storage containers for applications, backups, media files, and static websites&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🪣 Step 2: Creating and Managing an S3 Bucket&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After understanding the concept, I created my own S3 bucket.&lt;/p&gt;

&lt;p&gt;Steps I followed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Opened the AWS Console&lt;/li&gt;
&lt;li&gt;Navigated to &lt;strong&gt;Amazon S3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Created a new bucket&lt;/li&gt;
&lt;li&gt;Selected the &lt;strong&gt;Mumbai region&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configured permissions&lt;/li&gt;
&lt;li&gt;Enabled &lt;strong&gt;Static Website Hosting&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Inside the bucket, I uploaded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;index.html&lt;/li&gt;
&lt;li&gt;error.html&lt;/li&gt;
&lt;li&gt;project assets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once the files were uploaded, I enabled &lt;strong&gt;static website hosting&lt;/strong&gt; and AWS generated a &lt;strong&gt;public website endpoint&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My website was now running &lt;strong&gt;directly from S3 storage&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No server required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌐 Step 3: Hosting a Static Website using S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unlike my &lt;strong&gt;EC2 deployment&lt;/strong&gt;, this approach had a big difference:&lt;/p&gt;

&lt;p&gt;There was &lt;strong&gt;no Linux server, no Nginx&lt;/strong&gt;, and no &lt;strong&gt;SSH&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The files live inside S3&lt;/li&gt;
&lt;li&gt;AWS automatically serves them over HTTP&lt;/li&gt;
&lt;li&gt;The bucket behaves like a web server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This showed me a very important cloud concept:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not every application requires a virtual machine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Sometimes storage + HTTP delivery is enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔐 Step 4: Learning IAM – Identity &amp;amp; Access Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, I explored &lt;strong&gt;AWS Identity and Access Management&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;IAM controls &lt;strong&gt;who can access AWS resources and what actions they can perform&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of sharing the root account, best practice is to create &lt;strong&gt;IAM users with limited permissions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Key IAM components I learned:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Users&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Individual identities created for developers or services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A collection of users sharing the same permissions.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Developers Group&lt;br&gt;
 ├── avinash-dev&lt;br&gt;
 ├── sagar-dev&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Roles&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Temporary access permissions used by services like EC2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Policies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;JSON documents that define permissions.&lt;/p&gt;

&lt;p&gt;Example policy action:&lt;/p&gt;

&lt;p&gt;s3:PutObject&lt;br&gt;
s3:GetObject&lt;br&gt;
s3:ListBucket&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identity Providers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Used for &lt;strong&gt;federated access&lt;/strong&gt; like Google login or corporate SSO.&lt;/p&gt;

&lt;p&gt;This structure makes AWS &lt;strong&gt;secure and scalable for teams&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 Step 5: Installing and Configuring AWS CLI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today I also started working with the &lt;strong&gt;AWS Command Line Interface&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of using the AWS console, CLI allows interaction with AWS services directly from the terminal.&lt;/p&gt;

&lt;p&gt;First I installed the AWS CLI and configured credentials:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;aws configure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access Key&lt;/li&gt;
&lt;li&gt;Secret Key&lt;/li&gt;
&lt;li&gt;Region&lt;/li&gt;
&lt;li&gt;Output format&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After configuration, my terminal could interact with AWS services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📂 Step 6: Managing S3 Using AWS CLI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using the CLI, I practiced several commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List buckets&lt;/strong&gt;&lt;br&gt;
aws s3 ls&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upload a file&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;aws s3 cp index.html s3://cloudcanvas-editor-h-bucket/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upload error page&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;aws s3 cp error.html s3://cloudcanvas-editor-h-bucket/&lt;/p&gt;

&lt;p&gt;These commands allowed me to &lt;strong&gt;manage cloud storage directly from my terminal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It felt similar to using Linux commands, but now I was interacting with &lt;strong&gt;cloud infrastructure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Key Technical Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today’s learning helped me understand several important cloud concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How &lt;strong&gt;Amazon S3&lt;/strong&gt; stores objects instead of traditional filesystems&lt;/li&gt;
&lt;li&gt;Difference between &lt;strong&gt;server-based hosting and serverless hosting&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Why &lt;strong&gt;IAM is critical for security&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;policies control resource permissions&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How the &lt;strong&gt;AWS Command Line Interface&lt;/strong&gt; enables automation&lt;/li&gt;
&lt;li&gt;How to upload and manage files in S3 from the terminal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, I realized something powerful:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud engineering is not only about servers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is about &lt;strong&gt;choosing the right service for the right problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Reflection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just two days ago, my applications were running on &lt;strong&gt;localhost&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In my previous article, I deployed one on &lt;strong&gt;Amazon EC2&lt;/strong&gt; using &lt;strong&gt;Nginx&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today, I hosted one &lt;strong&gt;without any server&lt;/strong&gt; using &lt;strong&gt;Amazon S3&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That contrast helped me understand something important about cloud architecture:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure choices matter&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Sometimes you scale with servers.&lt;/p&gt;

&lt;p&gt;Sometimes you scale without them.&lt;/p&gt;

&lt;p&gt;And understanding both approaches is what makes cloud engineering powerful.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;Day 4 of my cloud journey&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;More learning ahead 🚀&lt;/p&gt;

</description>
      <category>aws</category>
      <category>s3</category>
      <category>devops</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Deploying a Web Application on AWS EC2: From Localhost to Public Access (Day 3)</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Sun, 01 Mar 2026 04:25:12 +0000</pubDate>
      <link>https://dev.to/avinashwagh/deploying-a-web-application-on-aws-ec2-from-localhost-to-public-access-day-3-1j1j</link>
      <guid>https://dev.to/avinashwagh/deploying-a-web-application-on-aws-ec2-from-localhost-to-public-access-day-3-1j1j</guid>
      <description>&lt;p&gt;When I started my transition from .NET development to Cloud Engineering, I knew one thing:&lt;/p&gt;

&lt;p&gt;Reading documentation wouldn’t be enough.&lt;/p&gt;

&lt;p&gt;I had to deploy something real.&lt;/p&gt;

&lt;p&gt;Today, I successfully deployed my web application to a live cloud server using a Linux EC2 instance and Nginx — and accessed it publicly from both my laptop and mobile device using a public IP address.&lt;/p&gt;

&lt;p&gt;This was the moment my application left localhost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 The Objective&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deploy a static web application on a cloud-based Linux server and make it accessible over the internet.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No managed platforms.&lt;/li&gt;
&lt;li&gt;No deployment shortcuts.&lt;/li&gt;
&lt;li&gt;Just core infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🏗 Step 1: Provisioning the Cloud Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I launched a t3.micro Linux instance using&lt;br&gt;
Amazon Elastic Compute Cloud&lt;br&gt;
on&lt;br&gt;
Amazon Web Services&lt;/p&gt;

&lt;p&gt;Configured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Key Pair for secure SSH access&lt;/li&gt;
&lt;li&gt;Security Group allowing HTTP (Port 80)&lt;/li&gt;
&lt;li&gt;Default EBS storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At this point, I had a virtual machine running in the Mumbai region — ready to host my application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔐 Step 2: Secure Remote Access&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using SSH and key-based authentication, I connected to the instance from my terminal.&lt;/p&gt;

&lt;p&gt;This was the first mindset shift.&lt;/p&gt;

&lt;p&gt;This wasn’t localhost anymore.&lt;br&gt;
This was a remote server running inside AWS infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚙ Step 3: Installing and Configuring Nginx&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I installed&lt;br&gt;
Nginx&lt;br&gt;
to act as the web server.&lt;/p&gt;

&lt;p&gt;After verifying the service was running, I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removed the default Nginx welcome page&lt;/li&gt;
&lt;li&gt;Copied my application files into /var/www/html/&lt;/li&gt;
&lt;li&gt;Restarted the Nginx service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I opened the public IP in my browser.&lt;/p&gt;

&lt;p&gt;And it worked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌍 The First Real Test – Laptop Browser&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below is my application successfully running via EC2 Public IP in a desktop browser:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📸 Screenshot 1 – Application Running on Laptop&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%2Fttxcgt2klywxpwmfjyl3.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%2Fttxcgt2klywxpwmfjyl3.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Application deployed on EC2 and accessible publicly via Public IP address.&lt;/p&gt;

&lt;p&gt;At this moment, the deployment was successful.&lt;/p&gt;

&lt;p&gt;But I wanted one more confirmation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📱 The Real Validation – Mobile Access&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To ensure it wasn’t dependent on my system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I disconnected my laptop.&lt;/li&gt;
&lt;li&gt;Switched to mobile internet.&lt;/li&gt;
&lt;li&gt;Entered the Public IP in my phone browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it loaded instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📸 Screenshot 2 – Application Running on Mobile&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%2Fyh6fcch4chkj8x2eh9gx.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%2Fyh6fcch4chkj8x2eh9gx.jpeg" alt=" " width="716" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Application accessible globally via mobile browser — independent of local system.&lt;/p&gt;

&lt;p&gt;That’s when it truly clicked.&lt;/p&gt;

&lt;p&gt;The server runs independently of my laptop.&lt;br&gt;
The application lives in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Key Technical Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This hands-on deployment reinforced several important cloud fundamentals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Difference between localhost and public IP&lt;/li&gt;
&lt;li&gt;How Security Groups act as firewalls&lt;/li&gt;
&lt;li&gt;Why opening Port 80 is necessary&lt;/li&gt;
&lt;li&gt;How Nginx serves static content&lt;/li&gt;
&lt;li&gt;Understanding instance lifecycle and cost awareness&lt;/li&gt;
&lt;li&gt;Importance of Elastic IP for production stability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, I started thinking in terms of infrastructure — not just application logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💰 Cost Awareness&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using a t3.micro under AWS Free Tier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;750 hours per month available&lt;/li&gt;
&lt;li&gt;Suitable for continuous hands-on learning&lt;/li&gt;
&lt;li&gt;Encourages cost-conscious cloud usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloud engineering is not only about scalability.&lt;br&gt;
It’s about efficiency and responsible architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Reflection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a developer transitioning into cloud engineering, today felt like a milestone.&lt;/p&gt;

&lt;p&gt;Writing code is powerful.&lt;/p&gt;

&lt;p&gt;But deploying that code to a live cloud server — configuring compute, networking, and services — builds a completely different level of understanding.&lt;/p&gt;

&lt;p&gt;This wasn’t just hosting a webpage.&lt;/p&gt;

&lt;p&gt;It was building a small, real-world infrastructure setup from scratch.&lt;/p&gt;

&lt;p&gt;And this is only Day 3.&lt;/p&gt;

&lt;p&gt;On to the next challenge 🚀&lt;/p&gt;

</description>
      <category>ec2</category>
      <category>devops</category>
      <category>aws</category>
      <category>cloudengineering</category>
    </item>
    <item>
      <title>From .NET to Cloud – AWS Engineer Journey (Day 2: Deep Dive into EC2)</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Thu, 26 Feb 2026 04:30:31 +0000</pubDate>
      <link>https://dev.to/avinashwagh/from-net-to-cloud-aws-engineer-journey-day-2-deep-dive-into-ec2-kn7</link>
      <guid>https://dev.to/avinashwagh/from-net-to-cloud-aws-engineer-journey-day-2-deep-dive-into-ec2-kn7</guid>
      <description>&lt;p&gt;As part of my structured transition from .NET development to Cloud Engineering, I recently explored &lt;strong&gt;Amazon EC2 (Elastic Compute Cloud)&lt;/strong&gt; — one of the core compute services in &lt;strong&gt;Amazon Web Services&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Understanding EC2 is a major step toward designing scalable and production-ready cloud systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 What is Amazon EC2?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon EC2 provides resizable virtual servers in the cloud.&lt;br&gt;
It allows engineers to provision compute capacity on-demand without managing physical hardware.&lt;/p&gt;

&lt;p&gt;This is where applications actually run in AWS infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 Key Learnings from My Hands-on Practice&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1️⃣ Launching Virtual Servers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Created EC2 instances using different AMIs:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Amazon Linux&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ubuntu&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understood the full launch workflow: AMI → Instance Type → Key Pair → Security Group → Storage → Launch.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2️⃣ Instance Types &amp;amp; Sizing Strategy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Explored instance families:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;General Purpose&lt;/li&gt;
&lt;li&gt;Compute Optimized&lt;/li&gt;
&lt;li&gt;Memory Optimized&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learned how selecting the right instance type impacts performance and cost optimization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3️⃣ Secure Access &amp;amp; Networking&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configured Key Pairs for SSH authentication&lt;/li&gt;
&lt;li&gt;Set up Security Groups (firewall rules)&lt;/li&gt;
&lt;li&gt;Practiced SSH connectivity via terminal&lt;/li&gt;
&lt;li&gt;Understood inbound vs outbound traffic rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security and networking fundamentals became much clearer during this process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4️⃣ Storage with EBS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Studied EBS volume types&lt;/li&gt;
&lt;li&gt;Attached &amp;amp; detached volumes&lt;/li&gt;
&lt;li&gt;Understood root volume vs additional storage&lt;/li&gt;
&lt;li&gt;Learned persistence behavior after instance stop/terminate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Storage design directly affects durability and performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5️⃣ Elastic IP &amp;amp; Monitoring&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explored Elastic IP for static public addressing&lt;/li&gt;
&lt;li&gt;Understood basic monitoring concepts&lt;/li&gt;
&lt;li&gt;Learned about auto-recovery mechanisms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These concepts connect directly to high availability and reliability engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Technical Insight Gained&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Coming from an application development background, EC2 helped me see infrastructure from a system-level perspective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications run on compute (EC2)&lt;/li&gt;
&lt;li&gt;Storage persists in EBS&lt;/li&gt;
&lt;li&gt;Access is controlled via IAM&lt;/li&gt;
&lt;li&gt;Traffic flows through VPC and Security Groups&lt;/li&gt;
&lt;li&gt;Availability requires monitoring and recovery planning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloud engineering is not just deployment — it’s architecture thinking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Reflection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The more I learn AWS, the more I realize:&lt;/p&gt;

&lt;p&gt;Strong cloud engineers don’t just write code.&lt;br&gt;
They design systems that are scalable, secure, and resilient by default.&lt;/p&gt;

&lt;p&gt;Step by step, building foundations.&lt;/p&gt;

&lt;p&gt;Consistency is the real superpower 💪🐧&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ec2</category>
      <category>devops</category>
      <category>cloudengineer</category>
    </item>
    <item>
      <title>From .NET to Cloud – AWS Engineer Journey (Day 1: Foundations)</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Fri, 20 Feb 2026 15:05:42 +0000</pubDate>
      <link>https://dev.to/avinashwagh/from-net-to-cloud-aws-engineer-journey-day-1-foundations-195f</link>
      <guid>https://dev.to/avinashwagh/from-net-to-cloud-aws-engineer-journey-day-1-foundations-195f</guid>
      <description>&lt;p&gt;As a Software Engineer with a background in .NET and enterprise application systems, I’ve started my structured transition into Cloud &amp;amp; DevOps engineering.&lt;/p&gt;

&lt;p&gt;Instead of jumping directly into advanced tools and automation, I chose to begin where every strong cloud engineer begins — &lt;strong&gt;the fundamentals&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Because scalable systems are never built on weak foundations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;☁️ Understanding Cloud Computing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud computing is the delivery of computing services — servers, storage, databases, networking, and software — over the internet on a &lt;strong&gt;pay-as-you-go&lt;/strong&gt; model.&lt;/p&gt;

&lt;p&gt;What makes it powerful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On-demand resource provisioning&lt;/li&gt;
&lt;li&gt;Elastic scalability&lt;/li&gt;
&lt;li&gt;High availability&lt;/li&gt;
&lt;li&gt;Cost efficiency&lt;/li&gt;
&lt;li&gt;No physical infrastructure management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Leading cloud providers include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Web Services&lt;/li&gt;
&lt;li&gt;Microsoft Azure&lt;/li&gt;
&lt;li&gt;Google Cloud Platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This shifts the mindset from simply deploying applications to designing systems that are scalable and resilient by architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🏗 Cloud Service Models – Understanding Responsibility&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the most important concepts I reinforced today was &lt;strong&gt;who manages what&lt;/strong&gt; in cloud environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 IaaS (Infrastructure as a Service)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example: Amazon EC2&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User manages: OS, middleware, applications&lt;/li&gt;
&lt;li&gt;Provider manages: hardware &amp;amp; virtualization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔹 PaaS (Platform as a Service)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example: Azure App Service&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User manages: Application code&lt;/li&gt;
&lt;li&gt;Provider manages: OS, runtime, infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔹 SaaS (Software as a Service)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example: Google Docs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully managed by provider&lt;/li&gt;
&lt;li&gt;Delivered over the internet&lt;/li&gt;
&lt;li&gt;No infrastructure management required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding these models is critical for designing the right architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌍 Cloud Deployment Models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also revisited deployment strategies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public Cloud&lt;/strong&gt; – Shared infrastructure (e.g., Amazon Web Services)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Cloud&lt;/strong&gt; – Dedicated infrastructure for one organization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid Cloud&lt;/strong&gt; – Combination of public and private environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These models directly impact security, compliance, and scalability decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;☁️ Core AWS Services Reviewed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To build clarity, I focused on foundational services of Amazon Web Services:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 EC2 – Compute&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon EC2 provides resizable virtual servers to run applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 S3 – Storage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon S3 offers highly durable object storage for files, backups, and logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 IAM – Security&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Identity and Access Management controls users, roles, and permissions.&lt;/p&gt;

&lt;p&gt;Principle reinforced:&lt;br&gt;
&lt;strong&gt;Always follow least privilege. Never use root for daily operations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 VPC – Networking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon VPC enables logically isolated networking with subnets, route tables, and security groups.&lt;/p&gt;

&lt;p&gt;This connects cloud infrastructure directly with networking fundamentals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🖥 Virtualization – The Backbone of Cloud&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud environments operate using virtualization technology. Solutions like those from VMware allow multiple virtual machines to run on a single physical server using hypervisors.&lt;/p&gt;

&lt;p&gt;This enables efficient resource utilization, isolation, and scalability at scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔍 Key Reflection from Day 1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As someone transitioning from application development to cloud engineering, I’m beginning to see how everything connects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications run on compute&lt;/li&gt;
&lt;li&gt;Data resides in storage&lt;/li&gt;
&lt;li&gt;Access is controlled through identity policies&lt;/li&gt;
&lt;li&gt;Infrastructure lives inside secure networks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloud engineering is not separate from development — it strengthens it.&lt;/p&gt;

&lt;p&gt;Consistency remains the real superpower 💪🐧&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>devops</category>
      <category>cloudengineer</category>
    </item>
    <item>
      <title>🚀 Transitioning from .NET Development to Cloud &amp; DevOps (AWS Journey)</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Wed, 11 Feb 2026 13:22:49 +0000</pubDate>
      <link>https://dev.to/avinashwagh/actively-building-cloud-devops-skills-aws-upskilling-journey-3a0c</link>
      <guid>https://dev.to/avinashwagh/actively-building-cloud-devops-skills-aws-upskilling-journey-3a0c</guid>
      <description>&lt;p&gt;As a Software Engineer with a background in .NET and enterprise application systems, I’ve started aligning my development experience with cloud infrastructure practices.&lt;/p&gt;

&lt;p&gt;After strengthening Linux fundamentals, I’m now working hands-on with AWS core services such as EC2, S3, IAM, and VPC — focusing on secure networking, scalable architecture design, monitoring, and deployment workflows.&lt;/p&gt;

&lt;p&gt;My goal is to bridge application development with cloud infrastructure to better understand how scalable, production-ready systems are built and maintained.&lt;/p&gt;

&lt;p&gt;I’ll be sharing practical implementations and architecture learnings as I continue this transition into Cloud &amp;amp; DevOps engineering.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudengineer</category>
      <category>devops</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Linux Learning Journey – Day 19: Text Processing &amp; Data Manipulation with grep, awk &amp; sed 📝🔍</title>
      <dc:creator>Avinash wagh</dc:creator>
      <pubDate>Sun, 08 Feb 2026 07:10:50 +0000</pubDate>
      <link>https://dev.to/avinashwagh/linux-learning-journey-day-19-text-processing-data-manipulation-with-grep-awk-sed-56jk</link>
      <guid>https://dev.to/avinashwagh/linux-learning-journey-day-19-text-processing-data-manipulation-with-grep-awk-sed-56jk</guid>
      <description>&lt;p&gt;After mastering network routing, security, and API debugging on Day 18, Day 19 of my Linux learning journey focused on &lt;strong&gt;text processing and data manipulation&lt;/strong&gt; — an essential skillset for any Linux administrator, DevOps engineer, or Cloud practitioner.&lt;/p&gt;

&lt;p&gt;Text processing is at the heart of Linux-based automation, log analysis, and monitoring. The commands I explored today — grep, awk, and sed — are the Swiss Army knives of the command line, transforming raw text and logs into actionable insights.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 grep – Pattern Searching &amp;amp; Filtering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;grep is a command-line utility for searching text using patterns or regular expressions.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- grep "error" /var/log/syslog&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔️ Key Learnings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filters lines containing specific patterns&lt;/li&gt;
&lt;li&gt;Supports regular expressions for advanced searches&lt;/li&gt;
&lt;li&gt;Can search recursively in directories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quickly identify errors or warnings in logs&lt;/li&gt;
&lt;li&gt;Extract specific information from configuration files&lt;/li&gt;
&lt;li&gt;Debug application outputs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔹 awk – Data Extraction &amp;amp; Reporting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;awk is a versatile tool for text parsing, data extraction, and reporting. It treats text as structured fields and allows advanced operations like calculations and conditionals.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- awk '{print $1, $3}' /etc/passwd&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔️ What it Does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Splits text into fields&lt;/li&gt;
&lt;li&gt;Performs operations on specific columns&lt;/li&gt;
&lt;li&gt;Can be combined with patterns for selective processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extract usernames, IPs, or other structured data from logs&lt;/li&gt;
&lt;li&gt;Summarize reports from CSV or tab-delimited files&lt;/li&gt;
&lt;li&gt;Automate repetitive data processing tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔹 sed – Stream Editing &amp;amp; Text Transformation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;sed (stream editor) is used to modify text in streams or files without opening them in a text editor.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- sed 's/error/ERROR/g' /var/log/syslog&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔️ Key Learnings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Perform search-and-replace operations&lt;/li&gt;
&lt;li&gt;Delete, insert, or transform lines&lt;/li&gt;
&lt;li&gt;Can be used in pipelines for automated processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modify configuration files in automation scripts&lt;/li&gt;
&lt;li&gt;Clean and transform log outputs&lt;/li&gt;
&lt;li&gt;Batch edit text across multiple files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔹 Why These Commands Matter in Real-World Systems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Text processing commands are not just academic exercises — they are &lt;strong&gt;production essentials&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logs and configuration files contain valuable system insights&lt;/li&gt;
&lt;li&gt;Automation scripts often rely on grep, awk, and sed to parse and act on data&lt;/li&gt;
&lt;li&gt;Data manipulation enables faster troubleshooting and reporting&lt;/li&gt;
&lt;li&gt;Combined, these tools reduce manual effort and make Linux systems more observable and manageable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🚀 Day 19 Takeaway&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Today’s journey significantly strengthened my understanding of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Searching and filtering text efficiently&lt;/li&gt;
&lt;li&gt;Extracting and summarizing structured data&lt;/li&gt;
&lt;li&gt;Automating text transformations for system and application logs&lt;/li&gt;
&lt;li&gt;Integrating text processing tools into real-world DevOps and Cloud workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Linux is gradually shifting from “just a terminal” to a &lt;strong&gt;powerful data-processing environment&lt;/strong&gt;. With tools like grep, awk, and sed, handling complex logs, automation pipelines, and system monitoring becomes not only feasible but efficient.&lt;/p&gt;

&lt;p&gt;Consistency and curiosity remain the real superpowers 🔑💪. Step by step, the Linux command line is becoming less intimidating and more empowering.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>cloud</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
