Tuesday, June 22, 2021

 Recipes and their relevance to automation. 

The world of automation is dependent on commands and sequences that achieve a certain outcome or move to the desired state for a resource. The infrastructure may be elastic, scalable, self-healing, and state-reconciling but it’s the collections of recipes that make one automation system more popular than another. Let us take a closer look at these recipes. Logic and recipes are somewhat different. Logic is defined as flows and represented by flow charts. These are suitable for programming languages. Recipes are more suited for scripting languages and cookie-cutter tasks. An automation engineer will demand consistency, easy identification, troubleshooting, and resolution. She will have little patience for debugging complex multi-branch workflows and focus instead on dividing and conquering a flat list of steps to find the buggy step. The scripts and programs have at least one thing in common. Both are curated over time so they become even more sought after as they get better at not only what they do but also what they can do. The joy of automation is the savings in time and cost when it is repeated without human intervention. Thousands of repetitions can be kicked off in no time and the process will not only assign individual identifiers but also correctly maintain the mapping between the results and their respective set of input variables. One such example is the commissioning of computing systems where the stack involves multiple layers. Automations have interesting by-products in the form of intermediary results, states, and configurations. They execute all the tasks local to a host, unlike services and functions that may even be serverless. Automation can easily be monitored for a predictable start, progress, and stop. A controller leverages this aspect for scheduling their executions which are also called jobs. Automations have certain characteristics just like many other massive software products. They are usually written once and run many times over and on different hosts. They are portable. They embrace shell-based invocations. They become a library of low-level commands and high-level scripts, or recipes, and their organization is determined by their reusability and the requirements of those that use them.  Some hierarchy might be introduced for nomenclature, but the recipes remain a single-level collection even if they have groupings represented by prefixes and suffixes. This collection is often called a cookbook or run book and includes shell-based invocations. The language of automation is PowerShell on windows and Bash on Linux. Remote processing tools such as curl and data transformation to JSON have popularized the scripts and made them even more powerful as they delegate the intensive processing to the right resource. Another aspect of automation that is quite popular is pipelining. The data output from a previous stage becomes the input to the next stage and the operators allow for transformation and analysis between stages of the pipelining process. Automations have a ubiquitous affinity to state and configuration persistence in the form of a relational store, a high-performance message broker such as RabbitMQ, ZeroMQ, or MSMQ, a query, and analysis stack as well as a reporting and visualization stack. Even if their representations vary, automation stands out for their recipes.


No comments:

Post a Comment