![]() Rel(upm, marketplace, instead of writing PlantUML, I use Haskell to model architecture. Rel(marketplace, pako, "Queries reports") Rel(marketplace, identity, "Fetches users") Rel(marketplace, hams, "Fetches legacy pricing") Rel(marketplace, commerce, "Fetches pricing") System(frontend, "Marketplace FRONTEND", $tags="highlight") System(pako, "People Atlassian Knows Of") One of the above images was generated from this PlantUML code: ĪddElementTag("highlight", $bgColor="orange") There are two which you might have already used for other things, such as PlantUML and Mermaid. A system represents some group of software, and it can have containers which that software is deployed within. A container is something which runs, such as an application server, database, filesystem, etc. I only use system context and containers components and code are too detailed. The C4 Model formalises architecture into 4 abstractions: system context, containers, components and code. Instead of modelling things with lines and boxes, we can directly model systems and relationships. With code, we can update architecture diagrams within a pull request, version them and quickly modify many of them at once. Maybe we should write architecture diagrams using code instead. ![]() ![]() If someone adds a relationship to a new system, will they even remember to visit the Confluence page to click and drag and draw over the architecture diagrams? They can be very fiddly and even buggy e.g. there’s one architecture diagram for Atlassian Marketplace with an old outdated box that can’t be deleted using the software it was diagrammed in, it just won’t allow that, for some reason. Most diagramming tools require you to use the mouse, pointing and clicking and dragging and drawing. We don’t see this very much and I think part of the problem is that architecture diagrams can be costly. ![]() Ideally, we’d have dozens of architecture diagrams - from various views, from various proposals, from various teams. Some teams and projects will have a diagram and point to it as “here is the architecture” - but it’s not the architecture, it’s just one particular view. It’s not wrong to have a big box representing your backend it’s just one way of viewing an abstraction. That means all architecture diagrams are views into an abstraction. The people focused on backend had the reverse - a huge box just labelled frontend!Īctual relationships do exist between systems (e.g. network calls, shared storage) but an architecture diagram can’t give all details without becoming the code it’s meant to represent. The people focused on frontend had things like Jira, Embedded Marketplace, Commerce, Provisioning, Atlassian Connect, then an arrow to a huge box - just labelled Marketplace backend. When my previous engineering manager joined the Atlassian Marketplace team, he asked everyone to draw an architecture diagram. Probably the best form of communication is a diagram, with boxes representing systems (or components) and lines representing relationships between them. For the past few years I’ve been the most senior developer on my teams in Atlassian, in both position (Principal Engineer) and time (almost 9 years) - this means I usually take on the responsibility of managing our software architecture.Īrchitecture is the relationships between systems, which can be fairly tricky to talk about. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |