By Richard Bettison · November 2 2011

    Agent Based DeploymentsAgent based deployments rely on the presence of a running process and associated connection port(s) on the target infrastructure as a means to transport files and/or execute actions or commands. Agents can also be used to discover configurations on target servers and notify a central service whenever changes have occurred, or can be polled periodically to retrieve the data. Here is a quick list of the pros and cons of using agents to perform remote actions:
     
    Pros:
      1. No need to allow SSH/SCP/SFTP/FTP or Telnet type access to a secured environment. Instead security can be controlled by the agent system, and access to target environments is controlled through the client system. This can also be achieved in agentless scenarios but with additional administrative overhead if managing SSH sessions, passwords, passphrases etc
      2. Can specify a bespoke port and enable security protocols as required
      3. Can allow agent multicasting if required to allow auto detection of agents and their status
      4. Agents can be made to update themselves if the agent code changes. These agents are semi-autonomous
      5. Bespoke logging. The agent can be configured to use a logging framework such as log4j to enable logging to be tightly controlled and easily configured
      6. Control over transport protocols. Agents can be made to use, for example, a bisocket implementation when streaming data to/from the server that avoids most of the issues of firewalls (sockets are not opened in both directions and ephemeral ports are only required on the client, not the server)
      7. If written in the Java programming language, agents will run on any platform without the need to recompile them for each architecture
      8. From a development point of view, modern agent software APIs can easily serialize/deserialize object graphs for transmission across the wire, simplifying development of required functionalit

    Cons:
      1. Agent software needs to be deployed to the target server. This may become a management overhead in large distributed environments, unless the agents can be deployed automatically or semi-automatically
      2. Considerations around the performance profile and memory/CPU footprints of bespoke agent software
      3. Security configuration. The agent may not support SSL or this configuration may be overly complicated and cumbersome
      4. Agent reliability. Bespoke agents may suffer from reliability issues, and may need to be manually restarted following failure. Consequently they may not be 100% available
      5. Agent software update management may require manual processes in order to update the agent. Again, in large distributed environments this may become an issue
      6. Platform dependencies. Depending on the agent underlying programming language, the agent code may need to be separately compiled and distributed to each target platform architecture employed by an organisation. Using an agent built on java will help to mitigate against this issue, since Java byte code is platform independent
    RapidDeploy provides an agent based deployment solution out of the box, based on Java. Some features of the RapidDeploy agent network are:
      • Agent based on Java programming language for platform independence
      • Single jar package for ease of deployment and management
      • The agent supports SSL or non-SSL security
      • Support for multicasting for agent auto-detection and update
      • Agent auto-update when new versions of the agent software become available
      • Agent auto-restart functionality (in the event of the agent crashing for any reason)
      • Agent supports log4j logging to allow fully configurable logging
      • Small XML based agent configuration file


    In the next blog in this series, we'll look at agentless remoting and see how RapidDeploy supports this mode of operation.

    free RapidDeploy trial

     



    Richard is co-founder and Technical Development Director of MidVision. He graduated from Sussex University with a PhD and has 15 years consultant experience developing and delivering IT solutions across a number of industries. His expertise covers a range of subjects encompassing build & release automation processes, configuration & environment management, identity and access management design & implementation, middleware systems administration and development and production architecture design and implementation. Richard now uses his specialist knowledge to drive innovation in the automated build and deployment space and provide consultancy on best practice in this area.

    Topics: Blogging