Java Reference
In-Depth Information
A
B
A
B
Small
server
Small
server
C
Big server
Small
server
Small
server
D
C
D
Client
Client
Figure 10.3 If all your services exist on one big server, then maintenance to any of them can break a
client. In this case, the client only needs to access services A and D, but suffers an unnecessary outage
whenever B or C needs updating. If the services all exist on separate servers, then the client can continue
to operate even if B and C are no longer available.
Remoting allows you to separate services onto different machines so that they can be
more independently maintainable; you can even think of this as being like modularity.
If all of your services are tightly coupled (by being on the same machine), then you
have problems making a change to any of them. Furthermore, having the services on
different machines makes it easier to decouple them, meaning that horizontal scaling
for performance or reliability in the future will be much easier (see figure 10.3).
Sometimes availability concerns cut both ways: not only is it necessary for a service
to be accessible independently of another, but sometimes you may not want a service to
be accessible from the outside world.
PROTECTING ACCESS AND ENCOURAGING CO-LOCATION
Computing systems are a large investment, and almost always contain sensitive data or
provide a mission-critical function. As a result, they need to be protected from exter-
nal influences, both malicious and poorly written ones. Firewalls are a vital piece of
infrastructure in enterprise networks, preventing access from one area of a network to
another, except for specific, configurable types of traffic. It's extremely rare for an
enterprise system, such as a corporate database or server room, not to be protected by
one or more firewalls.
Using firewalls is essential, but it does cause some problems. If the Fancy Foods super-
store protects its database behind a firewall and users can't access it, then it won't be
Search WWH ::




Custom Search