How atomic design can explain architecture at scale
I like to learn and I am always amazed to see that the more you learn, the more you realize that you know just a few things.
Like classic architecture, the solution and digital architecture has evolved over the years with new patterns and possibilities as the technology evolves.
Let’s review together on this post how architecture scale from technical patterns to enterprise patterns
In my previous posts (From software architecture to digital architecture and Review your UI monolith approach), I was highlighting new design patterns proposed by Chris Richardson for micro-services, and Michael Geers for micro-frontends.
The number of subjects that needs to be architected, has also increased and there is now different segregation of titles like cloud architect, solution architect and enterprise architect.
But, even if a wide litterature provides exhaustive descriptions of those positions, I wanted to find a simple way to explain the fact that, all those positions are just different scale of a same consistent building spirit.
And then, I found two gems.
Passion
The first one is this simple quote about painting that represent for me the essence of the architect’s passion.
The painter, when at a distance from the easel, can assess and analyze the whole of the work from this vantage. He scrutinizes and listens, chooses the next stroke to make, then approaches the canvas to do it. Then, he steps back again to see what he’s done in relation to the whole. It is a dance of switching contexts, a pitter-patter pacing across the studio floor that produces a tight feedback loop between mark-making and mark-assessing.
Frank Chimero
Scale
The second one is the “Atomic Design” by Brad Frost
The author use an original classification to build user interface (UI) from elementary units to complex output with analogy to the physical composition with 5 levels :
- Atoms
- Molecules
- Organisms
- Templates
- Pages
His method is focused on user interface creation, but it gives a great idea on how architecture can be applied from the simplest element to complex or enterprise level.
Atomic design provides a clear methodology for crafting design systems. Clients and team members are able to better appreciate the concept of design systems by actually seeing the steps laid out in front of them.Atomic design gives us the ability to traverse from abstract to concrete. Because of this, we can create systems that promote consistency and scalability while simultaneously showing things in their final context. And by assembling rather than deconstructing, we’re crafting a system right out of the gate instead of cherry picking patterns after the fact.
Brad Frost
You can learn more about the method (and his book) on his website : https://atomicdesign.bradfrost.com/
Architecture at scale
So let’s apply this scaling definition approach on digital design to understand how to scale the architecture.
Atom Level
At this level, we use standard digital patterns to resolve a constraint or basic need
Let’s take the example of two elementary patterns :
- Load balancer
A load balancer is a component that will receive the user requests and redistribute them to several computing units in a way that dispatch the workload equally (balance it) - Scaling group
Group of computing virtual units that can grow or shrink based on the demand by creating or destroying units automatically
Molecule Level
At this level, we combine basic needs to create a component pattern
If we use the 2 previous elements with a database to store persistent data, we have a component design that can serve demand and dynamically scale with it.
The processing units can be created explicitly with fine grain specification (classic infrastructure as a service – IAAS) or transparently by the cloud provider to execute a workload (serverless)
Organism Level
Once we have this component, we need to think about its life cycle.
Once created, the component needs to be deployed in the enterprise eco-system and finally in the customer eco-system.
The process (and name of the environment) varies from one enterprise to another, but a standard way to define it, is the DTAP phase approach (https://en.wikipedia.org/wiki/Development,_testing,_acceptance_and_production)
- Development
Test the functional compliance of the product - Test
Test the integration of the product with other services - Acceptance
Test the product with the external partners systems - Production
Test and operate the product in its production deployment
Template level
Once you have defined the life cycle of deployment, you need also to think at other life cycles :
- Development approach with backlog and versions
- Customer approach : multi-tenant or segregation
- Disaster and recovery approach
- Monitoring and production approach
- Financial and billing approach
In a nutshell, create a template that will be instanciated for each product and executed by the company
Enterprise level
Finally, all the interactions, partners and processes of the products needs to be consolidated at the enterprise level to organize the global activity
At this global level, several topics needs to be architected like
- Business objectives
Structure of the offer and market presence - Partnership
Development of external relations to accelerate growth, decision of Make/Team/Buy - Eco-system
Nurture products and activities that will increase companies products usability and desirability - Customers
Cultivate customer relation, capture new needs and establish trust - Organization
Optimize resources and integrate constraints like the Conway’s Law, that observe that the communication structures of an organization are reflected in the technical systems they create
A last word
Based on the size of the company, this overall step approach will be either simplier or more complex. But it gives you a good idea on how “Architecture” skill needs to be applied with the digital mindset from low level design to enterprise operation level.
Each of the teams involved needs to understand their role, and the information that they need to create and share, to ensure a dynamic and positive growth of your business offer