System Design Roadmap: 17 Core Concepts Every Architect Must Know

Don't start coding without a 30,000-foot view. This comprehensive guide breaks down the essential pillars of system design, from Consistency Models and Polyglot Persistence to Cost Optimization and Scaling Strategies. A must-read checklist for building robust software.

Oct 23, 2025 - 19:26
 0  2
System Design Roadmap: 17 Core Concepts Every Architect Must Know

I had this article in my head for two years but hesitated to write it, worrying about the ever-changing technology landscape. Tools evolve, but core concepts remain. This is a documentation of the fundamental pillars of system design. We can always fine-tune the specifics based on infrastructure and requirements, but the foundation must be solid.

System design is an essential part of software development. You must have a 30,000 ft view before digging into specifics. General-purpose programming languages can be used everywhere, but knowing where and how to use them is where system design comes into the picture.

Here are the 17 important steps and concepts necessary for architecting a robust system.

1. UX Design & Components

Since you will most likely not be developing a CLI-only tool, having a solid UX/UI strategy is crucial. Identify the core components early. For example:

  • Twitter Clone: Tweet drafter, user profiles, feed, privacy settings.
  • Uber Clone: Maps integration, location tracking.
  • Messenger: P2P messaging, group chats, media sharing.

Categorize the app design based on its domain (Social, OTT, Booking, etc.).


                    ╔═════════════════════════════════════╗
                    ║  TWITTER CLONE UI COMPONENTS        ║
                    ╠═════════════════════════════════════╣
                    │        APPLICATION UI               │
                    ├─────────────────────────────────────┤
                    │  ┌──────────┐  ┌──────────┐         │
                    │  │ Profile  │  │  Tweet   │         │
                    │  │Component │  │Component │         │
                    │  └──────────┘  └──────────┘         │
                    │  ┌──────────┐  ┌──────────┐         │
                    │  │ Settings │  │ Messages │         │
                    │  │Component │  │Component │         │
                    │  └──────────┘  └──────────┘         │
                    └─────────────────────────────────────┘

2. Classes/Subclasses

For object-oriented design, list the various classes required. This helps chalk out objects and define methods. For a Twitter clone, you might have a "User" class.


                    ╔═════════════════════════════════════╗
                    ║   OBJECT-ORIENTED CLASS DESIGN      ║
                    ╚═════════════════════════════════════╝

                            ┌─────────────────┐
                            │      User       │
                            ├─────────────────┤
                            │ - name          │
                            │ - location      │
                            │ - email         │
                            ├─────────────────┤
                            │ + post()        │
                            │ + follow()      │
                            └────────┬────────┘
                                     │
                            ┌────────┴────────┐
                            │                 │
                        ┌───▼────┐      ┌─────▼───┐
                        │Premium │      │  Basic  │
                        │  User  │      │  User   │
                        └────────┘      └─────────┘

3. Design Patterns

Select an adequate design pattern. For a news feed or notification system, the Publisher-Subscriber pattern is often the standard choice.


                    ╔═════════════════════════════════════╗
                    ║  PUBLISHER-SUBSCRIBER PATTERN       ║
                    ╚═════════════════════════════════════╝

                            ┌──────────────┐
                            │  Publisher   │
                            │ (News Feed)  │
                            └──────┬───────┘
                                   │
                                   │ publish()
                                   │
                               ┌───▼────────────────┐
                               │  Message Broker    │
                               └───┬────────────────┘
                                   │
                                   │ notify()
                                   │
                               ┌───┴───┬───────┬────────┐
                               │       │       │        │
                            ┌──▼──┐ ┌──▼──┐ ┌──▼──┐ ┌───▼─┐
                            │Sub1 │ │Sub2 │ │Sub3 │ │Sub4 │
                            └─────┘ └─────┘ └─────┘ └─────┘

