Vendia | 10 ways to make your software better when building for cloud scale

10 ways to make your software better when building for cloud scale

Posted by Nitesh Arora

Scale. It’s one of the most common stressors to complex software systems. So how do public cloud services companies do it? And what differentiating practices can we apply from their toolkit, even when developing solutions that don’t require “cloud scale”?
Before exploring the practices needed for cloud scale, it’s important to set a baseline for any high-performing software team. The practices outlined in the DevOps Research Assessment (DORA) are a great starting point. The technical practices, Lean product development, Lean management, and culture and work environment approaches in DORA are applicable no matter the intended scale of your software system.

But there also must be something new or different to bolster those practices to achieve cloud scale. The 10 practices I’ve observed from the Vendia engineering team — those that seem to differentiate regular software from cloud-scale software — are grouped into four categories:

Together these categories, and the practices within them, allow a software team to increase the speed with which they can develop new features, increase the quality of the software they deliver and increase their likelihood of achieving the scale they desire.

Knowledge

Practice No.1 – Hire or develop distributed systems expertise

Software teams building for cloud scale must deeply understand the common pitfalls of distributed systems and their solutions. While reading about them is a start, experience dealing with the failures instills a level of understanding that is unmatched. Likewise, calling upon experiences, both successful and unsuccessful, gives teams the resources to find ingenuitive ways to solve those challenges, even at a moment’s notice.

Practice No. 2 – Get very familiar with the libraries and cloud services you use

You may have heard the adage, “An amateur practices until they can do a thing right; a professional, until they can’t do it wrong.” Reframed for the software context, the quote looks something like this: “An amateur integrates a library until they get it to work; a professional, until it will always work.”

Spending an appropriate amount of time to select the right library, one that works but also fails gracefully, is a great realization of DORA’s team experimentation practice. The same selection rigor applies to public cloud services as well. Their inherent limits and failure modes must be fully understood to properly design and build for those potential failures.

Operations

DORA covers operations extensively, including its measurement capabilities. What differs about cloud-scale teams in the area of operations are not the practices themselves, but the level of sophistication and completeness applied.

Practice No. 3 – Provide deep and complete operational visibility

Monitoring and observability are already well-established imperatives. The guidance in DORA outlines several areas of focus, including instrumentation and correlation. Instrumentation means that code must be added to a system to expose its inner state. Correlation means that metrics collected from the application and its underlying systems can be used to explain behavior.

Practice No. 4 – Create robust operational automation and tooling

The purpose behind automation is to reduce toil, increase the likelihood of success and make important but painful processes simple, reliable, and, as a result, more frequently executed.

Practice No. 5 – Hold rigorous on-call reviews

Practice No. 6 – Always be canary-ing (ABCs)

Development

There are endless resources available to help you and your team improve software development practices.

Practice No. 7 – Engineer specifically for failure scenarios

Practice No. 8 – Apply frequent and extensive code reviews

Helping others

Practice No. 9 – Provide developer environments on Day 1

Practice No. 10 – Give back through open source

Key takeaways

Cloud-scale development teams are similar to regular development teams in many ways. In some cases, cloud-scale teams apply an additional level (or two) of rigor to existing practices. In others, they expand the scope of a common practice or apply it to areas not previously intended. When combined with an excellent set of foundational practices, the 10 practices defined above are enough to differentiate cloud-scale teams from all the others.