Skip to main content

Command Palette

Search for a command to run...

The DevOps & System Design Cheat Sheet: DNS, SQL vs NoSQL, and Queues

Published
6 min read
The DevOps & System Design Cheat Sheet: DNS, SQL vs NoSQL, and Queues
R

As an experienced DevOps Engineer with expertise in both Azure and AWS, I am dedicated to enabling efficient and secure software development and deployment using cloud technologies.

My expertise in Azure Services, including Compute Services, App Services, Front Door, DNS, Storage, and DBaaS, has enabled me to design and implement robust and scalable cloud infrastructure to support software development teams. I am skilled in automating infrastructure provisioning, deploying applications to the cloud, and optimizing cloud resources for cost-effectiveness

• Experience in Identity and Access Management, networking, storage, and compute infrastructure (servers, databases, firewalls, load balancers) for Implementing/maintaining cloud solutions in virtualized environments. • Experience in advanced areas of networking, including Linux, software-defined networking, network virtualization, open protocols, application acceleration, load balancing, DNS, virtual private networks • Experience with application development concepts and technologies (e.g., CI/CD, Jenkins, Docker) • Good expertise in core services: VPC, EC2, IAM, CloudWatch, RDS, Azure Web App, and Azure Kubernetes Service. • Application & Production Infrastructure Support • Monitoring & Operations - Alerting

While working on real DevOps projects, I realized one thing:

✅ Deploying an app is not only about commands…
✅ It’s about understanding what happens behind the scenes

So today I revised and wrote short notes on these important concepts:

  • HTTP status codes (1xx to 5xx)

  • DNS record types

  • 3-tier architecture (Frontend → Backend → Database)

  • SQL vs NoSQL

  • Polyglot persistence (multiple databases in one system)

  • Queues (why they are used in system design)

This post is written in a simple beginner-friendly way, but with real-world understanding.

👋 If you found this article helpful and want to follow my DevOps + System Design learning journey*,
connect with me on LinkedIn 👉 [**Ramu Chelloju*](https://www.linkedin.com/in/ramuchelloju/)

3-Tier Architecture (Frontend → Backend → Database)

Most real applications follow 3-tier architecture:

1) Frontend (UI Layer)

  • Runs in browser

  • React / Angular / HTML CSS JS

  • Communicates via APIs

2) Backend (Application Layer)

  • Implements business logic

  • REST APIs

  • Authentication, validation, processing

3) Database (Data Layer)

Stores data.

Common DB options:

  • MySQL/PostgreSQL (SQL)

  • MongoDB/DynamoDB (NoSQL)

  • Redis (Caching / sessions)

  • RabbitMQ/Kafka (Queue / streaming)

This separation makes the system scalable and manageable.


SQL vs NoSQL (Simple Comparison)

There is no “best database”.
We choose based on requirement.


SQL Databases (Relational)

Examples:

  • MySQL

  • PostgreSQL

  • Oracle

  • MS SQL

Features:

✅ Fixed schema (tables, rows, columns)
✅ Strong consistency (ACID)
✅ Best for relational data
✅ Excellent for transactions and banking

Example use case:

  • Orders

  • Payments

  • Billing

  • User accounts


NoSQL Databases

Examples:

  • MongoDB

  • DynamoDB

  • Cassandra

  • Redis

Features:

✅ Flexible schema (JSON documents / key-value)
✅ Easy to scale horizontally
✅ Faster for certain workloads
✅ Best for unstructured or semi-structured data

Example use case:

  • product catalogs

  • activity logs

  • recommendations

  • caching


Polyglot Persistence (Modern System Design Concept)

In modern systems, we don’t use only one database.

Instead we use multiple databases in one application based on needs.

Example architecture:

MySQL → core transactional data (users, billing)
Redis → caching + sessions
MongoDB/DynamoDB → product catalog or logs
Elasticsearch → searching and analytics

This approach is called:

✅ Polyglot Persistence

Meaning:

Using multiple data storage technologies within a single application.


Why Queues Matter (Queue = Decoupling)

A queue is like a buffer that holds messages until they are processed.

Without Queue (Tightly Coupled)

Service A calls Service B directly using REST.