4. Infrastructure Stack (CDN/Serverless/API/Cache)

  • CDN: Host static HTML/Assets with lower latency.
  • Serverless: Reduce costs for simple automation or cron jobs.
  • APIs: Connect disconnected systems and enable separation of concerns.
  • Cache: Store temporary hot data. Note: Cache memory is expensive, so use an optimized strategy.

                    ╔═════════════════════════════════════╗
                    ║  CDN/SERVERLESS/API/CACHE STACK     ║
                    ╚═════════════════════════════════════╝

                                ┌─────────┐
                                │  Client │
                                └────┬────┘
                                     │
                                     ▼
                            ┌─────────────┐    ┌──────────┐
                            │     CDN     │◄───│  Static  │
                            │  (Static)   │    │ Content  │
                            └────┬────────┘    └──────────┘
                                 │
                                 ▼
                            ┌─────────────┐    ┌──────────┐
                            │    Cache    │◄───│   Hot    │
                            │             │    │   Data   │
                            └────┬────────┘    └──────────┘
                                 │
                                 ▼
                            ┌─────────────┐    ┌──────────┐
                            │     API     │◄───│Serverless│
                            │   Gateway   │    │Functions │
                            └────┬────────┘    └──────────┘
                                 │
                                 ▼
                            ┌─────────────┐
                            │   Backend   │
                            │   Server    │
                            └─────────────┘

5. Eventual Consistency vs. Transactional Consistency

  • Eventual Consistency (NoSQL): Expect some delay. Suitable for social feeds or non-critical data where a 2-3 second delay is acceptable.
  • Transactional Consistency (SQL): Immediate commit. Critical for financial transactions (e.g., money transfer) to prevent double-spending.

                  ╔═════════════════════════════════════════════════════════════╗
                  ║  EVENTUAL vs TRANSACTIONAL CONSISTENCY                      ║
                  ╚═════════════════════════════════════════════════════════════╝
   
                  EVENTUAL CONSISTENCY          TRANSACTIONAL CONSISTENCY
                  ┌──────────────────┐          ┌──────────────────┐
                  │  Write Request   │          │  Write Request   │
                  └────────┬─────────┘          └────────┬─────────┘
                           │                              │
                           ▼                              ▼
                      ┌─────────┐                    ┌─────────┐
                      │  NoSQL  │                    │   SQL   │
                      │   DB    │                    │   DB    │
                      └────┬────┘                    └────┬────┘
                           │                              │
                      ┌────▼────┐                    ┌────▼────┐
                      │ Delay   │                    │Immediate│
                      │ 2-3 sec │                    │ Commit  │
                      └────┬────┘                    └────┬────┘
                           │                              │
                           ▼                              ▼
                      [Eventually                    [Immediately
                       Consistent]                    Consistent]

6. Event Handling

Clearly define the routes data packets will take from request initiation to response fulfillment.


                    ╔═════════════════════════════════════╗
                    ║        EVENT HANDLING FLOW          ║
                    ╚═════════════════════════════════════╝

                    ┌──────────┐    Event      ┌──────────┐
                    │Component │─────────────►│  Event   │
                    │    A     │    Fired     │  Queue   │
                    └──────────┘              └─────┬────┘
                                                    │
                                              ┌─────▼─────┐
                                              │  Handler  │
                                              └─────┬─────┘
                                                    │
                                              ┌───────────┼───────────┐
                                              │           │           │
                                          ┌───▼───┐   ┌───▼───┐   ┌───▼───┐
                                          │Comp B │   │Comp C │   │Comp D │
                                          └───────┘   └───────┘   └───────┘

7. SQL / NoSQL / Polyglot Persistence

According to the CAP theorem, in a distributed system with partitions, you must choose between Consistency and Availability.

  • SQL: Structured data, ACID compliant. Prioritizes Consistency (CP).
  • NoSQL: Semi-structured data (Key-value, Document, Graph). Prioritizes Availability (AP).
  • Polyglot Persistence: Using a combination of both to suit different data needs.

                    ╔═════════════════════════════════════╗
                    ║  SQL/NoSQL/POLYGLOT PERSISTENCE     ║
                    ╚═════════════════════════════════════╝

                    ┌─────────────────────────────────────┐
                    │        Application Layer            │
                    └──────────────┬──────────────────────┘
                                   │
                           ┌───────┴────────┐
                           │                │
                    ┌──────▼──────┐    ┌─────▼────────────┐
                    │     SQL     │    │      NoSQL       │
                    │  Database   │    │     Database     │
                    ├─────────────┤    ├──────────────────┤
                    │ - ACID      │    │ - Key-Value      │
                    │ - Structured│    │ - Document       │
                    │ - CA (CP)   │    │ - Graph          │
                    │             │    │ - AP             │
                    └─────────────┘    └──────────────────┘
                           └────────┬────────┘
                                    │
                             POLYGLOT PERSISTENCE

8. Client-Side vs. Server-Side Storage

