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.
Capacity for growth
- modularityDivisibility into independent units
- abstractionDistilling to essential qualities
- decouplingRemoval of interdependence
- layeringForming successive strata
microservices · monolith · distributed · client-server · event-driven · service-oriented · hexagonal · load balancing
Necessary conditions for something
- specificationsStated requirements and parameters
- prototypingMaking preliminary models
- wireframeEdge-only geometric model
- mockupPreliminary design representation
diagramming · flowchart · whiteboarding · tradeoffs · constraints · iteration · documentation · review
Software communication standard
- RESTWeb service design paradigm
- webhookEvent-triggered HTTP notification
- middlewareInter-application bridging software
- interoperabilityCross-platform functional harmony
protocol · serialization · JSON · XML · gRPC · synchronous · asynchronous · polling
Carrying out a task
- throughputProcessing rate over time
- latencyDelay in system response
- bottleneckConstriction limiting throughput
- cachingTemporary local storage
indexing · profiling · benchmarking · load testing · stress testing · capacity planning · resource allocation · efficiency
Machines providing network resources
- databasesOrganized electronic information collections
- networkingBuilding professional relationships
- cloudAtmospheric water vapor mass
- containerizationStandardized cargo packaging system
orchestration · virtualization · datacenter · storage · DNS · load balancer · firewall · SSL
Needless duplication
- failoverAutomatic backup system activation
- backupStored duplicate for recovery
- recoveryRegaining what was lost
- replicationAct of duplicating precisely
monitoring · alerting · graceful degradation · circuit breaker · consistency · availability · disaster recovery · uptime
scalability
Capacity for growth
- modularityDivisibility into independent units
- abstractionDistilling to essential qualities
- decouplingRemoval of interdependence
layering · microservices · monolith · distributed · client-server · event-driven · service-oriented · hexagonal · load balancing · caching
requirements
Necessary conditions for something
- specificationsStated requirements and parameters
- prototypingMaking preliminary models
- wireframeEdge-only geometric model
mockup · diagramming · flowchart · whiteboarding · tradeoffs · constraints · iteration · documentation · review · stakeholder
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
performance
Carrying out a task
- throughputProcessing rate over time
- latencyDelay in system response
- bottleneckConstriction limiting throughput
caching · indexing · profiling · benchmarking · load testing · stress testing · capacity planning · resource allocation · efficiency · response time
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
redundancy
Needless duplication
- failoverAutomatic backup system activation
- backupStored duplicate for recovery
- recoveryRegaining what was lost
replication · monitoring · alerting · graceful degradation · circuit breaker · consistency · availability · disaster recovery · uptime · rollback
- computingcomputer, computers, software, hardware, code
- game designmechanics, game balance, balancing, playtesting, difficulty
- product designCAD, prototyping, specifications, blueprints, technical drawings
- designfunctionality, emphasis, unity, typography, logos
- UX designuser research, wireframing, user experience, user testing, user needs
systems designimplementation
Putting plans into effect
coding · execution · programming · deployment · maintenance
design, system, designer, designing, redesign, systems, systematic, ecosystem, designers