We often refer to services that we're using on an everyday basis, such as
airline reservation or Gmail or websurfing, as
giant scale services, as opposed to the services
that you get within your organization. Example,
a file server. There's a later module in
this course called Internet Scale Computing, and
in that we will discuss programming models and
resource management issues for providing such giant
scale services. The focus of this point
however, is to show how object technology
facilitates structuring such services. Let's look at an
example to put things in perspective. Let's
say you want to purchase a round trip
ticket to go from Atlanta to Chennai, India. With a few clicks, you can send
your request over to a portal such as Expedia.
And Expedia then goes to work for you. It
contacts a whole bunch of different airlines, gets the
best options that are available from all these different
choices, and then it comes back to you with
a bunch of options. Now you may take your
own sweet time deciding which one of those you
may want to pick, based on cost, perhaps convenience, guarantees.
For example, you don't want your baggage to end
up in Timbuktu. So, based on all of that,
you may want to make a decision. Maybe you
have to talk to your spouse or significant other,
siblings, children, so on, in order to make the final decision. Finally
you decide, then commit to buying the ticket, and then Expedia
will complete the transaction based on the choice that you made. And you get
your ticket and life is good. Well, not so fast. While you are busy
procrastinating with your choices, there's another person
who is planning almost an exact similar trip
to yours. Same dates, same constraints, same destination, and so on. And you can
immediately see that, without your realizing, you
are actually competing for resources. In this case,
a physical resource, a seat on a
particular flight going from Atlanta to Chennai, India,
with others that you don't even know exist
on this planet. Therefore, the service provider, in
this case multiple enterprises involved, Expedia and
all the airlines together, that are handling your
request, they all have to work together to
make sure that the result, any resource conflict
that might occur between simultaneous requests across space and time coming from
several different clients. So all the issues that we've discussed in the
context parallel and distributed systems, synchronization,
communication, and immediacy of actions, concurrency,
all of these become important. And they surface in this very simple
example across space and time. And
additionally, all services need some common features.
For example, a shopping cart on your browser. And in fact, even though this
particular example is illustrating an airline
reservation, if it comes to booking a
ticket on a train, or getting hotel reservation, or booking tickets to go see
a game, all of those things have similar
requirements. And many of them are probably repeatable.
And many of them, such as the shopping
cart in this example, are features that might be
needed even if the services that you're talking
about are completely different, such as an airline reservation
and hotel booking. So since the same issues
crop up in the implementation of each new service,
we don't want to reinvent the wheel every time. This
is where object technology comes in, the power of reuse of components.