Define where data lives. WhatsApp stores messages locally; Facebook Messenger stores them on servers. Decide this early.


              ╔═══════════════════════════════════════════════════╗
              ║       CLIENT-SIDE vs SERVER-SIDE STORAGE          ║
              ╚═══════════════════════════════════════════════════╝

              CLIENT-SIDE                   SERVER-SIDE
              ┌──────────────┐             ┌──────────────┐
              │   Mobile     │             │   Server     │
              │   Device     │             │   Cluster    │
              ├──────────────┤             ├──────────────┤
              │ ┌──────────┐ │             │ ┌──────────┐ │
              │ │ WhatsApp │ │             │ │ Facebook │ │
              │ │ Messages │ │             │ │Messenger │ │
              │ │  (Local) │ │             │ │ Messages │ │
              │ └──────────┘ │             │ └──────────┘ │
              │              │             │              │
              │ + Optional   │             │ + Backup     │
              │   Cloud      │             │ + Sync       │
              │   Backup     │             │ + Access     │
              └──────────────┘             └──────────────┘

9. Optimized Data Structures

Every line of code taxes the server. Use data structures with lower time and space complexities to reduce maintenance costs and improve performance.


                    ╔═════════════════════════════════════╗
                    ║    OPTIMIZED DATA STRUCTURES        ║
                    ╚═════════════════════════════════════╝

                        Data Structure Complexity

                        O(1)  ─────────  Best (Hash Table)
                        O(log n) ──────  Good (Binary Tree)
                        O(n)  ─────────  Acceptable (Array)
                        O(n²) ─────────  Poor (Nested Loops)
                        O(2ⁿ) ─────────  Worst (Exponential)

                        ┌─────────────────────────────┐
                        │  Choose Lower Complexity    │
                        │  = Less Server Tax          │
                        │  = Lower Costs              │
                        └─────────────────────────────┘

10. Privacy Settings

Users must have control. Implement features like hiding profile photos, read receipts, last seen status, and blocking capabilities.


          +-----------------------------------------+
          |            PRIVACY SETTINGS             |
          +-----------------------------------------+

          +-----------------------------------------+
          |           User Privacy Panel            |
          +-----------------------------------------+
          | [ ] Show Profile Photo                  |
          | [X] Hide Last Seen                      |
          | [X] Hide Read Receipts                  |
          | [ ] Show Online Status                  |
          | [X] Block User                          |
          |                                         |
          |             [Save Settings]             |
          +-----------------------------------------+

11. Compliance

  • HIPAA: Required for applications handling Protected Health Information (PHI).
  • GDPR: Required for applications launching in the EU.

                    ╔═════════════════════════════════════╗
                    ║       COMPLIANCE REQUIREMENTS       ║
                    ╚═════════════════════════════════════╝

                    ┌──────────────────────────────────┐
                    │        Your Application          │
                    └────────────┬─────────────────────┘
                                 │
                          ┌──────┴──────┐
                          │             │
                    ┌─────▼─────┐  ┌────▼──────┐
                    │   HIPAA   │  │   GDPR    │
                    │Compliance │  │Compliance │
                    ├───────────┤  ├───────────┤
                    │ Medical   │  │    EU     │
                    │   PHI     │  │  Privacy  │
                    │ Protected │  │   Rules   │
                    └───────────┘  └───────────┘

12. Security Layers

Consider a multi-layered security approach:

  • Layer 1: Strong Password Policies
  • Layer 2: Spam Filtering
  • Layer 3: DDoS Protection
  • Layer 4: IAM & Access Control
  • Layer 5: 2FA Authentication

13. Geographic Availability

Ensure your dependencies are available in the target region. For example, relying on Google/Facebook APIs for an app launching in China will cause failure.


          +---------------------------------------+
          |  GEOGRAPHICAL SERVICE AVAILABILITY    |
          +---------------------------------------+

                      GLOBAL SERVICE MAP

              +--------------+    +--------------+
              |      USA     |    |     China    |
              +--------------+    +--------------+
              | [+] Facebook |    | [-] Facebook |
              | [+] Google   |    | [-] Google   |
              | [+] AWS      |    | [+] Alibaba  |
              | [+] WhatsApp |    | [+] WeChat   |
              +--------------+    +--------------+

          Check Service Availability Before Launch!

14. Cost Analysis

