systems design

Building complex solutions

Systems design is the process of defining the architecture, components, and interfaces of a complex system to satisfy specified requirements.

In software engineering, it addresses how different parts of an application will work together: The systems design interview asked me to design a URL shortener at scale.

The field encompasses both high-level architectural decisions and detailed specifications for databases, APIs, and infrastructure.

architecture

scalability

Capacity for growth

layering · microservices · monolith · distributed · client-server · event-driven · service-oriented · hexagonal · load balancing · caching

process

requirements

Necessary conditions for something

mockup · diagramming · flowchart · whiteboarding · tradeoffs · constraints · iteration · documentation · review · stakeholder

integration

API

Software communication standard

  • RESTWeb service design paradigm
  • webhookEvent-triggered HTTP notification
  • middlewareInter-application bridging software

interoperability · protocol · serialization · JSON · XML · gRPC · synchronous · asynchronous · polling · streaming

optimization

performance

Carrying out a task

caching · indexing · profiling · benchmarking · load testing · stress testing · capacity planning · resource allocation · efficiency · response time

infrastructure

servers

Machines providing network resources

  • databasesOrganized electronic information collections
  • networkingBuilding professional relationships
  • cloudAtmospheric water vapor mass

containerization · orchestration · virtualization · datacenter · storage · DNS · load balancer · firewall · SSL · authentication

reliability

redundancy

Needless duplication

replication · monitoring · alerting · graceful degradation · circuit breaker · consistency · availability · disaster recovery · uptime · rollback

Categories
Opposites
abstraction level

systems designimplementation

Putting plans into effect

coding · execution · programming · deployment · maintenance

scope

systems designdetail work

Meticulous small-scale labor

micro-optimization

approach

systems designorganic growth

Growth arising internally, gradually

spaghetti code · improvisation · trial and error · hacking

Family

design, system, designer, designing, redesign, systems, systematic, ecosystem, designers

Familiarity
Top 500,000
Profile
Used worldwide · Timeless · Abstract · Rated G