Archives
 
 
 
  Special
 
 
 
  About Us
 
 
 

Newsletter
Free E-mail Newsletter from BYTE.com

 
    
           
Visit the home page Browse the four-year online archive Download platform-neutral CPU/FPU benchmarks Find information for advertisers, authors, vendors, subscribers Request free information on products written about or advertised in BYTE Submit a press release, or scan recent announcements Talk with BYTE's staff and readers about products and technologies

ArticlesMiddle(ware) Management


April 1996 / State Of The Art / Middle(ware) Management

Don't panic! Middleware tips from the experienced can smooth over a project's bumps.

Salvatore Salamone

It's Monday morning. You arrive at the office, check your E-mail, and look over your to-do list for the week. There it is, staring you right in the face, the top item on your list: Implement middleware. Gulp.

If that's truly the top item on your list, you had better block out a substantial amount of time. While you're at it, block out a lot of time for your staff, too. Middleware projects are complex and labor-intensive, according to industry analysts and managers who have gone through middleware-implementation proj ects. Like any other application of technology to a problem, companies justify the expense of such a project claiming they will recoup their costs over time.

The key to a successful middleware implementation is keeping these costs down. How do you do that? That's the $64 million question these days. Because there are no shrink-wrapped middleware solutions and because middleware covers a broad range of technologies, there's no simple answer. However, following some general guidelines should help you complete a middleware project successfully.

Changing Times

Middleware should do several things. First, it provides a way to get data from one place (say, a mainframe-based database) to another (say, a PC-based office application). Second, it should mask the differences between OSes, platforms, and network protocols. Third, it should conceal the complexity of the network transport process from the applications developer.

That's the theory. However, when undertaking a middleware project, what companies face is a slew of acronyms in a rapidly changing market. Adding to the problem is a lack of standa rds. Perhaps even more troubling, you'll find very few skilled programmers with breadth and depth of knowledge about the variety of tools and technologies.

Large companies often employ dozens of applications, a handful of desktop platforms and OSes, and numerous database systems (many customer-written), running on a range of hosts. The idea that a simple piece of software can somehow tie all these disparate systems together (at the application layer, no less) is obviously absurd.

Middleware Goals

First, it's good to set some realistic goals before undertaking a middleware implementation. Understand at once: Middleware is an evolving technology.

We have moved beyond the original client/server notion of one client forever wedded to the same server. It used to be a one-to-one implementation--getting data from a DB2 database application running on an IBM mainframe into Excel spreadsheet cells on a user's Windows PC, for example. Today, as we move toward a more distributed c omputing environment, it's more likely that a client will need to connect to multiple servers and hosts.

At the same time, there's a more mixed client environment. In the recent past, it was common for all nodes on a network to be identical (e.g., PCs all running DOS). Today, you are likely to find several platforms, including Macs, PowerPCs, PCs, and RISC-based workstations. Even if you have only a single hardware platform, you may be dealing with two or three OSes (e.g., DOS, Windows 3.x, and Windows 95 on PCs).

Multitier Middleware

Second, the business applications at the heart of a middleware project are becoming more complicated. In the past, companies might have been content with access to data--period. Today, access is a given, a starting point. Companies want decision-support systems and advanced data-mining capabilities that squeeze more useful information out of the mountains of data residing on their hosts and servers.

Because of these changes, there has been a major paradigm shift in the way we use middleware. In the single-client-to-single-server days, you might use remote procedure calls (RPCs) from the client to the server. That portion of the middleware responsible for handling the transaction would reside on the client and the server. Such a system is called a two-tier middleware implementation.

Today, however, it is more common to see three- or even four-tier middleware implementations where intermediate servers also run part of a middleware program's code (see the figure "Tiering Up the Corporation" ). The move to a multitier architecture addresses two important issues facing middleware implementers today: complexity and scalability.

In the past, you may have used a single middleware technology, RPCs, for example. Today, it is likely you will need multiple modes of operation within a single architecture. This adds complexity to the design of a middleware system.

For example, consider a trans action where a customer makes a withdrawal at a bank's branch office. The withdrawal might involve a SQL query against a customer's balance. Middleware may have to interpret the syntactical differences between the SQL queries on the front-end and back-end systems.

Next, you need to make the actual withdrawal and must update the customer's account balance. You might do this using RPCs and a transaction monitor, which are well suited for such transactions.

Then, you might want to replicate the transaction to databases that are not on-line transaction processing (OLTP)--say, your decision-support system--which might not be available at the moment. To make the guaranteed modification would require a method such as that afforded by message-oriented middleware (MOM).

Skinny Clients

A third consideration pertains to the client hardware. One philosophy on performing all these application functions is to load the client up with the various stub programs required. However, industr y sentiment is inclining more toward a thin-client approach to middleware--the client has the minimum amount of code possible, and the intermediate servers handle many of the tasks.

