Welcome to the Cloudshalla Engineering Blog! We break down the real, unfiltered truths of DevOps, Cloud, and Platform Engineering fresh from the production trenches. If you are serious about stepping up your career, you are in exactly the right place.

Which AWS Service Should a Beginner Use?

Cloud Engineering Architecture

This is the most common confusion point. Here's my simple decision tree: EC2 for full control and learning. Elastic Beanstalk for managed deployments with less config. ECS/Fargate for containers. For a first-time deployment, I recommend EC2 — you learn the most, and it's what most real companies use for basic workloads.

Step 1: Launch an EC2 Instance (Free Tier)

# AWS Console → EC2 → Launch Instance
# Settings:
AMI: Ubuntu 24.04 LTS
Instance type: t2.micro (free tier)
Key pair: Create new → download .pem file
Security group: Add rules:
  - SSH (22) from your IP
  - HTTP (80) from 0.0.0.0/0
  - HTTPS (443) from 0.0.0.0/0
Storage: 8GB gp3 (free tier)

Step 2: Connect and Set Up Your Server

# On your local machine
chmod 400 your-key.pem
ssh -i your-key.pem ubuntu@YOUR_EC2_PUBLIC_IP

# On the server
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io nginx git

# Start Docker
sudo systemctl enable docker
sudo usermod -aG docker ubuntu
# Log out and back in for group change

# Start Nginx
sudo systemctl enable nginx
sudo systemctl start nginx

Step 3: Deploy Your App with Docker

# Pull and run your Dockerized app
docker pull yourusername/yourapp:latest

docker run -d \
  --name myapp \
  -p 3000:3000 \
  --restart unless-stopped \
  -e NODE_ENV=production \
  -e DATABASE_URL="your_db_url" \
  yourusername/yourapp:latest

# Check it's running
docker ps
docker logs myapp

Step 4: Configure Nginx as Reverse Proxy

sudo nano /etc/nginx/sites-available/myapp

# Paste this config:
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_cache_bypass $http_upgrade;
    }
}

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Step 5: SSL Certificate (Free, via Let's Encrypt)

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
# Follow the prompts — certbot auto-configures Nginx for HTTPS
sudo certbot renew --dry-run  # Test auto-renewal

You now have a live, SSL-secured app deployed on AWS. Cost: ₹0 for 12 months on free tier.

💡 Quick Answer: To deploy your first app on AWS: Launch a t2.micro EC2 instance (free tier), SSH in, install Docker and Nginx, run your Docker container on port 3000, configure Nginx as a reverse proxy on port 80, and add SSL with Let's Encrypt. Total time: 15–20 minutes.

Ready to stop learning theory and start building real projects? Join the Cloudshalla masterclasses to get 1-on-1 mentorship, break into top-tier DevOps roles, and master cloud automation today.