Software Architecture
Everything on SkillVeris tagged Software Architecture — collected across the glossary, study notes, blog, and cheat sheets.
77 resources across 2 libraries
Study Notes(30)
API Gateway Pattern
Learn how an API Gateway acts as the single entry point for microservices, handling routing, authentication, rate limiting, and aggregation.
Bulkhead Pattern
A resilience pattern that isolates resources per dependency or workload so that failure or saturation in one area can't sink the entire service.
Circuit Breaker Pattern
A fault-tolerance pattern that stops a service from repeatedly calling a failing dependency, giving it time to recover and preventing cascading failures.
Containerizing Microservices
Learn how to package microservices into efficient, portable container images using Dockerfiles, multi-stage builds, and layer caching.
CQRS Explained
Command Query Responsibility Segregation splits the write model and the read model of a service into separate paths, letting each be optimized, scaled, and evo…
Database-per-Service Pattern
Each microservice owns and exclusively accesses its own database, preventing hidden coupling through shared schemas and letting teams evolve their data models…
Distributed Tracing Explained
How spans, trace context propagation, and tools like Jaeger or OpenTelemetry let you follow a single request as it crosses dozens of microservices.
Domain-Driven Design Basics
An introduction to Domain-Driven Design concepts, bounded contexts, ubiquitous language, and aggregates, and how they inform microservice boundaries.
Event-Driven Communication
Understand how publishing and subscribing to events decouples microservices in both time and knowledge, and the trade-offs between choreography and orchestrati…
Eventual Consistency Explained
Eventual consistency guarantees that, absent new updates, all replicas or downstream views of data will converge to the same state — but not instantly, which s…
Graceful Degradation
The design discipline of keeping a system partially functional and useful when some of its dependencies fail, instead of failing entirely.
gRPC for Microservices
Explore how gRPC uses Protocol Buffers and HTTP/2 to deliver fast, strongly typed, streaming-capable communication between internal microservices.
Message Brokers in Microservices
Learn how message brokers like RabbitMQ and Kafka durably deliver messages between services, the difference between queues and topics, and delivery guarantees.
Microservices Design Principles
Core design principles for building maintainable microservices: single responsibility, loose coupling, API contracts, and failure isolation.
Microservices Interview Questions
The core system-design and conceptual questions interviewers use to probe real microservices experience, with the reasoning behind strong answers.
Microservices Quick Reference
A condensed cheat sheet of the core microservices patterns, communication styles, and resilience mechanisms for fast review before a design discussion or inter…
Monolith vs Microservices
A practical comparison of monolithic and microservices architectures across deployment, scaling, data management, and team structure.
Observability in Microservices
How to understand the internal state of a distributed system from the logs, metrics, and traces it produces, so you can debug failures you never anticipated.
Orchestrating Microservices with Kubernetes
Learn how Kubernetes deploys, scales, heals, and load-balances containerized microservices using Deployments, Services, and self-healing controllers.
Rate Limiting in Microservices
Techniques for controlling how many requests a client, service, or tenant can make in a given time window to protect capacity and ensure fair usage.
REST Between Services
Learn how RESTful HTTP APIs model resources, relationships, and versioning to provide a predictable, language-agnostic contract for synchronous microservice co…
Retries and Timeouts
Two foundational resilience techniques for handling transient failures and slow responses when services call each other over the network.
Service Discovery Explained
Understand how microservices find and communicate with each other dynamically, using service registries, health checks, and DNS-based discovery.
Service Mesh Explained
Explore how a service mesh uses sidecar proxies to manage traffic, security, and observability between microservices without changing application code.
Showing 24 of 30.
Interview Questions(47)
Stored Procedures vs ORM: What Are the Trade-offs?
Stored procedures push logic and multi-statement operations into the database itself for performance and centralized control, while an ORM keeps logic in appli…
What is the Database-per-Service Pattern in Microservices?
The database-per-service pattern means each microservice owns its own private database that no other service is allowed to access directly, so services communi…
API Composition vs Database Joins: How Do They Differ?
A database join combines rows from multiple tables in a single database engine using one SQL statement, while API composition assembles a result by calling mul…
How Does Optimistic Concurrency Control Work With Version Columns?
Optimistic concurrency control uses a version (or updated_at) column on each row so an UPDATE only succeeds if the version read by the client still matches the…
What is a Design Pattern?
A design pattern is a reusable, named solution to a recurring software design problem, expressed as a template of collaborating classes and objects rather than…
What is the Observer Pattern?
The Observer pattern defines a one-to-many dependency where a subject notifies a list of registered observers automatically whenever its state changes.
What is the Command Pattern?
The Command pattern encapsulates a request as a standalone object, bundling the receiver, the action to invoke, and its parameters, so callers can issue, queue…
What is the Mediator Pattern?
The Mediator pattern centralizes communication between a set of objects into a single mediator object, so those objects (colleagues) interact only through the…
Creational vs Structural vs Behavioral Patterns
Creational patterns control how objects are constructed, structural patterns control how classes and objects are composed into larger structures, and behaviora…
What is the Single Responsibility Principle?
The Single Responsibility Principle states that a class should have only one reason to change, meaning it should own exactly one well-defined responsibility ra…
What is an IoC Container?
An IoC (Inversion of Control) container is a framework component that creates objects, resolves their dependencies, and manages their lifecycle automatically,…
Dependency Injection vs Service Locator
Dependency injection has an external party push required collaborators into an object, typically via its constructor, so dependencies appear explicitly in the…
What is Inversion of Control?
Inversion of Control (IoC) is the design principle where a program’s flow of control, including object creation and the wiring of collaborators, is handed to a…
UML Class Diagram Relationships Explained
A UML class diagram models a system’s classes as boxes with attributes and operations, and connects them with relationship lines — association, aggregation, co…
What is a UML Sequence Diagram?
A UML sequence diagram models the time-ordered flow of messages exchanged between objects or components to carry out a specific interaction or use case, showin…
What is a Tightly Coupled System?
A tightly coupled system is one where classes or modules depend heavily on each other’s concrete internal details, so a change in one nearly always forces a ch…
What is a Loosely Coupled System?
A loosely coupled system is one where classes interact through stable abstractions like interfaces rather than concrete implementations, so a class can be swap…
What is the Single Table Inheritance Pattern?
Single Table Inheritance is a pattern for mapping an object-oriented class hierarchy to a relational database by storing every class in the hierarchy — the bas…
What is the Class Table Inheritance Pattern?
Class Table Inheritance is an object-relational mapping pattern where every class in an inheritance hierarchy, including abstract ones, gets its own database t…
What is Information Hiding?
Information hiding is the software design principle of concealing a module’s internal design decisions — data structures, algorithms, and implementation choice…
Information Hiding vs Encapsulation
Information hiding is the design-level principle of concealing decisions likely to change behind a stable interface, while encapsulation is the language-level…
Facade vs Adapter Pattern
A Facade pattern provides a single, simplified interface over a complex subsystem of multiple classes, while an Adapter pattern converts one existing interface…
Adapter vs Bridge Pattern
The Adapter pattern converts an existing incompatible interface into one a client expects, applied after the fact to make unrelated classes work together, whil…
The Object Pool Design Pattern Explained
The Object Pool pattern is a creational design pattern that manages a set of reusable objects through explicit acquire and release operations, coordinated by a…
Showing 24 of 47.