Cloud deployment for absolute beginners

  • I assume you already know basic web development and you want to deploy your application
  • Good command over Linux
  • What is cloud deployment and how does it work?
  • As a beginner, where should I start learning?
  • Which cloud provider to use?
  • What is the difference between Heroku and AWS
  • What is localhost and private networks?
  • NGINX/Apache? What are these?
  • Networking essentials

What do you mean by Cloud Deployment?

  1. Buy a server computer
  2. Get a public IP to expose the server on the internet
  3. Configure the OS to run your stack. For example, if your code is written in Python, install necessary packages (like Flask, Django etc) and configure them properly
  4. Configure a web server to host your application to the internet
  5. Keep your server running 24/7 at any cost. Because if your server is down, your application will be unreachable

Heroku vs AWS

Why DigitalOcean?

  • It’s much cheaper compared to other providers
  • Has a clean and easy-to-use UI
  • Has a lot of documentation written in a beginner-friendly way (most important point)
  • Has few services (for example, no support for automatic load balancing)
  • Has small tier of computing resources, there’s not a lot of options compared to other providers
  • Some advanced networking and access management might not be possible or has to be done manually
  • Availability is not as reliable as GCP or AWS.
  1. How To Set Up a Node.js Application for Production on Ubuntu 18.04
  2. How To Serve Flask Applications with Gunicorn and Nginx on Ubuntu 18.04
  3. How To Deploy a React Application with Nginx on Ubuntu 20.04

Server networking 101

localhost

ports

127.0.0.1:5000
10.220.20.23:5000 // API
10.220.20.23:5001 // Frontend
10.220.20.23:27017 // database

127.0.0.1 vs 0.0.0.0

What are Nginx and Apache?

  • A web server knows how to talk to the internet using HTTP and HTTPS network protocols
  • It can route requests to different services based on the request type (fancy name is Reverse Proxy). You might have the backend API and frontend hosted on the same machine. Nginx/Apache can redirect API/backend requests to API service and frontend requests to frontend service
  • Helps you set up domain names
  • Creating different rules for different URLs. For example, you might want to redirect users from ‘oldsite.com’ to ‘newsite.com’.
  • Caching
  • SSL
  1. nginx receives the incoming request from the internet
  2. Based on the Nginx config it can decide if this request needs to be passed to Gunicorn/uWSGI
  3. Gunicorn passes the request to the Python application
  4. The application sends back the result to Gunicorn after processing
  5. Gunicorn sends back the result to Nginx
  6. nginx replies to the user with the response

Where to go from here?

  • Learn shell scripting. It’s the most underrated tool for an Engineer working in the technical or IT sector. Whenever you want to automate something or add custom behavior you have to do shell scripting in Linux. Start learning from a crash course here.
  • Learn Docker. It’s the most used deployment tool no matter where you go. For this, you can follow Docker Mastery course in Udemy.
  • Learn Jenkins. You can use CI/CD Jenkins course from Udemy.
  • If you’re really serious about DevOps and want to pursue your career in this role, you should also learn Kubernetes

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Ahmed Sadman Muhib

Ahmed Sadman Muhib

I’m a Software Engineer interested in Web, Cloud and Cross-platform technologies. Favorite things of mine are reading, watching movies and eating burgers