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.
Some IT folks may think that they don’t need or are unable to implement CD because they aren’t a Web company such as Google or Facebook. This is purely a myth, as evidenced by Huawei’s CD transformation, as well as other companies (both small and large) that have seen the benefits of CD and have realized faster innovation and time to market as key drivers to their bottom line.
When you hear of CD implementations at companies such as Facebook, Netflix, Etsy, Gap and Huawei, it is important to understand that all of these companies strive toward an incremental release and the ability to more quickly and regularly ship products and new features to the end consumer. It’s the practice of CD that enables this—not the fact that they happen to be a huge company.
The benefits of CD are immense. The use of a CD platform allows a software organization to automate processes in the software delivery pipeline, eliminate mundane tasks, increase agility to respond to customer needs, reduce wasted time so developers can concentrate on the most important tasks, improve resource utilization, and achieve faster time to market.
Why did Huawei decide to implement Continuous Delivery?
Huawei needed to deliver more software applications and incorporate software features faster in order to keep up with user expectations and demands. When they tried to speed up the process, there was lack of automation and orchestration with their software development tools and processes. These two challenges were the catalysts for implementing CD.
Huawei’s CD and DevOps transformation journey began with implementing a shared cloud service and a centralized, end-to-end CD platform. With these changes, they were able to encompass build, infrastructure provisioning, deployment, testing and reporting into the software development process—including releasing pipeline visualization and progress dashboards.
Today, Huawei’s current implementation supports:
- More than 2,000 releases per year
- More than 100,000 compiles and builds per day
- More than 1 million test cases run per day
- More than 30 million lines of code (the product is complicated)
- More than 480,000 code reviews/analyses per year
- More than 170,000 system integration tests per year
Any software development organization, whether the software is for internal or external use, can benefit from the implementation of CD. The goal is to create a repeatable, reliable process of releasing software. CD is not only about the end release, it is about the software delivery pipeline—and this holds true whether you are delivering every five minutes or every five months, whether your software goes on a website or onto a chip.
One of the main benefits of implementing a CD strategy is to get your software delivery process to a point where it’s reliable and repeatable, and that it takes the slack and manual interventions out of the delivery process to reduce errors and cut cycle time. The very nature of CD is to have your code “release-ready” at any time, so you’ll be able to decide when you want to release the applications based on market and business needs. This control allows you to make software delivery decisions based on business reasons, not process reasons.
CD implementation is an ambitious transformation of an organization, with long-term, transformative results. It is not a turnkey solution or tool, and it involves all dimensions of your R&D organization. To succeed, you need a solid platform consisting of tooling and infrastructure, process and configuration management, and finally people and change management.