DevOps have largely concentrated on the operation side of the methodology: monitoring, remediating, deployments, and reporting. Since much of the effort towards automation comes from the relocation to the cloud, a platform designed by and for operators, this is not shocking. As an outcome, how we automate has mainly been rooted in backgrounds from operations as well.
Just as we organized server demons with configuration files and synchronized actions with shell scripts, so too our automation are founded on tools that consume YAML or a DSL to describe the different pieces required to successfully build, deploy, and operate a modern application: datastores, containers, firewall rules, load balancers, secrets, metrics, logging, etc.
Invariably, the limitations of these operations-rooted solutions surface and we have to resort to, for example, executing a complicated CI build with a shell script, wrapping Terraform in a service that participates with our directory server, or scripts the copying of an upgraded logging configuration to various microservices repositories. In this manner, automation of operations in operational manners has come to describe DevOps to date and the boundaries of this method are becoming manifest as teams transfer from a handful of deployable artifacts to dozens or even hundreds of microservices in the cloud.
Instead of presence more productive, as build, development, deployment, and operation best methods evolve over time, teams are either sinking in the deluge of unskilled maintenance tasks holding build and deployment configurations up to date or suffering from the rot of having them wander. Luckily, we have a clarification to the current disaster brought on by the application of 2008 operations methods to 2018 DevOps problems: development, the other half of our preferred combination.
The progress in software development techniques and frameworks over the last decade collaborated with API-enabled cloud-native solutions offer fertile ground for enhancing the current methods of DevOps. As the orchestration of product, determination stores, load balancers, and circuit breakers becomes more critical, rather than performing around the boundaries of YAML and DSLs, we may use the real code.
As an example, Pulumi allows developers to define cloud infrastructure in their favorite coding language. This approach is infinitely better, no shelling out or wrapping tools, and you already have all your favorite frameworks, libraries, test harnesses, and tooling at your fingertips.
DevOps = Events
Events have been at the basic of DevOps, the push that triggers a CI development is the oldest and most basic DevOps event. The event-oriented nature of DevOps engages well with the latest trends in software development toward streaming and queue-based data systems like Kafka and SQS.
GitHub and other source code management systems have long supported posting webhook payloads for a variety of event types, e.g., pushes, pull request & issue activity, and deployments, offering you to proceeds action when your webhook endpoint receives a payload. With the latest announcement of GitHub Actions, GitHub offers the taking action part a lot easier: just give a Docker container.
GitHub operates the incorporation of the webhook event payload and the generating and implementation of the suitable workflow. Atomist chains the trends toward development and events, offering an event-based API for application delivery.
Furthermore, Atomist takes a company -wise view of events and code, greatly easing management of development and deployments across many repositories. And lest the monorepo crusaders—you know who you are—look down upon the microservices practitioners and scoff at the troubles beset them by their dozens of repositories, let’s not forget that monorepos, whose builds and deployments are typically more complicated than microservice repositories, are no better served by untestable YAML and shell scripts.
The only alteration is that when you do a mistake in an untestable monorepo build script, you create disruption everyone’s build. Cloud-native delivery requires real code triggered by events. The progress made thus far from development vs. operations to DevOps is both needed and credible, but we cannot depend on our successes.
Using software development best methodology for the techniques of DevOps is the future. Or, as Gene Kim says it in other words, we should be “uplifting the idea of what is possible through software APIs, rescuing us from YAML files and Bash scripts.”