The Problem of Complexity
The creation, maintenance and operation of enterprise information processing systems are too complex. These complexities, these problems, have been increasing with no end in sight. Complexity stifles innovation. As more and more efforts are drawn into sustaining this convoluted technology platform, less energy is directed at break-through or value-added improvements. Complexity, in and of itself, has the undesirable effect of increasing new and recurring costs. The recent trend of off-shoring information processing systems is a direct result of information technology complexity and, put cynically, with the goal of only minimizing the costs of the mess we are in, rather than fundamentally fixing it. Go to www.google.com and enter a search for “computer glitch” (a common term used to disguise the underlying complexities). Hundreds of thousands of incidents are reported across all industries and business sectors — with the majority going unreported.
On the horizon is a new technology, a new promise and a great idea called “Grid computing,” which intended to dramatically improve technology productivity. But unless it is approached in a fundamentally new way, we can expect only more of the same — complexity for the sake of complexity — and, once again, the technology industry will fall short in delivering the expected return on investment.
Implementing the Least Common Denominator
The information technology industry has been prolific in delivering new products and services. But the gap between what should be possible with technology and what the IT community actually delivers continues to widen at an alarming rate — to the dismay of everyone involved (be it the frustrated CEO, the under siege CIO, the overwhelmed manager or the uninspired technologist).
In the beginning, implementation and integration of enterprise information processing systems were fairly simple as new technology goes. However, as more and more manual processes were converted to automation, simplicity gave way to complexity, new solutions to redundancy, and new products to moribund processes. Layers of management and technicians grew around these systems in order to keep them viable. Even today, with each new system, enhancement and initiative, we continue to add to the quagmire. Although, these conditions prevail throughout the industry and end-user organizations, much of the complexity is masked by increased speed of the hardware and glitzy displays.
At the root of all this complexity lies a tremendous amount of software created by millions of programmers. Software is the “directed thinking process” of all these programmers, transferred into computer-executable code/logic.
It has been proposed that, at the most, 5-10 percent of professional programmers are extremely capable, while the rest (90-95 percent) need continuous directions from these superiors. What this means is that the “directed thinking process” of the least capable of programmers has been embedded into most of the software that exists today.
A Brand New Approach is Needed
The complexity of creating, maintaining and operating enterprise information processing systems will not be reduced as long as the aforementioned programmer quality ratio exists.
The conventional approach to solving this problem has been aimed at the 90-95 percentile: new computer languages, integrated development environments, tools for design, monitoring, debugging, profiling and modeling. It is assumed that the information technology industry and end-user organizations need to sustain all these programmers. What if we approached it differently?
A better approach would be to eliminate the 90-95 percentiles and concentrate on facilitating great work from the 5-10 percent of programmers who actually add value.
Leveraging the convergence of hardware capabilities and system interoperability, there is a very different (and better) path forward. Implementing a software architecture that is real-time, scalable, fault-tolerant, operating system/hardware independent, capable of interfacing with all other similar architected software, self-monitoring, upgradeable in real-time and, above all, simple to create is doable.
Every information technology organization, whether it's a large corporation, a department within a corporation, a small business, home network, etc., has the physical Grid — the networking and information-processing hardware resources.
Let's start with a few definitions.
A collection of networked information-processing hardware. “Networked” implies being able to communicate, by any means possible (wireless, Ethernet, token-ring, intranet, extranet, internet, etc.) to any/all other information-processing hardware in the collection. Information-processing hardware can be mainframe, server, desktop, single-board, embedded, etc. A collection can contain all of your computing resources, or just computing resources on the first floor, or human resources, or enterprise application, etc. Grid management software will exist on every information-processing hardware.
The ability to process information, by utilizing a Grid, with the Grid-aware software that resides on it.
Grid management and enterprise software — optimally designed — to take advantage of the total Grid resources available (memory, CPU, I/O). “Optimally designed” includes a Grid programming model that minimizes the number of application program interfaces and eliminates communications programming within Enterprise software. The central, cohesive element of this programming model is simplicity. All work accomplished is by commands flowing through a Grid.
- Keep it simple. The only way to reduce complexity is to reduce the number of decisions that have to be made. This entails a fair amount of dictatorship when designing an enterprise information processing system and the programming model that supports it.
- All software can be designed as “commands” executed by command processors. Where the resulting software executes and may create new commands executed by other command processors. The execution of a command provides feedback to the originator command. Programmers focus on creating the closed logic for a specific command.
- A “command” is a list of name/value pairs, which include all necessary variable information required to accomplish a specific, clearly defined task. In addition, command feedback is a list of name/value pairs. Example: a name could be “xml” and the value of this name can be an entire “xml” package.
- Command processors are externally assigned to operating system threads at runtime. One command processor to one thread. As many command processor — thread pairs, as necessary, may be assigned. One or more commands may be assigned to a command processor. Operating system constraints such as memory and/or number of resources will determine maximum configuration. In operating systems without a threading model, the control entity that is a dispatchable piece of work will be used.
- The minimum number of application programming interfaces are defined; grouped by initialization and command execution.
- Program/process initialization.
- Command initialization — identify every command created and executed.
- Enter command processing.
- Search/create/submit command.
- Insert name/value into command/feedback.
- Wait for feedback.
- Set/check exit.
- Log message.
A typical scenario; a command is allocated to a command processor for execution and becomes conscious:
- Search the command for required variable information.
- Create feedback.
- Search the command for required variable information.
- Create/submit one or more new commands.
- Wait for feedback.
- Search the feedback for required information.
- Create feedback.
Now, let's configure a Grid:
- Identify the collection of information-processing hardware for the Grid.
- Install Grid management software on each information-processing hardware.
- Using Grid management commands, configure the Grid into a hierarchical and fault-tolerant structure.
Your small office can have a Grid. Human resources, R&D department, first floor, home network, enterprise applications, etc., can configure a Grid. Individual information-processing hardware can be connected and disconnected to/from a Grid, dynamically, in real time. Grids can be connected and disconnected to/from each other, dynamically, in real time.
The design intent is to build powerful enterprise information processing systems. Yet, even if you have no enterprise systems running within a Grid, the built-in management capabilities are still available. Innovative use of these capabilities will provide uncomplicated solutions for many distributed computing environments:
- configuration — connect/disconnect/broadcast.
- file transfers.
- operating system commands.
- schedule Grid management commands.
- process scripts of commands.
Now, let's create a Grid-aware enterprise information processing system:
- Transform the requirements of an enterprise information processing system into a set of commands. (i.e.: getCustomerRecord, validateXML, formatOutput).
- Distribute commands and requirements to programmers for development.
- For production, distribute Grid-aware enterprise information processing system (collection of command processors) and start-up scripts onto the target Grid.
- Start up the enterprise information processing system. Individual command processors can be dynamically loaded/unloaded for scalability, load balancing and performance.
- Multiple enterprise information processing systems may co-process on a Grid. Systems may send commands to each other.
- Flowing commands may be intercepted, replicated and re-routed.
Why is Grid computing the future of enterprise information processing?
Grid computing is designed for change. Grid computing goes far beyond sheer computing power. Here are important business and technology benefits:
- Solve problems that were previously unsolvable.
- Improve optimal utilization of computing resources.
- Provide capacity for high-demand applications.
- Improve software development productivity with command processing.
- Mergers and acquisitions of Grid-aware enterprise systems are desirable.
Grid's can be viewed and managed as dynamic collections of information-processing hardware that expands and contracts to serve the business needs of the enterprise. Cost-effective, commercial, off the shelf, processors can be inserted into a collection when necessary.
Grid-aware enterprise information processing systems are rapidly prototyped, developed, deployed and maintained:
- All software is command driven.
- All software is real time.
- All software is dynamically scalable in real time.
- All software is fault-tolerant.
- All software is operating system and hardware independent (except in specific cases).
- All software is capable of interfacing with all other similarly designed software.
- All software is self-monitoring.
- All software is capable of being upgraded in real time.
- All software is simple to create.
About Michael J. Andrescavage
Andrescavage is an entrepreneur who is passionate about creating software. He brings to this enterprise over 35 years of architecture, analysis and development of Information Processing Systems. His expertise centers around large-scale distributed software architecture. He was chief software architect for USAF's Space Based Experimental Version (StarWars) in 1988. This was one of the first successful Grid computing implementations — long before the term acquired it's recent popularity. Previously, Andrescavage held software architect, analyst and development positions at Charles Schwab & Co. Inc., Computer Science Corp., FMC Corp., General Electric Aerospace (CIA, NSA, DEA, NASA, USA, USAF, NATO, ROK), General Accident Insurance, CIGNA Insurance and United States Air Force. Among the companies he has consulted with: Vanguard Investments, EDS, Exide and RCA. Andrescavage Software Inc. can be found online at www.gridNOW.com or www.andrescavage.com.