Agent Architecture

Agents play a central role in the Deployment Automation architecture. An agent is a lightweight process that runs on a deployment-target host and communicates with the Deployment Automation server.

Agents perform the actual work of deployment which relieves the server from the task. All processes, packaging, configuration, deployments, and so on, requested by the Deployment Automation server are executed on hardware assigned to agents.

Once an installed agent has been started, the agent opens a socket connection to the Deployment Automation server. Communication between server and agents uses a JMS-based (Java Message Service) protocol and can be secured using SSL, with optional mutual key-based authentication for each end-point. This communication protocol is stateless and resilient to network outages (the benefits of statelessness are discussed below).

Note: Agents on networks other than the one where the server is located might need to open a firewall to establish connection.

While we characterize an agent as a single process, technically an agent consists of a worker process and a monitor process. The worker is a multi-threaded process that performs the actual deployment work after receiving commands from the server.

Work commands come from plug-in steps which provide seamless integration with many third-party tools. The monitor is a service that manages the worker process, for example, starting and stopping and handling restarts, upgrades, and security.

Once an agent is installed, it can be managed from the Deployment Automation web application.

Figure 1. Agent Processes

image

Agents are an important part of Deployment Automation scalability. By adding more agents, the throughput and capacity of the system increases almost exponentially and so can scale to fit even the largest enterprise.