By Michael J. Andrescavage, Andrescavage Software
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.
Here's How
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.
Grid:
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.
Grid computing:
The ability to process information, by utilizing a Grid, with the Grid-aware software that resides on it.
Grid-aware software:
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.
Command processing:
-
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.
Initialization:
-
Program/process initialization.
-
Command initialization -- identify every command created and executed.
-
Enter command processing.
Command execution:
-
Search/create/submit command.
-
Insert name/value into command/feedback.
A typical scenario; a command is allocated to a command processor for execution and becomes conscious:
-
Search the command for required variable information.
Another scenario:
-
Search the command for required variable information.
- Create/submit one or more new commands.
- Search the feedback for required information.
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.
-
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.
Summary
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.