Thursday, October 15, 2009

Where You Have to Distribute



[ Team LiB ]









Where You Have to Distribute


So you want to minimize distribution boundaries and utilize your nodes through clustering as much as possible. The rub is that there are limits to that approach�that is, places where you need to separate the processes. If you're sensible, you'll fight like a cornered rat to eliminate as many of them as you can, but you won't eliminate them all.



  • One obvious separation is between the traditional clients and servers of business software. PCs on users' desktops are different nodes to shared repositories of data. Since they're different machines you need separate processes that communicate. The client�server divide is a typical inter-process divide.


  • A second divide often occurs between server-based application software (the application server) and the database. Of course, you don't have to do this. You can run all your application software in the database process itself using such things as stored procedures. But often that's not so practical, so you have to have separate processes. They may run on the same machine, but once you have separate processes you immediately have to have to pay most of the costs in remote calls. Fortunately, SQL is designed as a remote interface, so you can usually arrange things to minimize that cost.


  • Another separation in process may occur in a Web system between the Web server and the application server. All things being equal it's best to run the Web and application servers in a single process, but all things aren't always equal.


  • You may have to separate because of vendor differences. If you're using a software package, it will often run in its own process, so again you're distributing. At least a good package will have a coarse-grained interface.


  • And finally there may be some genuine reason that you have to split your application server software. You should sell any grandparent you can get your hands on to avoid this, but cases do come up. Then you just have to hold your nose and divide your software into remote, coarse-grained components.



The overriding theme, in Colleen Roe's memorable phrase, is to be "parsimonious with object distribution." Sell your favorite grandma first if you possibly can.







    [ Team LiB ]



    No comments:

    Post a Comment