CloudTest: A multi-tenant, scalable, performant and extensible verification service

In this post, Sina Jafari discusses key characteristics of the CloudTest infrastructure used at Microsoft and why similar characteristics should be considered in all large-scale test infrastructures to improve engineers’ productivity and help them ship high-quality software.

Overview

CloudTest is a multi-tenant, scalable, performant, and extensible verification service developed by Microsoft to enhance engineering productivity by providing a robust testing infrastructure. It supports diverse testing needs, integrates with Azure DevOps, and is currently utilized by over 10,000 developers to validate products on more than one million Azure VMs daily.

What You'll Learn

1

How to leverage CloudTest for scalable testing in Azure environments

2

Why a multi-tenant architecture is essential for large-scale testing services

3

How to implement dynamic pre-provisioning of VMs to optimize testing costs

Prerequisites & Requirements

  • Understanding of cloud computing concepts and Azure services
  • Familiarity with Azure DevOps for CI/CD integration(optional)

Key Questions Answered

What are the key characteristics of CloudTest that enhance developer productivity?
CloudTest enhances developer productivity through ease of use, providing a seamless onboarding experience, automated image management, and integration with Azure DevOps for result reporting. It also offers feedback mechanisms like code coverage and test execution telemetry, ensuring developers can optimize their testing processes effectively.
How does CloudTest ensure reliability and performance at scale?
CloudTest ensures reliability and performance by utilizing Azure Kubernetes for scalability, implementing multi-tenancy to isolate team environments, and employing dynamic pre-provisioning of VMs to manage costs effectively. These strategies allow it to handle the demands of over 10,000 developers running tests on more than one million Azure VMs daily.
What technologies are used in the architecture of CloudTest?
CloudTest is built on Azure and utilizes several technologies including Azure Kubernetes for service orchestration, Cosmos DB and Azure Blob Storage for data storage, Azure Data Explorer and Azure Data Lake for telemetry, and Azure Queue Storage and Azure Service Bus for event-based communication. These technologies work together to create a robust testing infrastructure.

Key Statistics & Figures

Number of developers using CloudTest
10,000
This statistic highlights the widespread adoption of CloudTest among Microsoft developers.
Number of Azure VMs validated daily
1,000,000
This shows the scale at which CloudTest operates, validating a significant volume of tests every day.
Percentage of tests that can be cached
20%
This caching strategy allows CloudTest to skip executing tests that have not changed, improving efficiency.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Orchestration
Azure Kubernetes
Used as the platform to run CloudTest's middle-tier services.
Database
Cosmos Db
Used for storing recent results and internal states.
Storage
Azure Blob Storage
Used for storing recent results and internal states.
Analytics
Azure Data Explorer
Used for storing telemetry and test results.
Storage
Azure Data Lake
Used for storing telemetry and test results.
Messaging
Azure Queue Storage
Used for event-based service communication.
Messaging
Azure Service Bus
Used for event-based service communication.

Key Actionable Insights

1
Utilize the Azure portal plugin for easy onboarding to CloudTest, which simplifies the setup process for developers.
This is particularly useful for teams transitioning from legacy systems, as it allows them to quickly adapt to the new verification service without extensive training.
2
Implement code coverage tracking in Azure DevOps to gain insights into test effectiveness and identify areas for improvement.
This feedback mechanism helps teams understand how well their tests are executing and can guide them in refining their testing strategies.
3
Take advantage of CloudTest's dynamic pre-provisioning feature to optimize VM costs while ensuring tests run efficiently.
By managing VM availability dynamically, teams can reduce unnecessary expenses and improve overall testing turnaround times.

Common Pitfalls

1
Failing to properly configure VM images can lead to inconsistent test results.
It's crucial to define the correct OS versions and applications for testing environments to avoid discrepancies that could affect validation outcomes.
2
Over-provisioning VMs can significantly increase testing costs.
Teams should utilize dynamic pre-provisioning to balance resource availability and cost efficiency, ensuring they do not incur unnecessary expenses.

Related Concepts

Cloud Testing Strategies
CI/CD Pipeline Integration
Multi-tenancy In Cloud Services