DEV Community

Nikolai Ashanin
Nikolai Ashanin

Posted on

System Design Cheat Sheet

You can use it for interviews or assessments, pre-sales, or estimations.

1. Understand Problem and Scope

  • Recognize stakeholders and prioritize them. Create a RACI matrix
  • Understand business drivers of the project
  • Recognize end-users of the project and understand how they use that system
  • Check functional requirements
  • Define external dependencies
  • Suggest additional features
  • Remove items that interviewer considers out of scope

2. Think about constraints and non-functional requirements(use PASSME (performance/availability/security/scalability/maintainability/extensibility) if you do not remember all of NFRs)

  • Recognize the number of users
  • Estimate users growth rate (for the next year/next five years)
  • Define average response time
  • Understand database size (current / for the next year/ for the next five years)
  • Understand storage size (current / for the next year/ for the next five years)
  • Recognize security needs
  • Define acceptable downtime of the system
  • Recognize the number of requests (per month/per second)
  • Estimate reads vs. writes operations percentage
  • Define time to market
  • Check customer related NFR: legacy/proprietary soft, etc

3. Detect Architecture Significant Requirements

  • Mix between FRs and NFRs to detect ASRs

4. Abstract Design

  • Choose which architectural views to define based on the stakeholders’ matrix. Use common C4/4+1/etc otherwise
  • Choose Architecture Style (Monolith, SOA — microservices, layered architecture, etc.)
  • Choose between cloud solution or on-premise servers
  • Consider authentication/authorization and privacy
  • Suggest security rules and protocols
  • Define infrastructure: load balancing, messaging
  • Make a rough overview of any critical algorithm that drives the service
  • Consider bottlenecks and determine solutions
  • Choose storage type (SQL or NoSQL)
  • Understand what data should be cached and how to improve performance/security/availability with caching
  • Choose monitoring system and logging. Analytics and automatically reboot the system in case of exceptions
  • Define separation between public and restricted areas

You can find text version here https://github.com/NikAshanin/Software-Architect-Cheat-Sheet/blob/master/README.md

Top comments (0)