software architecture
Code organization design
Software architecture is the high-level structure of a software system—how its components are organized, how they communicate, and what principles govern their design.
Good architecture makes systems easier to build, maintain, and scale; poor architecture creates technical debt that compounds over time.
The monolithic architecture couldn't handle our growth, so we moved to microservices.
Architects balance tradeoffs between performance, flexibility, cost, and complexity.
Decomposed application architecture
- monolithHuge solitary standing stone
- service-orientedFocused on helping others
- event-drivenTriggered by occurrences
- layeredHaving multiple levels
hexagonal · serverless · client-server · peer-to-peer · plugin · MVC
Divisibility into independent units
- componentsConstituent parts
- layersStacked levels or coatings
- interfacesPoints of interaction between systems
- subsystemsComponent parts of complexes
patterns · abstraction · encapsulation · decomposition · composition · dependency · coupling · cohesion
Tendency to resume original form
- load balancingDistributing work across resources
- horizontal scalingAdding machines to distribute load
- statelessnessHaving no recognized citizenship
- cloud-nativeDesigned for cloud environments
auto-scaling · resource allocation · sharding · replication · partitioning · concurrency · clustering · federation
Simplified explanatory sketch
- designPurposeful creative planning
- specificationDetailed technical requirement
- modelingSimulating or demonstrating form
- schematicSimplified technical diagram
conceptual · layout · planning · visualization · wireframe · flowchart · sketch · documentation
Ability to withstand malfunctions
- redundancyNeedless duplication
- robustnessResistance to failure
- resilienceCapacity to recover quickly
- recoveryRegaining what was lost
failover · uptime · consistency · monitoring · validation · quality assurance · safety-critical · mission-critical
Maximizing efficiency or performance
- latencyDelay in system response
- throughputProcessing rate over time
- profilingCharacterizing by patterns
- efficiencyProductive without waste
response time · bottleneck · runtime · metrics · bandwidth · parallelism · overhead · capacity planning
microservices
Decomposed application architecture
- monolithHuge solitary standing stone
- service-orientedFocused on helping others
- event-drivenTriggered by occurrences
layered · hexagonal · serverless · client-server · peer-to-peer · plugin · MVC
modularity
Divisibility into independent units
- componentsConstituent parts
- layersStacked levels or coatings
- interfacesPoints of interaction between systems
subsystems · patterns · abstraction · encapsulation · decomposition · composition · dependency · coupling · cohesion · tier
elasticity
Tendency to resume original form
- load balancingDistributing work across resources
- horizontal scalingAdding machines to distribute load
- statelessnessHaving no recognized citizenship
cloud-native · auto-scaling · resource allocation · sharding · replication · partitioning · concurrency · clustering · federation · edge computing
diagram
Simplified explanatory sketch
- designPurposeful creative planning
- specificationDetailed technical requirement
- modelingSimulating or demonstrating form
schematic · conceptual · layout · planning · visualization · wireframe · flowchart · sketch · documentation · whiteboard
fault-tolerance
Ability to withstand malfunctions
- redundancyNeedless duplication
- robustnessResistance to failure
- resilienceCapacity to recover quickly
recovery · failover · uptime · consistency · monitoring · validation · quality assurance · safety-critical · mission-critical · disaster recovery
optimization
Maximizing efficiency or performance
- latencyDelay in system response
- throughputProcessing rate over time
- profilingCharacterizing by patterns
efficiency · response time · bottleneck · runtime · metrics · bandwidth · parallelism · overhead · capacity planning · caching
- architectureEiffel Tower, buildings, architects, design, thatching
- programmingvariables, functions, for, function, debugger
software architecturesource code
Programming instructions before compilation
code · implementation · machine code · syntax · data structures
architecture, software, spreadsheet, architectural, adware, spyware, freeware, firmware, shareware