The thin-client approach is gaining favor because it centralizes the complexity of a middleware application to a few servers that an IS staff can easily access. Additionally, the thin-client approach is better suited to large-scale deployment of middleware applications. Consider an application that changes frequently--an order-entry system for a company with seasonal merchandise or a tax-preparation system, for example.

With fat-client implementations, the client does most of the processing. Typically, a client will send a request for data using such common techniques as a SQL query or an Open Database Connectivity (ODBC) driver. The server returns the data requested, and the client does something clever with the data.

On the surface, this approach makes sense. Typically, you have clients with much processing power. Also, you have many users, perhaps hundreds of them, querying a single server. It makes sense not to burden the server with any additional tasks beyond data manipulation and processing SQL requests.

Still, there's a problem with such an approach to client applications design when the number of users grows. If you design most of the business logic into the front-end application that runs on the client, you will need to change the software on every client whenever there's a change in the business application (e.g., when the new season's products roll out or when they pass new tax laws). Software changes may even require souping up the client hardware with more memory or hard drive space. Updating every client is time-consuming, and the time required to perform this task grows as the number of clients grows--especially when you're dealing with geographically dispersed and mobile clients.

One way around this issue is to split the program logic between the client and an intermediate server (a la the three-tier architecture) so that the part of the application that changes resides on the server. In that way, changes are easier to manage.

Servers Beef Up

Our fourth point relates to the server side of the equation. A thin-client approach means the intermediate servers in a multitier middleware implementation must do more. Moving tasks to centralized servers has several advantages.

For one thing, you can give your users access to higher-powered functions than they would ever have using a two-tier system. For example, a sales manager might need to find out who the top five buyers are for the last quarter. A common way to accomplish this task is to have the PC send a query to the customer database requesting a list of the buyers' names and the amount each one spent in each quarter. After receiving this information, the client must calculate the total sales for the year and sort the data to come up with the top five spenders.

However, if your end users are running o lder PCs, they may not have the processing power or memory to carry out such a task. This is a simple example, but many applications require more data manipulation than a desktop--any desktop--can handle. For instance, you might need to join two large tables from different databases--a Microsoft SQL Server table on Windows NT and an Oracle database table on a Unix server, for example--to get at the information needed for a decision.

With a three-tier approach, you could design the system so that an intermediate server handles much of the heavy lifting. Such an approach has some practical business implications. You can make changes to an application quickly because it resides on only a single server and not on every client in the organization. Furthermore, you do not have to make changes on the system running the database (i.e., you do not need to rewrite custom applications running on mainframes).

Off-loading tasks from clients can also improve system performance by lightening the load on the ne twork. You can, for example, reduce the number of times that large database files must pass over the network for processing by a client. Instead, you can pass these files to an intermediate server that processes the data and passes only the results to a client. That lets you optimize a network's design so that large files pass only between servers and hosts. So, you can, for instance, design the network so the servers link over a high-speed backbone and clients remain on a lower-speed network, such as a 4-Mbps Token Ring or 10Base-T Ethernet LAN.

That said, you can probably still imagine a scenario where you would want a fat client--say, when you have hundreds of users hitting a single server with some compute-intensive decision-support query. Then you might want fat clients that logged in, cached data, and left the back end alone as much as possible for the rest of the day.

Mapping Success

The fifth point hinges on planning. With any middleware implementation, there are severa l logical steps to undertake (see "Six Steps to Middleware Success" ), including such things as settling on a middleware technology and developing a pilot project.

Who should be in the planning process? Almost everybody. The approach that seems to work best when evaluating middleware is to form a team that includes the applications developers who will be using the middleware, the networking folks who must provide the infrastructure the applications will ride on, and, of course, the end users of the applications developed using middleware.

The final consideration? Cash, of course. Even with good planning, implementing middleware requires a substantial commitment of money. Because there are so many variations when it comes to implementing a middleware solution, getting firm cost numbers that would apply to every situation is difficult.

Ford, one of the major automobile makers, estimates that implementing a middleware project costs between $150,000 and $200,000 per app lication. Of that amount, only 20 percent is for the actual product. The other 80 percent is for the labor of the developers.

Adding to the cost of implementing middleware is the cost of training. You'll find few workers with breadth and depth of knowledge across all middleware technologies to carry out a middleware implementation on their own.

Once a project finishes, you'll have to budget money for staffers to administer the middleware. Administering a middleware application is not trivial, yet most companies have no idea how much to budget when they are developing their implementation plans.

"When most users look at middleware, they typically underestimate the wherewithal it takes to effectively manage a middleware application," says John G. Senor III, vice president of the EDA Division of Information Builders. "There's no free lunch. Middleware requires a degree of administration like any other system software." Senor says a good rule of thumb is that it takes the same number of peopl e to administer middleware as it does to administer a database.

The best advice? Set realistic goals for a middleware project. Remember that middleware still doesn't handle everything. Even the most elegant solutions cannot deal with every client platform, OS, application, and flavor of back-end system and applications. At least now you have one less reason to cringe when you scan your to-do list.


WHERE TO FIND


IBM

Armonk, NY
Phone:    (800) 426-3333 or (914) 765-1900
Internet: 
http://www.ibm.com


Information Builders, Inc.

New York, NY
Phone:    (800) 969-5636 or (212) 736-4433
Fax:      (212) 268-7470
Internet: 
http://www.ibi.com


Intersolv, Inc.

Rockville, MD
Phone:    (800) 547-4000 or (301) 838-5000
Fax:      (301) 231-7813
Internet: 
http://www.intersolv.com


Momentum Software Corp.

Englewood, NJ
Phone:    (800) 767-1462 or (201) 871-0077
Fax:      (201) 871-0807
Internet: 
http://www.momsoft.com


Novell, Inc.

Orem, UT
Phone:    (800) 453-1267 or (801) 222-6000
Fax:      (800) 668-5329
Internet: 
http://www.novell.com


PeerLogic Inc.

San Francisco, CA
Phone:    (800) 733-7601 or (415) 626-4545
Fax:      (415) 626-4710
Internet: 
http://www.peerlogic.com


HotBYTEs
 - information on products covered or advertised in BYTE


Six Steps To Middleware Success


1 Set
 realistic goals.


2 Use
 a multitier architecture.


3 Use
 a thin client.


4 Centralize
 tasks on the server as much as possible.


5 Bring
 a wide circle of developers into the planning pr
ocess.


6 Make
 a detailed cost analysis--the final total will be mostly labor
   costs.




Middleware Solution Finder

                              
APPROPRIATE
TASK TO COMPLETE          MIDDLEWARE SOLUTION          WHY THIS WORKS



Task 1

Develop distributed       SQL/remote procedure calls   A common solution. Many
client/server database    (RPCs).                      products available. Good
application.                                           way to partition large
                                                       C applications.

Task 2

Connect widely            Message-oriented             The nature of MOM means
dispersed applications.   middleware (MOM).            applications that send
                                                       messages are not blocked
                                                       while waiting for a

                                                       response.

Task 3

Develop on-line           Transaction processing (TP)  TP monitors provide
transaction processing    monitors.                    message-queuing
(OLTP) application.                                    transaction features,
                                                       load balancing, and backup
                                                       and recovery services.



TASK TO COMPLETE          THINGS TO CONSIDER           EXAMPLES OF PRODUCTS



Task 1

Develop distributed       RPCs work best in            EDA (Information
client/server database    simple setups but            Builders), DataDirect
application.              often lack the flexi-        and SmartData (Intersolv)
                          bility developers need
                          for complex client/server
                          environments.

Task 2

Connect widely            Implementing a MOM-based     X*IPC (Momentum
dispersed applications.   solution requires that       Software), Pipes
                          a developer have a           (PeerLogic)
                          higher level of
                          sophistication compared
                          to RPC solutions.


Task 3

Develop on-line           Standards for                Tuxedo (Novell),
transaction processing    distributed TP monitors      CICS (IBM)
(OLTP) application.       are still evolving.





Tiering Up The Corporation

illustration_link (17 Kbytes)

A multitie r approach to middleware reduces administrative costs because it is easier to manage centralized servers instead of upgrading clients every time an application changes.


Salvatore Salamone is a BYTE news editor based in New York and author of Reducing the Cost of LAN Ownership (Van Nostrand Reinhold, 1995). You can reach him on the Internet or BIX at ssalamone@bix.com .

Up to the State Of The Art section contentsGo to previous article: Go to next article: The Ultimate MiddlewareSearchSend a comment on this articleSubscribe to BYTE or BYTE on CD-ROM  
Flexible C++
Matthew Wilson
My approach to software engineering is far more pragmatic than it is theoretical--and no language better exemplifies this than C++.

more...

BYTE Digest

BYTE Digest editors every month analyze and evaluate the best articles from Information Week, EE Times, Dr. Dobb's Journal, Network Computing, Sys Admin, and dozens of other CMP publications—bringing you critical news and information about wireless communication, computer security, software development, embedded systems, and more!

Find out more

BYTE.com Store

BYTE CD-ROM
NOW, on one CD-ROM, you can instantly access more than 8 years of BYTE.
 
The Best of BYTE Volume 1: Programming Languages
The Best of BYTE
Volume 1: Programming Languages
In this issue of Best of BYTE, we bring together some of the leading programming language designers and implementors...

Copyright © 2005 CMP Media LLC, Privacy Policy, Your California Privacy rights, Terms of Service
Site comments: webmaster@byte.com
SDMG Web Sites: BYTE.com, C/C++ Users Journal, Dr. Dobb's Journal, MSDN Magazine, New Architect, SD Expo, SD Magazine, Sys Admin, The Perl Journal, UnixReview.com, Windows Developer Network