Agents

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

Agents do the actual work of deployment, which relieves the server from the task. All processes, including packaging, configuration, and deployments, that are requested by the IBM UrbanCode Deploy server run on hardware that is assigned to agents. After an installed agent is started, the agent opens a socket connection to the IBM UrbanCode Deploy server. Communication between server and agents uses a JMS-based (Java™ Message Service) protocol. The communication can be secured with 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).

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 runs the actual deployment work after it receives 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: starting and stopping, handling restarts, upgrades, and security, for example. Agents are rarely upgraded because their functionality is derived from plug-ins, which can be upgraded at will. After an agent is installed, it can be managed from the IBM UrbanCode Deploy web application.

Figure 1. Agent processes

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


Feedback