Problem:
If Service B is down → Service A fails → user gets 500 error


With Queue (Loosely Coupled)

Service A sends message to queue (SQS / RabbitMQ)
Service B will process later when it is available.

✅ Even if Service B is down, messages remain safe
✅ Service B can come back later and process
✅ This improves reliability and scalability

Examples of queues:

  • AWS SQS

  • RabbitMQ

  • Kafka (event streaming)

This is one of the most important system design fundamentals.

✅ Quick DevOps Troubleshooting Commands (Backend Check)

When your backend service is not responding, these are super useful:

Check service status

systemctl status <service-name>

Check which process is running (example Node.js)

ps -ef | grep node

Check which port is listening

netstat -lntp

Check application health endpoint

curl http://localhost:8080/health

In real deployments, these 4 commands are enough to debug many issues quickly.


✅ HTTP Status Codes (Most Important for DevOps + APIs)

When we call an API, we receive an HTTP response code.
Understanding these codes helps you debug issues faster.


1xx — Informational

These responses mean: “Request received, continuing…”

Example:

  • 100 Continue → server says “you can continue sending request body”

Not used very often in day-to-day DevOps debugging, but good to know.


✅ 2xx — Success

These mean the request succeeded.

Common 2xx codes:

200 OK

✅ Request succeeded

Example:

  • GET request returns data

  • Health API returns status

201 Created

✅ Resource created successfully

Example:

  • POST request created a new expense record

204 No Content

✅ Request succeeded, but server returns no content

Example:

  • DELETE success but no response body returned

✅ 3xx — Redirection

These mean the resource is available, but at a different location.

301 Moved Permanently

✅ Permanent redirection
Example: HTTP → HTTPS

302 Found (Temporary Redirect)

✅ Temporary redirection
Example: short time redirect to another URL

304 Not Modified

✅ Resource not changed (browser uses cache)

This is why sometimes changes don’t reflect immediately due to caching.


✅ 4xx — Client Side Errors

These happen due to wrong request from client (frontend/Postman/user).

400 Bad Request

Client request is wrong
Example:

  • invalid JSON

  • missing required field

401 Unauthorized

Authentication failed / token missing
Example:

  • no login token provided

403 Forbidden

User is authenticated but has no permission
Example:

  • you are logged in but not allowed to access

404 Not Found

Resource/API endpoint not found
Example:

  • wrong API path /api/transacton instead of /api/transaction

✅ 5xx — Server Side Errors

These happen due to issues in server/backend/database.

500 Internal Server Error

Backend crashed or unhandled error occurred.

Common reasons:

  • Node.js exception

  • DB connection failure

  • wrong environment variables

503 Service Unavailable

Service is down / overloaded.

Example:

  • backend is stopped

  • load balancer returns 503


✅ DNS Record Types (Most Common and Practical)

DNS controls how domain names map to services.

NS Record — Name Server

NS tells who manages your domain DNS.

Example:

  • Route53 gives NS records

  • You update them at domain registrar

SOA — Start of Authority

Contains domain zone info like:

  • primary nameserver

  • admin email

  • serial number

Mostly maintained automatically.

A Record — IPv4 address mapping

Maps domain → IPv4 address

Example:

learndev.in → 3.110.xx.xx

AAAA Record — IPv6 mapping

Same as A record but for IPv6.

MX Record — Mail exchange

Used for email routing.

Example:

  • Gmail setup

  • Zoho mail setup

TXT Record

Used for verification and security.

Examples:

  • domain ownership verification

  • SPF / DKIM records for email security

CNAME Record — Alias

Maps one name to another name.

Example:

blog.learndev.in → hashnode-host-domain

What I’m Going to Do Next (My Learning Plan)

From today onwards, I’m going to start System Design concepts from the beginning and write blogs in a simple easy-to-understand way.

Upcoming topics:

  • Load balancer

  • Caching

  • Database indexing

  • Rate limiting

  • CDN

  • Queue vs Stream

  • Microservices basics

  • Scalability concepts


🙌 Subscribe / Follow for More

If you are also learning DevOps + System Design and want beginner-friendly explanations with real examples, please subscribe and follow my blog 🚀

✅ I’ll be posting regularly as I learn and build.