---
Cloud Engineer with hands-on experience in Amazon Web Services (AWS) including S3, IAM, EC2, VPC, and CloudFront. Skilled in AWS, Linux, and CI/CD practices for building scalable and reliable cloud environments. Strong understanding of cloud architecture, networking fundamentals, and automation. Passionate about designing secure, high-availability cloud solutions and continuously improving skills in modern Cloud and DevOps technologies.
kishan_miskin — Cloud Computing Intern · AWS Architect · DevOps Builder
╭──────────────────────────────────────────────────────────────────╮
│ NAME = "Kishan Miskin" │
│ ROLE = "Cloud Computing Intern @ Rooman Technologies" │
│ LOCATION = "Belgaum, India 🇮🇳" │
│ DEGREE = "BE — Final Year (Graduating mid-2026)" │
│ LEARNING = "Terraform (IaC)" │
│ SEEKING = "Junior Cloud Engineer / Cloud Support / DevOps" │
│ PHILOSOPHY = "Build it. Break it. Fix it. Understand it." │
│ STATUS = "🟢 Open to Work" │
╰──────────────────────────────────────────────────────────────────╯┌──────────────────────────────────────────────────────────────────┐
│ ABOUT ME │
├──────────────────────────────────────────────────────────────────┤
│ │
│ I'm a final-year BE student and Cloud Computing Intern at │
│ Rooman Technologies — building real AWS infrastructure and │
│ DevOps pipelines from the ground up. │
│ │
│ I don't just follow tutorials. │
│ I build, break, and fix things until I understand how │
│ they actually work — including intentionally misconfiguring │
│ live infrastructure to study failure modes first-hand. │
│ │
│ From spinning up custom VPCs to automating full CI/CD │
│ pipelines with GitHub Actions — I focus on real-world │
│ cloud skills that translate directly to the job. │
│ │
└──────────────────────────────────────────────────────────────────┘
| Domain | Core Skills | Level |
|---|---|---|
| ☁️ AWS | EC2 · S3 · VPC · IAM · RDS · CloudFront · ALB · Route 53 | ████████░░ |
| ⚙️ DevOps | GitHub Actions · Docker · Docker Compose · Bash · PM2 | ████████░░ |
| 🌐 Networking | Custom VPCs · Subnets · Security Groups · NAT · Bastion | ████████░░ |
| 🏗️ IaC | Terraform — EC2 provisioning · security groups · user-data | ██████░░░░ |
| 🔧 Tools | Linux · Git · Nginx · Node.js · SSH · VS Code | █████████░ |
Package Status Proficiency Components
────────────────────────────────────────────────────────────────────────
aws-core [INSTALLED] ██████████ EC2 · S3 · VPC · IAM · EBS · CloudFront
aws-networking [INSTALLED] ████████░░ Route 53 · ACM · ALB · Security Groups
aws-storage [INSTALLED] █████████░ S3 versioning · Bucket policies · ACLs
aws-database [INSTALLED] ████████░░ RDS MySQL · private subnet groups
Package Status Proficiency Components
────────────────────────────────────────────────────────────────────────
linux [INSTALLED] ██████████ Bash scripting · SSH · server admin
github-actions [INSTALLED] █████████░ CI/CD pipelines · YAML workflows
docker [INSTALLED] ████████░░ Containerisation · Docker Compose
terraform [LEARNING] ██████░░░░ IaC · EC2 provisioning · .tf configs
Package Status Proficiency Components
────────────────────────────────────────────────────────────────────────
nginx [INSTALLED] ████████░░ Reverse proxy · web server config
git [INSTALLED] ██████████ Version control · branching strategy
ssh [INSTALLED] ██████████ Key-based auth · Bastion host · tunnels
nodejs [INSTALLED] ████████░░ REST APIs · PM2 process management
total 5 projects
drwxr-xr-x kishan staff cloud-drive/ ← 3-tier AWS architecture (VPC · ALB · EC2 · RDS · S3)
drwxr-xr-x kishan staff cloudnest/ ← containerised file storage (Docker · Flask · Nginx)
drwxr-xr-x kishan staff aws-2tier-lab/ ← break/fix learning lab (Multi-AZ · Bastion · NAT)
drwxr-xr-x kishan staff terraform-ec2/ ← infrastructure as code (Terraform · EC2 · IaC)
drwxr-xr-x kishan staff cicd-pipeline/ ← github actions automation (CI/CD · Vercel · YAML)
What it does: A fully private, production-grade file storage platform on AWS. Users upload files via browser — files land in a private S3 bucket (never publicly accessible), metadata sits in a private RDS MySQL database, and all traffic enters through CloudFront + ALB before reaching a private EC2 instance. Zero direct internet exposure to any backend resource.
╔══════════════════════════════════════════════════════════════════════╗
║ 3-TIER ARCHITECTURE · Mar 2026 – Present ║
╠══════════════════════════════════════════════════════════════════════╣
║ ║
║ [ Internet ] ║
║ │ HTTPS :443 ║
║ ▼ ║
║ [ CloudFront CDN ] ←── global edge caching + HTTPS ║
║ │ └── origin: S3 frontend bucket ║
║ ▼ ║
║ [ Application Load Balancer ] ←── public subnet (entry point) ║
║ │ HTTP :80 / HTTPS :443 (round-robin) ║
║ ▼ ║
║ [ EC2 t3.micro — Node.js API ] ←── PRIVATE subnet ║
║ │ managed by PM2 · no direct internet exposure ║
║ │ ║
║ ├──▶ [ S3 Private Bucket ] ←── file storage ║
║ │ └── pre-signed URLs (time-limited access) ║
║ │ └── accessed via VPC Endpoint (no internet) ║
║ │ ║
║ └──▶ [ RDS MySQL ] ←── PRIVATE DB subnet ║
║ └── accessible from EC2 only (security group rule) ║
║ └── no public access endpoint ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝
# ── Security Group Architecture (layered, least-privilege) ──────────
Internet ──:443──▶ ALB Security Group
│
:80 ▼
EC2 Security Group (source: ALB SG only)
│
:3306 ▼
RDS Security Group (source: EC2 SG only)
# ── IAM & Networking ─────────────────────────────────────────────────
✓ EC2 IAM Role → S3 access — zero hardcoded credentials
✓ S3 VPC Endpoint → private EC2 → S3 without NAT or internet
✓ S3 frontend bucket → static hosting, CloudFront-only access
✓ S3 private bucket → file storage via pre-signed URLs
✓ RDS MySQL → private DB subnet, no public endpoint
✓ Custom VPC → public + private subnets, IGW, route tables
Stack: AWS VPC EC2 S3 ×2 CloudFront RDS MySQL ALB IAM VPC Endpoint Node.js PM2
What it does: A self-hosted file storage web app — upload, browse, and download files through a browser UI. Built with a multi-container Docker setup: Nginx handles all incoming traffic, Flask handles application logic, and a named Docker volume provides persistent storage across container restarts. Runs on any machine with Docker — no cloud account needed.
# ── docker-compose.yml ───────────────────────────────────────────────
version: "3.9"
services:
nginx:
image: nginx:alpine
ports: ["80:80"] # ← public entry point
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on: [flask] # ← waits for app to be ready
flask:
build: ./app
volumes:
- uploads:/app/uploads # ← persistent file storage
expose: ["5000"] # ← internal only, not public
volumes:
uploads: # ← named volume, survives restarts# ── Container Architecture ───────────────────────────────────────────
[ Browser ]
│ :80
▼
[ nginx container ] ←── reverse proxy + static file serving
│ :5000 (internal)
▼
[ flask container ] ←── upload · gallery · download logic
│
▼
[ uploads volume ] ←── named Docker volume (persists data)
# ── Key Features ─────────────────────────────────────────────────────
✓ Upload files via browser UI
✓ Live image gallery rendered by Flask
✓ Download files on demand
✓ Self-hosted — runs anywhere Docker runs
✓ Single command deploy: docker-compose up --build
✓ Zero cloud costs · zero external dependencies
Stack: Flask Nginx Docker Docker Compose Python Self-hosted
What it does: A 2-tier AWS architecture (ALB → private EC2 ×2 AZs → private RDS) built specifically to be broken and debugged. Intentional misconfigurations — stopped services, corrupted route tables, broken security groups — were introduced then diagnosed and fixed. The goal: build real troubleshooting instincts, not just deploy working infrastructure.
╔══════════════════════════════════════════════════════════════════════╗
║ 2-TIER ARCHITECTURE · Built to Break & Learn ║
╠══════════════════════════════════════════════════════════════════════╣
║ ║
║ [ Internet ] ║
║ │ ║
║ ▼ ║
║ [ Application Load Balancer ] ←── internet-facing, public subnet ║
║ │ round-robin · health checks every 30s ║
║ ├──────────────────────┐ ║
║ ▼ ▼ ║
║ [ EC2 Web Server 1 ] [ EC2 Web Server 2 ] ←── PRIVATE subnets ║
║ AZ-a (private) AZ-b (private) 2 AZs ║
║ │ │ ║
║ └──────────┬───────────┘ ║
║ ▼ ║
║ [ RDS MySQL ] ←── PRIVATE DB subnet ║
║ no public access · EC2-only via VPC ║
║ ║
║ [ Bastion Host ] ←── public subnet · SSH agent forwarding ║
║ [ NAT Gateway ] ←── outbound internet for private instances ║
║ ║
╚══════════════════════════════════════════════════════════════════════╝
# ── What I broke · What I learned ───────────────────────────────────
EXPERIMENT 1 — Stopped nginx on Server 1
─────────────────────────────────────────────────────────────────
Observed: ALB health check marked Server 1 unhealthy in 30s
All traffic automatically rerouted to Server 2
Zero user-facing impact
Takeaway: ALB failover is automatic and requires no manual
intervention — health checks are the backbone of HA
EXPERIMENT 2 — NAT Gateway route table misconfiguration
─────────────────────────────────────────────────────────────────
Symptom: Private EC2 instances had no outbound internet
Root cause: private-subnet-2 associated with the WRONG route
table — missing the 0.0.0.0/0 → NAT Gateway rule
Fix: Re-associated subnet-2 with the correct route table
Takeaway: Subnet → route table association is a silent failure
point. Debugging a live misconfiguration teaches more
than building correctly from a tutorial.
# ── What I implemented ───────────────────────────────────────────────
✓ Custom VPC — public + private subnets across 2 AZs
✓ ALB — round-robin + automated health check failover
✓ EC2 in private subnets — zero direct internet exposure
✓ Bastion Host — SSH agent forwarding into private instances
✓ NAT Gateway — outbound internet for private instances
✓ RDS MySQL — private subnet, reachable from EC2 only
✓ 3-layer security groups: ALB → EC2 → RDS (least privilege)
Stack: AWS VPC ALB EC2 RDS MySQL Bastion Host NAT Gateway Security Groups Multi-AZ
What it does: Provisions a complete EC2 web server on AWS using Terraform — key pair, security group, and instance — all from a single
terraform apply. Auser_datascript installs and configures Nginx automatically on first boot. The entire stack is version-controlled and can be destroyed and recreated in under 60 seconds with zero console clicks.
# ── main.tf ──────────────────────────────────────────────────────────
resource "aws_instance" "web_server" {
ami = "ami-0abcdef1234567890" # Ubuntu 22.04 LTS
instance_type = "t2.micro"
key_name = aws_key_pair.deployer.key_name
user_data = file("setup.sh") # automates server config on boot ✓
tags = { Name = "kishan-tf-server" }
}
resource "aws_security_group" "allow_ssh_http" {
ingress { from_port = 22, to_port = 22, protocol = "tcp" } # SSH
ingress { from_port = 80, to_port = 80, protocol = "tcp" } # HTTP
ingress { from_port = 443, to_port = 443, protocol = "tcp" } # HTTPS
egress { from_port = 0, to_port = 0, protocol = "-1" } # all out
}
# ── terraform apply output ───────────────────────────────────────────
Plan: 3 to add, 0 to change, 0 to destroy.
+ aws_key_pair.deployer
+ aws_security_group.allow_ssh_http
+ aws_instance.web_server
Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
Elapsed time: 47s ✓
# ── Why this matters ─────────────────────────────────────────────────
✓ Entire stack version-controlled on GitHub
✓ Destroy + recreate full infrastructure in < 60 seconds
✓ Zero manual AWS console clicks — 100% code-driven
✓ user_data script bootstraps Nginx automatically on bootStack: Terraform AWS EC2 Bash IaC · View repo →
What it does: A complete automated deployment pipeline — every
git pushtomaintriggers a GitHub Actions workflow that installs dependencies, runs tests, and deploys to Vercel production in ~45 seconds. No manual steps, no direct server access — secrets stored in GitHub, never in code.
# ── .github/workflows/deploy.yml ─────────────────────────────────────
name: Deploy to Production
on:
push:
branches: [main] # ← fires on every push to main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test # ← fails fast if tests break
- name: Deploy to Vercel
run: vercel --prod --token=${{ secrets.VERCEL_TOKEN }}
# ← secret stored in GitHub — never in code
# ── Pipeline Flow ─────────────────────────────────────────────────────
#
# git push → main
# │
# ├──▶ checkout → install → test → deploy to Vercel
# │
# production ✓
#
# ✓ End-to-end deployment: ~45 seconds
# ✓ Zero manual intervention required
# ✓ Full DevOps automation workflowStack: GitHub Actions CI/CD Vercel YAML · View repo →
# ┌──────── Active tasks ───────────────────────────────────────────────
# │
# * Terraform — expanding IaC to cover full VPC + multi-tier stacks
# * Docker — containerising existing cloud projects end-to-end
# * AWS Cloud Practitioner — exam prep in progress
# * CloudWatch — adding monitoring + alerting to existing projects
# * Cost optimisation — tagging, billing alerts, right-sizing
# │
# └────────────────────────────────────────────────────────────────────
Authenticating... ████████████████████ 100%
╭──────────────────────────────────────────────────────────────────╮
│ │
│ Connected to: kishan_miskin │
│ Location: Belgaum, India 🇮🇳 │
│ Available: Immediately · Open to relocation · Remote OK │
│ │
│ Roles I'm targeting: │
│ ✓ Junior Cloud Engineer │
│ ✓ Cloud Support Engineer │
│ ✓ DevOps Trainee / Junior DevOps Engineer │
│ ✓ AWS Solutions Architect (Associate — in progress) │
│ │
│ What I bring: │
│ → Real multi-tier AWS builds — not just tutorial projects │
│ → Strong networking fundamentals (VPC · subnets · routing) │
│ → Break/fix mindset — I debug under pressure │
│ → CI/CD, containers, and IaC — the full DevOps loop │
│ │
│ 📎 linkedin.com/in/kishanmiskin │
│ 💻 github.com/Kishan-Miskin │
│ │
│ If you're hiring — let's connect. │
│ │
╰──────────────────────────────────────────────────────────────────╯
