This blog was originally published on Forbes
The information technology market, according to various opinions, is evolving in cycles or waves. Each such cycle can have clear specifications on how an IT solution works, how its users interact with it, etc. Sometimes the market will see certain features, such as centralized computation (as it was back in the mainframe era), changing -- for example, into a decentralized era of micro-computers and personal computers -- and then returning to their previous position, as was the case with cloud computing.
The age-old notion of MMI (man-machine interface), describing the way operators interact with their computerized tools, is also evolving in cycles. I clearly remember the phase when MMIs changed from being based on textual input/output using terminals into point-and-click graphical user interfaces (GUIs). For decades, starting with the second half of the 1980s, the majority of IT solutions transformed into GUIs, with IBM's OS/2, Microsoft's Windows and Apple's Mac OS playing important roles in this transformation.
I remember working on IT products during those years. We (the product engineering teams) firmly believed that our GUIs were differentiating factors between us and our competitors and how making our GUIs more feature-rich and flexible would contribute to the adoption of our products by potential customers.
Winds Of Change: Software-Defined Everything
Recently, we've seen a huge change to enterprise IT networks in the form of virtualization for networking, storage, computing and other IT resources. In the not-so-distant past, the difference between infrastructure and software was very clear: Infrastructure consisted of hardware (routers, switches, network cables, storage devices, appliances and servers), whereas software was installed on servers, appliances and endpoints.
The virtualization trend -- which VMWare started, followed by the introduction of infrastructure as a service (AWS, Microsoft Azure, etc.), as well as hyper-converged infrastructure -- has blurred the line between the infrastructure and the actual business software. In the world of software-defined data centers, both the infrastructure and the software that "run" on top of them are deployed, configured, monitored and consumed in a similar way. Processes that, in the past, were very distinct (purchasing, deploying and configuring hardware versus installing and managing business software) became intertwined and, in some cases, quite inseparable.
As allocating infrastructure became such an easy task, the trend of business software being elastic has emerged. Elasticity for business software means that it is aware of the fact that it is hosted on software-defined infrastructure, and, whenever more storage or compute is required, elastic business software expects to interact with its infrastructure and get such resources allocated for its needs on demand.
How Is It Related To User Interfaces?
"Appetite comes with eating," says an old proverb, meaning, in our case, that with the increased capabilities for a dynamic and flexible rollout of business software, the pace of its consumption in enterprises worldwide is constantly on the rise. The number of different business software solutions used by any enterprise is growing, and so is the amount of work related to rolling them out, provisioning and maintaining them.
One thing that cannot grow with this pace is the amount of human effort. One can't expect IT departments' headcount to grow at the same rate as the number of IT tools used in the enterprise.
The number of times when an enterprise IT organization needs to "spin off" a new set of servers for an application -- including storage, databases and other complex components -- is growing. Time to market, stability and repeatability are common requirements for such rollouts, making it impossible for them to depend on actions performed by human operators in graphical user interfaces.
Usually, such rollouts would require configuration changes to be made in multiple IT systems in a coordinated manner, with the human-error element playing a critical role in the quality of the end result. Repeating the same complex multistep process again and again only increases the chances for such an error. And what about the availability of the human operator to do it on demand?
As enterprise IT systems become more critical, the following capabilities are often required:
- A uniform audit trail for all configuration changes.
- Versioning and the ability to roll back to previous configurations (including visualization of differences between configuration versions).
- Documented approval cycles for software configuration changes.
- The ability to create exact replicas of environments for DR reasons.
While it is not impossible to support all of the above and more with GUI applications, having uniform support across all layers of business software and its infrastructure is very difficult, unless all elements of software configuration are treated as data and are uniformly managed using source versioning tools (Git) and are applied via APIs and automation tools (Chef, Ansible, Puppet, SaltStack) or infrastructure-as-code tools (HashiCorp Terraform). All these tools can integrate with hundreds of different infrastructure solutions to create a uniform automated deployment.
Should GUIs Be Gone For Good?
GUIs for IT/infrastructure tools should not disappear from the face of the earth. Instead, they should focus on business processes where a "decision support" provided by IT products for human operators will benefit the most from visualization, interactive navigation of complex data sets or anything else that could help comprehend or express complex notions (with the help of computer graphics). The "tell the computer what to do" things should not fall into this category.
What Should I Do About It All?
It doesn't matter if your organization has a cloud-first/cloud-only policy for adopting IT solutions or has adopted a conservative approach toward its IT infrastructure. We can offer one simple recommendation: When choosing IT/infrastructure/security solutions, favor those that have full automation capability.