Skip to main content
Version: 2023.3

CloudShell Component Architecture

This article illustrates a basic CloudShell deployment. Out of the box, CloudShell is installed on Windows along with the Sandbox Service, MongoDB and RabbitMQ service, while the New Job Scheduling services (introduced in CloudShell 2020.2) are deployed on a Kubernetes cluster. New Job Scheduling deployments come with their own Sandbox Service, MongoDB and RabbitMQ installations on Kubernetes to support high load. For details about the ports required for communication between the components, see CloudShell Port Requirements. For details about CloudShell in High Availability mode, see Deployment Types (High Availability).

Notes about the diagram below:
  • A green frame denotes components related to the New Job Scheduling.
  • Components in orange are 3rd party tools/technologies.
  • The Insight, QualiX and Portal machines are typically installed outside the private data center in the DMZ network.

The CloudShell components are described in the following table:

* TestShell, CloudShell Authoring and Job Scheduling are CloudShell paid add-on solutions.

ComponentDescription
CloudShell Authoring*Code-free hardware interface editor for quick driver development for any blueprint, supporting full equipment interchangeability and automatic documentation for easy collaboration.
CloudShell Execution ServerRemotely executes setup, teardown and sandbox commands. It can also execute test suites and jobs from the Job Scheduling dashboard. This component adds to CloudShell Portal's total execution capacity. Execution servers can be either Windows or Linux-based.
CloudShell License ServerManages network license distribution. The License Server can be installed on any machine, and should be installed before installing client components.
CloudShell PortalA self-service web client that enables you to manage your resources, create and manage blueprints and sandboxes, as well as manage and schedule your automated testing.
You can leverage CloudShell’s extensive automation capabilities to run blueprint and resource commands as well as automate business use cases within Sandboxes.
CloudShell Resource Management ClientUse CloudShell Resource Manager to manage resources and usage. For an example of using this component, see Import User Definitions from an Active Directory (Optional).
CloudShell RuntimeSupports the execution of CloudShell flows and drivers.
CloudShell Sandbox APIThe CloudShell Sandbox API is a REST API that enables you to consume and interact with CloudShell sandboxes. Using Sandbox API, it is possible to integrate CloudShell with software interfaces to develop and automate Continuous Integration/DevOps processes. For example, you can use API functions to view details about blueprints and sandboxes related to a particular user domain and user permissions, and the available actions that can be performed on the blueprints and sandboxes.
The Sandbox API consists of three components, which reside on the CloudShell Portal machine:
  • CloudShell Server Proxy - communicates with Quali Server, and communicates internally with CloudShell Sandbox API Gateway
  • CloudShell Sandbox API Gateway - communicates internally with CloudShell Sandbox API
  • CloudShell Sandbox API - communicates with API Client
Database ServersCloudShell uses SQL and MongoDB.
SQL for CloudShell-related data such as blueprints, user identities, inventory resources, configurations, Apps and Insight data for BI analysis.
MongoDB is an open source database used to store sandbox events, New Job Scheduling-related data (suites, jobs, tests, reports, etc.) and permitted user identities.MongoDB instances for Quali Server and Sandbox Service are installed as part of the Quali Server installation. There's also an option to use an existing MongoDB Server or cluster.
Elastic SearchThe 64-bit version of Java is required when using a 64-bit version of Windows.
PyPi ServerCloudShell manages driver and script dependencies using PyPi Server.
Quali APIThe Quali API library provides access to job scheduling operations from outside of the Job Scheduling dashboard, as well as functions related to sandboxes, for example, attach file to sandbox and import and export of blueprints.
Quali ServerRuns the CloudShell framework and manages CloudShell data.
QualiXUsed for remote desktop gateway (must be accessible from CloudShell Portal and the browsers)
Sandbox ServiceSandbox Service is a Python service that comes in two flavors: Windows service (embedded) delivered as part of Quali Server and Linux service included with the New Job Scheduling on Kubernetes (this second flavor supports extremely large deployments, up to hundreds of new sandboxes every few minutes). As such, we also recommend moving the Sandbox Service to the Kubernetes cluster option even for high load deployments without the New Job Scheduling.
This service performs two key functions:
  • Processes, prioritizes and invokes all sandbox creation requests against Quali Server. As such, starting with CloudShell 2020.2, Sandbox Service replaces the reservation creation mechanism that was used in pre-2020.2 CloudShell versions, also in deployments that do not use the New Job Scheduling. The Windows flavor of the service includes a healthcheck mechanism that actively monitors and restarts the service in the event of a failure.
  • Acts as the communication layer between Job Scheduling and Quali Server when handling New Job Scheduling operations. In deployments that use New Job Scheduling, the Kubernetes-based service needs to be used instead of the Sandbox Service that comes out-of-the-box with Quali Server. For details, see Modify CloudShell to Use the Kubernetes-based Services.
For upgrades in CloudShell environments that have Docker, Sandbox Service will be installed externally on Docker and the UseEmbeddedSandboxService configuration key needs to be used to configure the deployment to use this external Sandbox Service.
SisenseCloudShell Insight (BI Server).
TestShell APIThe TestShell API library comprises functions for interacting with Quali Server. For example, you can use API functions to create and configure resources, blueprints, routes, and Sandboxes. This API library also provides a set of lab management batch operation functions.
TestShell Remote Runner*Executes TestShell-specific automation steps or complete scenarios on remote stations, enabling the launch of any script or protocol on a remote machine, without requiring complex infrastructure.
TestShell Studio*Desktop applications for GUI based test authoring and execution. (Studio and Runner are automatically installed with TestShell Studio.)
New Job Scheduling* Components:
ELKELK (Elasticsearch, Logstash and Kibana) is a 3rd party tool that can be used to store CloudShell logs. These logs can then be used to investigate deployment issues and bugs, and trace their causes.
External Test RepositoryOnline GitLab test repository that contains tests of a specific type. For example, GitLab.
Identity ServiceIdentity Service is our authentication engine for the New Job Scheduling and creates users based on Quali’s identity management mechanism, allowing these users to access and use the Job Scheduling Portal and REST API clients.
Job Scheduling PortalREST API-driven UI client that is used to interact with New Job Scheduling. Job Scheduling Portal is separate from CloudShell Portal.
Job Scheduling ServiceJob Scheduling Service is a high-performance test automation framework that allows organizations to create, manage and execute test batches. The service is hosted on a Kubernetes cluster and uses Quali Server to extract user, blueprint and sandbox data.
RabbitMQOpen source message queuing tool used by Sandbox Service to manage sandbox creation requests coming from the Job Scheduling Portal and APIs. If needed, RabbitMQ is installed as part of the Quali Server.
Test Discovery ServiceTest Discovery Service is responsible for discovering tests of a specific type. A Test Discovery Service can only discover tests of a specific type in a specific repository. For more information, see Test Discovery Service.
Test Execution ServiceTest Execution Service is responsible for running tests discovered by the Test Discovery Service. For more information, see Test Execution Service.
Important: Test Execution Service does not handle shell and script commands. CloudShell Execution Servers are required to handle such operations.