Software Architecture Talk on 20th July
I gave a talk on software architecture at the office. Here's the presentation and the key takeaway.
14 Oct 2023

I gave a talk on software architecture at the office. Here's the presentation and the key takeaway.
Why Architecture Matters
Software architecture sounds academic. It's not. It's the set of structural decisions that are expensive to change later. Choose the wrong database? You're migrating for months. Pick the wrong service boundaries? You're refactoring for quarters. Ignore scalability? You're rebuilding from scratch.
The point of studying architecture isn't to become an architect. It's to recognize which decisions are reversible and which ones you'll live with for years.
Architectural Styles Worth Knowing
Before starting any project, you should understand the major architectural styles. Not to use all of them, but to pick the right one:
- Client-Server — the foundation of web applications. Clear separation between the UI and the backend.
- Layered (Multilayered) — organize code into layers (presentation, business logic, data access). Simple. Well-understood. Can become rigid.
- Monolithic — everything in one deployable unit. Simple to develop and deploy initially. Hard to scale and maintain as it grows.
- Microservices — decompose into small, independently deployable services. Scales teams. Adds operational complexity.
- Event-Driven — components communicate through events. Loose coupling. Good for reactive systems. Hard to debug.
- Service-Oriented (SOA) — services communicate via well-defined interfaces. Predecessor to microservices. Heavier, more enterprise-y.
- Component-Based — build from reusable components with clear interfaces. Think design systems or plugin architectures.
- Peer-to-Peer — nodes communicate directly without a central server. Used in file sharing, blockchain, WebRTC.
- Pipes and Filters — data flows through a pipeline of processing steps. Good for data transformation and ETL.
- REST — resource-based API design over HTTP. Stateless. The default for web APIs.
- Space-Based — distribute processing and storage across multiple nodes. Used for high-volume transaction processing.
Each style solves specific problems and introduces specific trade-offs. Microservices give you team independence but add network complexity. Monoliths give you simplicity but create deployment bottlenecks. Event-driven gives you loose coupling but makes debugging harder.
The skill isn't knowing these patterns. It's knowing which one fits your team size, your traffic, your requirements, and your operational capacity.
Spend a few minutes understanding each one. When the next project starts, you'll make better decisions about the foundations.