Agentless release automation is the correct choice for the lean data center pursuing DevOps and continuous delivery. After years of experience working with server based build systems, I say this with absolute confidence. I know firsthand what headache agents can cause in builds. Repeating this architecture in the deployment process is just wrong. Before making a purchase, seriously consider your options.
Release automation drives continuous deployment to streamline your continuous delivery. While continuous delivery orchestrates the workflow, it itself does not do deployments. Your options are one-off scripts that struggle to adapt across the pipeline, or the purchase of an Application Release Automation solution designed to drive continuous deployments consistently to dev, test and prod.
Release automation software systems can be categorized as either “Agent-based” or “Agent-less.” Therefore, when deciding which way to go, begin by considering which continuous deployment tasks you want to automate. In this context, we are referring to software deployments, or deployment of software across the entire continuous delivery pipeline, NOT just production systems.
The most common steps required by organizations for every continuous deployment scenario are:
- Send artifacts to end points.
- Manage and manipulate artifacts on an endpoint.
- Execute remote ‘jobs’ on an endpoint.
- Capture the results and output of a remote script or system command.
- Start / Stop Services on an endpoint.
Also, it’s worth mentioning that 3. can be categorized further as:
- Execute a remote process that already resides on an endpoint,
- Send a script to the remote endpoint and execute, and
- Execute a system command on the remote endpoint.
This is standard stuff because mechanisms used to deploy software to endpoints are finite. But what are the merits of agent-based vs. agentless systems? Not understanding this can make or break your continuous deployment initiative.
Disadvantages of an Agent-based Release Automation Solution
Although agents can be a reliable way of building connectivity between the deployment server and its endpoints, any agentless system can be deemed equally robust if it is based on SSH/SSL secured connections. In short, the overhead associated with an agent-based solution overwhelmingly eclipses that of an agent-less release automation solution.
Installing agents to thousands of end points
Agent-based systems require an agent installed on every endpoint to receive code and system updates. Perhaps not a significant issue in small companies, but this can be a showstopper for Agile DevOps initiatives in larger enterprises. Furthermore, big businesses have hundreds, if not thousands, of endpoints so resource requirements are substantial. Think of microservices and containers.
Configuration of Agents
Every agent in an agent-based solution requires configuration settings be amended to ensure each endpoint can connect to the solution server. And, each agent may also require that configuration settings be altered based on the role of the agent. Translation: management headache and continuous deployment show stopper.
Software vendors continually update and improve their solutions. Hence, this means an agent-based solution may require regular software updates. Larger organizations may need to allocate resources for these upgrades, possibly forming dedicated project teams to complete the effort. Therefore, your team spends less time working on your stuff, and more time supporting your vendor’s stuff. Agentless release automation reduces maintenance overhead.
Firewall and Relay Configuration
Agent-based systems require firewall configuration changes to allow communications between agents and solution server. In addition, relaying instructions and data between numerous domains within large corporate networks is another resource drain.
Installing an agent typically requires installing agent software as a service running on the remote server. Hence, as with any service, the service may ‘fail’, require configuration changes, need recycling, fail to be compatible with other services, or worse, require re-installation. In a nutshell, Agents are not very ‘Agile DevOps.’ In fact they fit better into a waterfall environment.
Containers & Microservices
Containers and agents are like oil and water. Minimizing what goes on the container reduces the complexity around implementing containers. Your traditional deployment approach was not designed for an elastic or containerized data center. In essence you need an agentless deployment solution to install your agent based release automation solution. Extra work and cost.
Agent based systems are priced on the number of end points you use. If you add a server, you add an agent, you add cost. If you are moving to microservices and containers, you are faced with even more cost. Each container requires an agent.
Agents are a piece of software built for a specific platform. Therefore, if you want to deploy to Windows, you will need a Windows agent. UNIX will require its own specific agent, as will Linux, and so on. This can mean added risk because many vendors only build agents for broad platforms like Windows, UNIX and Linux. An agentless release automation solution has no platform restrictions. But larger organizations use various platforms designed to address specific needs. Think Cisco Router or other appliance.
For example, financial services firms use fault tolerant and high transaction processing platforms like iSeries, Stratus, OpenVMS and Tandem. In addition, retail organizations are likely to use the IBM4690 platform. It is highly probable that these platforms are not supported by agent-based systems, which prevents organizations from achieving release automation.
Advantages of an Agentless Release Automation Solution
Agentless release automation solutions avoid all the obstacles of an agent-based approach. In the end, an agentless solution cures the headaches of an agent based approach.
- Availability of Agents – Not Required
- Installation of Agents – Not Required
- Configuration of Agents – Not Applicable
- Agent Maintenance – Not Applicable
- Firewall & Relay Configuration – No difference
- Containers and Cloud – No extra work
- Cost – no extra cost based on agents
- Platform Support – By utilizing standard protocols agentless systems supports Windows, UNIX, Linux, iSeries, OpenVMS, Tandem, Stratus, IBM4690, Tru64, and more.
So as you move down the road of continuous delivery and continuous deployment, keep KISS in mind. Traditional deployment approaches that require end-target agents over complicate the problem and are way too costly compared to all of the other tools in the continuous delivery tool box. Keep it simple and keep agents out of the deployment business.
Latest posts by Tracy Ragan (see all)
- Seeking Geek Girls – Exploring the Gender Gap - September 26, 2017
- Don’t Throw Out Jenkins for CI Just Yet - August 14, 2017
- Agentless Release Automation for Continuous Delivery - June 27, 2017