Urgent.News

What's breaking now, across thousands of outlets.

Tech

Foundations of System Design: Learn It the Way I Wish Someone Taught Me

When I first started learning system design, I felt overwhelmed. Load balancers. Caches. Message queues. Replication. Sharding. Distributed systems. There are a lot of terms. And most guides throw them at you like a vocabulary test. But here is the thing: I don't think the best way to learn system design is to memorize diagrams or vocabulary. I prefer starting with something much simpler: Start…

System design is about designing how different parts of a software system should work together as the system grows. When an application has just a few users, simple architectures will suffice. However, as the number of users increases (e.g., 100,000 users), the system becomes more complex. The main goal of system design is not just to ensure the application works, but to ensure it continues to function as traffic, data, and failures increase.

Consider a browser application that needs to display a list of products. The browser sends a request to the server (api.example.com) which is a domain name. The browser must translate this domain name to an IP address using the DNS system - Domain Name System. DNS converts human-readable domain names to network addresses.

When the request reaches the server, the server processes the request. It queries the database for the products. The database returns the data, which is then sent back to the client. This flow is simple when there is only one server, but as a system grows, more components are needed to handle increased traffic and potential failures.

Relational databases are often a good fit for applications with structured data. They organize data into tables with rows and columns. For example, users and products data could be stored in tables like this:

users

id | name | email

---|-------|-------

1 | Noor | noor@example.com

2 | Ali | ali@example.com

products

id | name | price

---|------------|------

1 | Keyboard | 100

2 | Mouse | 50

One major advantage of relational databases is their ability to model relationships between data. For instance, we can create a relationship between users and orders:

users

↓ orders

order_id | user_id

---|---------

1 | 1

2 | 2

Transactions are another important concept in system design. They allow us to group multiple database operations into one logical operation. If any of the operations fail, the whole transaction is rolled back, ensuring data integrity. For example, if a user places an order, we need to create the order and deduct the user's balance. If either of these operations fails, the transaction must be rolled back, ensuring an invalid state never occurs.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

I Wrapped Disney, SeaWorld and Universal's Booking APIs in One Laravel Package

TL;DR: iabduul7/laravel-themepark-booking-adapters gives you drop-in Laravel adapters for Disney and SeaWorld (via Redeam) and Universal Orlando (via SmartOrder).

  • Three design principles guide the iabduul7/laravel-themepark-booking-adapters package
  • Separate support classes for Disney, SeaWorld, and Universal to handle compatibility
  • Prevent sensitive data leakage by excluding adapter reference from serialized DTO

More from Sunday 6 September →