Balance cost vs. performance. Prioritize open-source over proprietary when possible. Use serverless for sporadic workloads.


                    ╔═════════════════════════════════════╗
                    ║        COST OPTIMIZATION            ║
                    ╚═════════════════════════════════════╝

                    ┌────────────────────────────────────┐
                    │       Cost Optimization            │
                    ├────────────────────────────────────┤
                    │                                    │
                    │  Open Source     >>>  Proprietary  │
                    │  (Lower Cost)        (Higher Cost) │
                    │                                    │
                    │  Serverless     >>>  Always-On     │
                    │  (Pay per use)       (Fixed Cost)  │
                    │                                    │
                    │  Cache          >>>  DB Query      │
                    │  (Expensive)         (Cheaper)     │
                    │                                    │
                    └────────────────────────────────────┘
                          Balance Cost vs Performance

15. Deployment (On-Prem/Cloud/Hybrid)

Decide on the infrastructure model. Will you use a VPC? Will you keep sensitive data on-premise while bursting compute to the cloud (Hybrid)?


                    ╔═════════════════════════════════════╗
                    ║      DEPLOYMENT OPTIONS             ║
                    ╚═════════════════════════════════════╝

                    ┌──────────────────────────────────────┐
                    │        Deployment Options            │
                    └───────────┬──────────────────────────┘
                                │
                        ┌───────┼───────┐
                        │       │       │
                    ┌───▼───┐ ┌─▼────┐ ┌▼──────┐
                    │On-Prem│ │Cloud │ │Hybrid │
                    ├───────┤ ├──────┤ ├───────┤
                    │Local  │ │ AWS  │ │On-Prem│
                    │Servers│ │Azure │ │  +    │
                    │ Data  │ │ GCP  │ │ Cloud │
                    │Center │ │      │ │  Mix  │
                    └───────┘ └──────┘ └───────┘
                                │
                            ┌───▼────┐
                            │  VPC   │
                            └────────┘

16. Horizontal vs. Vertical Scaling

  • Horizontal Scaling: Adding more replicas/instances. Requires Load Balancers. Preferred for high availability.
  • Vertical Scaling: Increasing CPU/RAM of a single instance. Has physical limits.

          +-------------------------------------------------------------+
          |      HORIZONTAL & VERTICAL SCALING WITH LOAD BALANCERS      |
          +-------------------------------------------------------------+

                  HORIZONTAL SCALING                  VERTICAL SCALING

                  +---------------+                   +---------------+
                  | Load Balancer |                   |    Upgrade    |
                  +-------+-------+                   |   CPU + RAM   |
                          |                           +-------+-------+
                          |                                   |
            +-------------+-------------+                     |
            |             |             |                     |
            v             v             v (and v)             v
          +---+         +---+         +---+         +---------------+
          |DB1|         |DB2|         |DB3|...      |    Powerful   |
          +---+         +---+         +---+         |     Server    |
                                                    +---------------+
                    Add more servers                 Improve single server

17. Customer Acquisition & Analytics

Build analytics into the design. Use Funnel Analytics and A/B Testing to understand user behavior and improve retention.


                    ╔═════════════════════════════════════╗
                    ║  CUSTOMER ACQUISITION & RETENTION   ║
                    ╚═════════════════════════════════════╝

                    ┌─────────────────────────────────────┐
                    │         Analytics Funnel            │
                    ├─────────────────────────────────────┤
                    │                                     │
                    │   1000 Users  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓    │
                    │                 │                   │
                    │    500 Signups ▓▓▓▓▓▓▓▓▓            │
                    │                 │                   │
                    │    200 Active  ▓▓▓▓                 │
                    │                 │                   │
                    │    100 Paid    ▓▓                   │
                    │                                     │
                    ├─────────────────────────────────────┤
                    │         A/B Testing                 │
                    │   ┌─────────┐    ┌─────────┐        │
                    │   │Version A│    │Version B│        │
                    │   │  50%    │    │  50%    │        │
                    │   └────┬────┘    └─────┬───┘        │
                    │        └──────┬────────┘            │
                    │             Compare                 │
                    └─────────────────────────────────────┘

This framework is a solid foundation for designing scalable software and can also serve as a guide for clearing system design interviews.

If you have any questions, feel free to connect on LinkedIn.

What's Your Reaction?

Like Like 0
Dislike Dislike 0
Love Love 0
Funny Funny 0
Angry Angry 0
Sad Sad 0
Wow Wow 0
trants I'm a Fullstack Software Developer focusing on Go and React.js. Current work concentrates on designing scalable services, reliable infrastructure, and user-facing experiences.