Software Architecture in Golang: C4 Model for Diagraming and Documentation

preview_player
Показать описание
C4 Model is sort of a slim UML where only the relevant data is presented to the user that happens to be interested in learning about the Software Architecture being described. In practice what this means is that the consumer of the diagram is who drives how much information is displayed.

The C4 Model defines four levels of diagrams:

* Context (L1): the highest level, it shows how the system relates to users and other systems. It is used as a quick introduction to the system, usually meant to be presented to stakeholders, this is the big picture diagram.
* Container (L2): breaks down the system into interrelated containers, containers are executable and deployable sub-systems. It is meant to be shared with people that need more technical details about how the system is composed.
* Component (L3): takes the containers and decomposes them into interrelated components, relates them to other containers or other systems. It is meant to be read by engineers not familiar with the system that are planning to work on it.
* Code (L4): provides more details about how the actual code is being implemented. It is meant to clearly display some concrete details about the most complex pieces of the system.

---

RELEVANT LINKS

00:00 Start
01:20 What is the C4 Model?
01:41 How to use the C4 Model?
03:43 C4 Model with GOA
08:45 C4 Model with Structurizr
10:58 C4 Model with PlantUML
14:12 C4 Model Conclusions

---

Who am I:

Hello👋🏼! I'm Mario, a Hands-on Software Architect and Lead Backend Engineer with more than 16 years of professional experience building all kinds of software including on-premise Industrial Automation Systems, Linux Accessibility Desktop and Browser Components as well as Distributed Advertising Microservices.

Every week I will share with you different topics I've learned while working for small startups and large companies including the processes I've followed over the years for successfully delivering complex enterprise systems from start to end.

Subscribe if you like Software Development, Software Architecture and Systems Design!

Keep it up. Don't give up!

#golang #microservices #softwarearchitecture

--- Our affiliate links below

--- Our Vlog Channel

Рекомендации по теме
Комментарии
Автор

Amazing content! Extremely practical and useful, your channel is way underrated. I hope the channel gains the popularity it deserves.

piyusht
Автор

Ur channel is a treasure man !! u r a legend.
Amazing content !!

bjugdbjk
Автор

How would you maintain a C4 Model that describes multiple microservices and the communication between them? A separate repo? Document it in the api gateway (if you have one)? Let each microservice push it's own C4 Models to a service that collects & combines them?

Cheers!

martinnorberg
Автор

I think mermaid.js can also be used to create and visualize c4 models. Especially because of the ability to click on nodes in mermaid.

brianonango
Автор

Really great content!!! Thank you so much! Any udemy courses planned?

maei