Een overzicht van architectuurpatronen voor developers en tech leads

Wanneer je bij een microservices-project komt, merk je al snel een karakteristiek detail. Elke developer begrijpt clean architecture anders. De één probeert CQRS in een driedelig CRUD-systeem te proppen, een ander bouwt een monumentaal domein met een dozijn lagen van wrappers, en een derde lost koppelingsproblemen op via Event Sourcing. Om als team dezelfde taal te spreken, heb je een uniforme kennisbank nodig.
Elk van ons heeft tientallen artikelen en videolinks als bladwijzer opgeslagen. Het probleem is dat deze materialen snel verloren gaan. De auteur van de awesome-software-architecture repository, Mehdi Hadeli, heeft dit probleem opgelost: hij heeft een gestructureerde collectie van systeemontwerp-materialen op één plek samengesteld.
Wat de repository inhoudt
Dit is een open kennisbank met links naar artikelen, tutorials, boeken en codevoorbeelden. Het project heeft meer dan 11.000 sterren verzameld op GitHub. In tegenstelling tot standaard Awesome-stijl directories structureert het niet alleen algemene onderwerpen—het behandelt specifieke patronen en architectuurbeslissingen.
Developers hebben ook een aparte website awesome-architecture.com gelanceerd waar leesmateriaal handiger is dan in Markdown-bestanden.
Hoofdgedeeltes van de collectie
Architectuurstijlen en benaderingen
De repository breekt manieren om code te organiseren gedetailleerd af:
- Monolieten en microservices. Van de klassieke Monoliet tot het Modular Monolith-concept, dat helpt om code voor te bereiden op eventuele splitsing.
- Gelaagde architecturen. Een uiteenzetting van de verschillen tussen Clean Architecture, Onion en Hexagonal.
- Vertical Slice Architecture. Een benadering die code groepeert rond zakelijke features in plaats van technische lagen.
- Actor Model. Principes van actor-bewerking met voorbeelden met behulp van Akka.NET, Orleans en ProtoActor-frameworks.
Domain-Driven Design en CQRS
Het DDD-gedeelte bleek het meest gedetailleerd te zijn. De auteur heeft Eric Evans's concept opgesplitst in zijn samenstellende elementen. De catalogus bevat materialen over strategisch ontwerp (Bounded Context, Ubiquitous Language) en tactische patronen (Aggregates, Value Objects, Domain Services). Anti-patronen zoals Anemic Domain Model worden apart behandeld.
Er is een speciaal blok toegewezen aan het CQRS-onderwerp, met aandacht voor read/write model-scheiding, gegevensconsistentie en de connectie met Event Sourcing.
Gedistribueerde systemen en clouds
Bij het ontwerpen van clouddiensten is het Cloud Design Patterns-gedeelte handig:
- Veerkrachtpatronen: Circuit Breaker, Bulkhead, Retry.
- Messaging: Outbox, Inbox, Saga, Change Data Capture.
- Netwerkcomponenten: API Gateway (Ambassador, Kong, Ocelot), Service Mesh (Istio, Linkerd) en load balancing-oplossingen.
De collectie bevat ook materialen over infrastructuurtools: Kubernetes, Terraform, Nomad, Kafka, RabbitMQ en NATS.
Observability en betrouwbaarheid
Er is een apart gedeelte gewijd aan Observability. Het bevat artikelen over end-to-end tracing via Correlation ID, logverzameling via ELK, EFK, Fluent Bit en Grafana Loki-stacks. Daarnaast behandelt het back pressure en het bouwen van fouttolerante systemen.
Features en nuances van de collectie
Je zult TODO-gemarkeerde tabellen tegenkomen in de README zelf. Schrik niet: artikelen over deze onderwerpen staan al in de docs folder. Navigatie is goed georganiseerd, met materialen verdeeld over directories, waardoor je het onderwerp dat je nodig hebt gemakkelijk kunt vinden via zoeken.
Het zwakke punt van de repository is een merkbare bias richting de .NET-stack in de framework-specifieke gedeeltes. Bibliotheken zoals Steeltoe, MassTransit of CAP worden daar vaak genoemd. De fundamentele concepten zijn echter overal hetzelfde. Ze werken voor projecten in Go, Java, Python of TypeScript.
Hoe de catalogus in de praktijk te gebruiken
- Voorbereiding op System Design interviews. De collectie behandelt de meeste vragen die in architectuurgedeeltes worden gesteld.
- Naslagwerk voor het ontwerpen van systemen. Helpt om het verschil tussen actors en klassieke services op te frissen, of het juiste messaging-patroon te kiezen.
- Onboarding en teamtraining. Links uit de repository werken als een leeslijst voor het onderdompelen van developers in de architectuur van het project.
De awesome-software-architecture repository is nuttig voor developers die de overstap maken van het schrijven van functies naar het ontwerpen van systemen. Bookmark het project zodat het juiste artikel over patronen altijd binnen handbereik is.
Gerelateerde projecten