Multisites are systems where multiple websites or web applications share common resources, databases, and infrastructure while operating independently. A good example is an eCommerce site that serves customers in multiple countries, where products, offers, content, delivery and legal requirements all vary, at least to some extent.
A well-designed multisite system can lead to significant cost savings through software reuse, streamlined operations, shared infrastructure and high scalability. However, one aspect that often gets overshadowed in the discussion is the role of team structure and organisation in the successful implementation of multisite systems.
Matthew Skelton and Manuel Pais, in their insightful book “Team Topologies”, highlight the importance of team organisation as a key determinant of a project’s success.
Drawing from their rich ideas and our team augmentation expertise, this article seeks to demonstrate how team organisation is instrumental in the architecture and delivery of multisites. (If you want assistance augmenting your existing in-house team, get in touch here.)
Aligning Team Structures with Architectural Needs
The core principle of Team Topologies is the interaction between team structure and software architecture. The way a team is organized and how its members communicate significantly impacts the design, functionality, and efficiency of a system.
In the context of multisites, this implies that team organisation should reflect the system’s architectural needs. If the sites within a multisite system have distinct requirements and need to evolve separately, it might be beneficial to set up separate teams for each site.
These teams, with their unique sets of responsibilities and autonomy, can streamline the development process, ensuring that each site’s specific needs are met while maintaining the overall system’s integrity.
For example, if you’re running an eCommerce platform with different storefronts for different regions, having region-specific teams can be beneficial. These teams can handle the unique requirements of their respective regions, such as language translation, region-specific offers, and local regulatory compliance. By doing this, the team structure aligns perfectly with the architecture, creating a symbiotic relationship that bolsters the system’s effectiveness.
Continuous Delivery via Stream-Aligned Teams
What Are Stream-Aligned Teams?
The ‘stream-aligned team’ is a core concept from Team Topologies. It is a cross-functional team that aligns with a specific flow of work or a product stream. In a multisite architecture, stream-aligned teams can facilitate rapid and continuous delivery.
Consider a system where each site caters to a unique customer base. Stream-aligned teams, each focusing on one customer base, can provide continuous updates and improvements tailored to their specific needs.
Each team, fully immersed in its assigned customer base’s needs, can develop and deliver solutions more effectively, ensuring that the platform stays relevant and responsive to its users’ evolving needs.
There are many ways to organise stream-aligned teams: by country, product line, region or architectural concept. Some – in our experience – work better than others, but the key heuristic is to identify your axes of change and design for that.
Dealing with Complexity Through Enabling Teams
So-called enabling teams form another key concept in Team Topologies. These teams handle larger, more complex parts of the system and expertise and support to other teams, helping them to speed up their learning and delivery.
Enabling Teams for Multisite Systems
An enabling team could manage shared infrastructure or resources used by all sites. This could include managing common databases, ensuring security across all sites, or handling other shared resources. Their broad view of the system allows them to identify and rectify issues that may not be apparent to individual site teams. One might refer to this type of team as a platform team.
On the other hand, enabling teams could support stream-aligned teams by helping them navigate technical challenges, providing them with the necessary tools and skills, or even fostering collaboration between teams.
For instance, in a scenario where different sites are developed using a common tech stack, an enabling team could provide valuable guidance on regulatory practices, high-performance optimisations, machine learning algorithms and so on. This would help streamline the development process across all sites, improving efficiency and reducing potential issues or conflicts.
Getting it Wrong
This author has first-hand experience of when team structure isn’t aligned with the mission at hand, resulting in stifled delivery through inefficient communication paths, long-winded approval processes and carefully managed coordination with other teams to release changes into production.
When Software Development Becomes a Three-Legged Race
Think of it like a three-legged race. In a three-legged race, two participants attempt to complete a short sprint with the left leg of one runner strapped to the right leg of another runner. The key to success in this race is synchronization and cooperation. If one runner tries to go faster than the other, they will most likely trip and fall, or at the very least slow each other down.
This is a perfect analogy for how poorly structured teams can introduce unwanted dependencies. Let’s say we have multiple teams working on different aspects of the same project. If the teams are not structured in a way that allows for independent work, they will need to constantly coordinate their efforts to ensure that they are in sync. This is like the runners in the three-legged race. They can’t move independently of each other; they need to move in lockstep or they’ll hit the dirt!
In the context of a project, if one team finishes their part of the work but must wait for another team to complete their part before moving on, it slows down the whole process. This can cause delays, increase costs, and decrease the overall efficiency of the business. The teams are essentially tied together, just like the runners in the race.
How to Avoid the Three-Legged Race
To avoid the “three-legged race” in a multisite architecture, each site should be designed and built in such a way that it can be changed independently of the others, while still being part of a cohesive whole.
The teams working on each site should also be structured in a way that allows them to work independently and efficiently, without the need for constant coordination with other teams.
In addition to the benefits to business agility, this will have a dramatic impact on the culture and general well-being of the people involved – speaking from personal experience!
Cultivating a Collaborative Ecosystem
Cultivating a collaborative ecosystem is the final but by no means least important, aspect of Team Topologies. Skelton and Pais emphasize the need to foster a culture where teams collaborate, share knowledge, and learn from each other. This approach is crucial for the successful implementation and management of a multisite system.
When multisite teams collaborate effectively, they can share insights and solutions, leading to a more cohesive and robust system. This can be facilitated through regular cross-team meetings, shared documentation, and other collaboration tools.
For example, a team working on one site might discover a new way to optimize the database performance. If this information is shared across teams, all the sites could benefit, leading to overall improvement in system performance.
Collaboration also extends beyond the technical aspects. Teams can also share insights about their user base, marketing strategies, and more. This kind of cross-pollination of ideas can lead to innovative solutions that would not have been possible in silos.
But I Only Have a Small Team!
It’s certainly true that a large multisite system can be operated by a fairly small remote team or in-house development team, given the amazing benefits of commoditised infrastructure and the widespread availability of powerful frameworks and tooling.
Nothing is preventing multiple responsibilities from being adopted in the same stream-aligned team or allocating some time for certain members of the team to take on the role of an enabling team – focusing on exploring new tools, technologies, or processes that can help all teams work more efficiently and effectively.
But beware of cognitive load and explore architectural patterns that help break the system down into manageable parts that the team can effectively handle.
With a small team, strong collaboration and communication become even more crucial. Regular sync-ups, sharing of knowledge and good practices, and collaborative problem-solving can help in effectively managing a large system with a small team.
Be wary of ‘specialists’ as they become single points of failure and encourage teams to pair or mob program to ensure knowledge is transferred freely.
Conclusion
The architecture and delivery of multisites isn’t just about the technical aspects – it’s as much about how teams are organised and how they interact. By aligning team structures with architectural needs, creating stream-aligned teams for continuous delivery, leveraging the power of enabling teams, and cultivating a collaborative ecosystem, organizations can significantly enhance their delivery capabilities.
The power of a successful multisite system lies not just in the hands of the architects and development team, but also in the collective effort and communication of well-organized and collaborative teams.
As Matthew Skelton and Manuel Pais wisely stated, “Organize around the software and optimize for flow”. This principle serves as a guide for those embarking on the journey of architecting and building multisites, reminding us of the crucial role that team structure and organization play in the success of such work.
At Unipro, we can assist you at any stage of the software development lifecycle. To enquire about our software development services, team augmentation, staff augmentation and other digital consulting services, contact us today.