What does scalability mean in your software organization? Scalability is a word that is used quite often in the IT world, but it means something different to every software development company. The definition is straightforward: Scalability is the ability of a system, network or process to handle a growing amount of work in a capable manner, or its ability to be enlarged to accommodate that growth.
One’s perspective of scalability, however, is based on a company’s current development processes (i.e. team size, number of applications deployed, length of cycle times, etc.) and how it wants to grow. For one organization, scalability may mean growing its IT infrastructure for faster deployment. For another, it may mean scaling from 10 developers to 100, or growing from developing one product line to adding another flavor for the software.
Scaling a startup or a small company may be challenging; however, scaling a large-scale (not to say a huge) organization has its very unique set of challenges and complexities. Scaling from 10 developers to 100 is one thing, but how do you go from 2,000 developers to 40,000(!) developers across hundreds of globally distributed teams.
One such business that successfully scaled to this level is Huawei, a US$40-billion China-based company with 150,000 employees that delivers communication technologies for telecom carriers, enterprises and consumers. Its telecom network equipment, IT products and solutions, and smart devices are used in 170 countries and regions.
By implementing DevOps and Continuous Delivery to streamline, scale and transform its software delivery processes, Huawei was able to achieve significant growth, scaling its software development infrastructure and pipeline from 2,000 developers working on 20 applications, to a worldwide rollout of 40,000 developers servicing more than 1,000 applications.
Huawei was able to successfully scale their software development efforts through the implementation of Continuous Delivery practices and DevOps transformation initiatives in a complex embedded software environment. This enabled them to reduce the cost of delivering software, increase resource utilization and productivity and achieve shorter time to market with higher quality software.
So what exactly is Continuous Delivery? Continuous Delivery (CD) is a set of practices and methodologies in software development designed to improve the process of software delivery and ensuring that the software is always ready to be released. Continuous Delivery involves all dimensions of your R&D and Operations organizations, consisting of team collaboration, agile and DevOps practices, Continuous Integration, build automation, test automation, deployment automation and shared visibility.