Considerations when Automating Continuous Deployment.
Agentless release automation is the correct choice for the lean data center pursuing continuous deployment. Release automation drives continuous deployment to streamline your continuous delivery. 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:
- 1. Package the Application and define install logic.
- 2. Send artifacts to end points.
- 3. Manage and manipulate artifacts on an endpoint.
- 4. Execute remote ‘jobs’ on an endpoint.
- 5. Capture the results and output of a remote script or system command.
- 6. Start / Stop Services on an endpoint.
Also, it’s worth mentioning that 4. can be categorized further as:
- a. Execute a remote script that already resides on an endpoint,
- b. Send a process to the remote endpoint and execute, and
- c. 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.
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
Because DeployHub is an agentless release automation solution, all the obstacles of an agent-based approach don’t exist.
• 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 agent based licesning
• Platform Support – By utilizing standard protocols DeployHub supports Windows, UNIX, Linux, iSeries, OpenVMS, Tandem, Stratus, IBM4690, Tru64, and more.
Release Code Faster with Agentless Continuous Deployment
In conclusion, there is no doubt that agentless solutions place dramatically less demand on the full continuous delivery pipeline. With DeployHub, a standard release automation process can be adopted across all environments so you can release new code faster. DeployHub is available as open source from DeployHub.org. DeployHub Pro is a commercial offering with release management features offered with an affordable consumption based licensing model.
What are you waiting for?