One of the best ways to understand how to apply a new technique is to build a simple system. For our purposes, that system is the Restbucks coffee ordering service, which allows remote customers to lodge their coffee orders with the Restbucks server. Our goal here is to understand how application code and server infrastructure fit within the overall solution.
Though services and service-oriented architecture often seem arcane, in reality a service is nothing more than a technical mechanism for hosting some business logic. The way we allow others to consume services—business logic—over a network is the core topic of this book, and we think the Web is the right kind of system to support networks of collaborative business processes.
While the Web gives us infrastructure and patterns to deal with connecting systems together, we still need to invest effort in designing services properly so that they will be robust when exposed to remote consumers and easy to maintain as those consumers become more demanding.
Choosing integration points is not difficult; we look for appropriate modules in our software through which we expose business-meaningful functionality. To illustrate, let’s look at the example in Figure 3-1. Although the example is (deliberately) simplistic, it shows a logical architecture, with customer software agents interacting with Restbucks to place orders. To support this scenario, we have to expose existing ...