Software Architecture
Intro to Software Architecture
Software architecture is the foundation of any software system and involves making design decisions that will impact the system's functionality, performance, and maintainability.
- Software Architecture Guide
Martin covers: • What is software architecture? • Why does it matter? • Application architecture • Enterprise architecture
How to Think About Architecting Software
Effective software architecture requires a holistic approach that considers the system's context, stakeholders, requirements, and constraints. It involves identifying and prioritizing architectural drivers, creating architectural views, and communicating the architecture to stakeholders.
- Don’t Let Architecture Astronauts Scare You
Joel emphasizes the importance of solving useful problems, rather than fixating on interesting architectures.
Software Design Patterns
Software design patterns are reusable solutions to common software design problems. They provide a vocabulary for discussing design decisions and can help architects make informed choices about the system's structure and behavior.
- Design Patterns
Alexander covers: • What's a design pattern? • Benefits of design patterns • Catalog of 22 patterns • History of patterns • Criticism of patterns
- The SOLID Principles of Object-Oriented Programming Explained in Plain English
Yigit provides a well-written breakdown of the SOLID principles: • The Single Responsibility Principle • The Open-Closed Principle • The Liskov Substitution Principle • The Interface Segregation Principle • The Dependency Inversion Principle
Architecting Systems for Scale
Architecting systems for scale involves designing systems that can handle increasing amounts of data, users, and traffic. This requires considering factors such as performance, scalability, availability, and fault tolerance.
- Introduction to architecting systems for scale
Will documents some of the scalability architecture lessons he's learned while working on systems at Yahoo! and Digg, around load balancing, caching, off-line processing, and a platform layer.
Software Architecture Principles
Software architecture principles provide guidelines for designing software systems that are flexible, modular, maintainable, and scalable. These principles include separation of concerns, loose coupling, high cohesion, and modularity.
- Meetup Architecture Principles
A VP of engineering describes Meetup's process of identifying their architecture principles: build for change, build for understanding, and build Meetup.
Software Architecture Examples
Software architecture examples demonstrate how software architecture principles and patterns can be applied in practice. Examples include the layered architecture pattern, the microservices architecture pattern, and the event-driven architecture pattern.
- Exploring Workday’s Architecture
James provides a big picture overview of Workday's architecture, and then digs into categories of detail including: • User Interface Services • Metadata-Driven Development • The Object Management Services • Integration Services • Persistence • Analytics • Deploying Workday • Operations