In order to manage the success and popularity of a web site, it needs to be designed to cope with a growing number of users. A site designed to support 50 concurrent users can't serve thousands of simultaneous visitors without collapsing. Thus, the very success of a web site could also be the cause of its failure, if it is not able to sustain the sudden and exponential growth in number of users or requests.
A recent study by Computing & Double Take revealed that 83% of UK organisations admit downtime of several hours or more. Even if you manage to avoid a complete collapse,
users will not stick around on a slow-loading site. The ability to grow (and shrink!) depending on need or availability thus becomes critical, directly affecting your revenue stream. A system that's able to cope with this changing demand is called scalable.
Whenever we think about scalability, we immediately focus on its technical aspects, like
architecture and technology. Whilst very important, it's only a part of the bigger picture. Any scalability-related effort will be wasted if we don't focus on the most important elements first:
people and
processes.
Scalability in fact is the "ability to grow" that involves:
- the organisational structure of the company, from managers to employees, in terms of roles, relations, competences and responsibilities;
- processes that smooth the path towards the wanted targets, by understanding the risks and limiting the impact of changes to the application's availability and stability;
- the technology used in the system, the hardware and software architecture to manage requests and data, and the infrastructure that monitors and controls its health levels.
This blog series will cover each of these three elements. We'll start by taking a closer look at the first: people.
People
As a company grows, it creates roles and responsibilities to ensure that all the areas of the business are being addressed, and to minimise duplication or waste of time and resources. This same process is essential when scaling technology, to ensure that many aspects of a site are seen to. This becomes especially important in critical situations, like service outages, when there's little time to think and an immediate action is required: well-oiled teams with clear role separation will know how to act - or react - without drifting to chaos.
In order to thrive, teams and individuals require clear direction, with specific and measurable objectives. They also need a supportive environment, in terms of available tools and people that can be consulted. The role of leaders and managers is essential to scaling, by inspiring people to achieve their goals; making sure that the team is staffed with the right skills and equipped with the right tools; monitoring progress; and removing all obstacles along the road.
The conclusion of a number of studies clearly shows how increasing the size of a team is expensive and reduces productivity, mainly because of the need of coordination and communication, as described in
The Mythical Man Month. Constraints help larger teams focus and standardise, but might hinder communication and innovation if too strict. Managers need to set clear expectations, and create goals and guiding principles, aiming to improve relationships and promote cross-functional integration initiatives. A high-performance organisation has to be built around high-performance teams.
When it comes to its internal organisation, a team can be shaped in different ways, typically based on a
function (i.e. designers vs. developers vs. testers), skill type or levels, or
cross-functional, with people with different expertise working towards a common goal. The teams which have proven most successful are of the second type, where people move beyond the traditional functional boundaries to focus on solving problems. They usually display higher levels of commitment and improved internal communication, thanks to aligned goals and a clearer overall vision and ownership of the product as a whole.
A further differentiation is regarding the work itself: the team can be built around a component or a feature (possibly spanning multiple components). In the first case, the team is responsible for a specific component of the system, leading to a more divisional structure, with separate code bases and release cycles. This structure has one big disadvantage: the dependencies it creates, resulting in delays due to waiting and hand-offs, and complicated planning and synchronisation. Moving to a cross-functional, feature-based team can result in a tremendous boost in productivity, and pave the way to greater achievements.
Your team has now been optimised for scalability. But to build a truly scalable environment, the team also needs to follow the right processes.
Subscribe to our RSS feed to stay tuned to the next blog post on processes that are critical to scale.
This blog series has been inspired by Martin L. Abbott & Michael T. Fisher's book, The Art of Scalability. We recommend this book for anyone interested in learning more about scalability.