DevOps — What’s behind the buzz word?
DevOps is a buzz word lately. It describes a culture that unifies software development (Dev) and software operation (Ops). By this it promotes a wide range of known and used techniques like automated testing, automated release management, infrastructure management and monitoring. The goal of all those combined is to have shorter development cycles and push quality code frequently to the production systems.
Fig 1: Dev + Ops = DevOps
As mentioned, these techniques are not new. Automated testing, continuous integration, automated infrastructure set-up and release management have been used for decades by many companies and are promoted by the experienced development staff. Those are also essential parts of the Lean and Agile principles that are now the de-facto standard for development organizations.
So why is DevOps trending lately? If the same Agile principles are applied to business strategy, where ideas can be verified quickly with real customers, the chances of making your business successful increase significantly. This “try fast, fail fast” mentality uses the software as its vehicle and is described very well in the “The Lean Startup” bestseller by Eric Ries. It is being used by many companies that are a part of our daily life now: Flickr® had implemented a culture that allowed 10+ deployments a day back in 2009. Netflix® is releasing 50+ times a day to its production systems, and Uber® has micro deployments released in a prompt manner without disturbing the business. This business agility allows the companies to innovate faster and validate many new features with minimal investments (A/B testing).
It should also come as no surprise that those businesses are web-based with a big number of customers. We live in an age where cloud computing has become the new way of looking at computation power, and it means that infrastructure can be seen in a completely different way-not as something static, but as a disposable, required only on demand, as an asset. To make things a bit more clear I’ll use the pet versus cattle analogy.
On-premises servers can be seen as pets: They are separate physical machines, that have an administrator team looking after them so they have power and the temperature is right. Each of the servers has to be patched with latest fixes in its own maintenance window. If the software solution needs more scalability, a new server must be bought, set up, installed and then included in the solution.
Cloud computing and containerization allow us to look at the servers as a herd of cattle. Every server is an instance of a type. If a change is made, it can be applied seamlessly to either the whole collection of servers or just to a part of it. If a server gets broken, it can be just replaced with another instance. If scalability is needed, a new server instance is requested and it automatically joins the others. All these activities are automated to an administrator so that the focus on what’s important for the business-having a working scalable solution. This fits the DevOps culture perfectly.
Fig 2: Pets Versus Cattle
In summary DevOps is the culture and principles around software development and operations that should be capable of bringing ideas to market in a very fast pace without compromising the quality or disturbing the business.
DevOps and Software AG products
When looking closely DevOps can be divided roughly into two areas: the ability to deliver solutions fast and in a good quality and the ability to manage the infrastructure easily.
Fig 3: The two components of DevOps
The rapid release/delivery part is covered by the Continuous Integration/Continuous Delivery (CI/CD) principles while the infrastructure management can be handled either by the PaaS capabilities (like webMethods Integration Cloud), Docker® images hosting Software AG products or by on-premises solutions managed by Software AG Command Central.
When Docker is being used, the delivery is oriented around the infrastructure. The solutions are being built into the containers, which are then being tested and promoted from stage to stage. The Docker images are immutable by nature, which assures that whatever is being tested can, without changes, be promoted up to production. The environment specific configurations are obtained via environment variables. This approach is standard for Docker and Software AG will not deviate from it.
Fig 4: Complete Docker CI/CD flow
More progress must be made for the entire Digital Business Platform to become available on Docker, but Software AG has achieved the first milestone in releasing the containers for “Integration Server” called “Microservice Container,” “Apama,” “API Gateway,” “API Portal” and “TerracottaDB” as official images on Docker Store.
For more information about the official Software AG Docker images visit the Docker store.
On-premises CI/CD is already covered by samples and articles. A deep dive can be found at Continuous Integration with webMethods 9.x.
Containers and a cloud solution are a natural way of managing big scale infrastructure. Functions like upgrades, patching, monitoring and scaling out come directly out of the box from container orchestration (e.g., Docker Swarm®, Kubernetes®) or cloud systems of choice.
The standard way of caring for your on-premises infrastructure is like a pet: You have to monitor it closely, apply fixes regularly, make backups and all other sorts of operations activities. This
typically requires the full attention of your system administrators.
In recent years there are lots of tools that aim to automate the Ops aspect, such as Chef® and, Puppet®. Software AG came up with its own tool for large scale infrastructure management: Command Central. It enables:
- Large-scale installation
- Fix alignment between installation/fix rollout
- Mass configuration
- Administration and lifecycle management of whole environments
- Automation of all above via CLI, REST API and declarative description (infrastructure as a code)
- Scripted migration of versions 9.8+ to 9.12+
Installation and maintenance can be performed from a central UI console. Those activities can also be scripted and centrally executed. The Command Central-enabled migration path enables customers to automate their upgrade to the newest versions. This investment in automation as “infrastructure as code” for both installation and migration is meaningful when your footprint exceeds five to 10 instances of products. While Command Central will not exactly treat your on-premises infrastructure like cattle, it will definitely reduce the TCO of Software AG’s Digital Business Platform and make your business more agile.
DevOps is a very wide topic and more of a culture than a technology. It is expensive to have and not easy to maintain, and you need skilled people to perform it, but if applied it can accelerate your innovation pace at unseen levels.
This articled aims to provide a big picture overview of DevOps and how this culture can be applied to the most common Software AG use cases.
Originally published at http://techcommunity.softwareag.com.