Jeff. Davis

Author
+ Follow
since Jun 01, 2009
Merit badge: grant badges
For More
Cows and Likes
Cows
Total received
In last 30 days
0
Forums and Threads

Recent posts by Jeff. Davis

You touched on a very good, and often overlooked issue! To be honest, I don't get too much into that, except in the chapter on Synapse were I briefly describe how it can be used for versioning of services. I might suggest taking a look at the Thomas Erl book that recently came out, "Web Service Contract Design and Versioning". It covers this topic in some detail.

Thanks,

jeff
15 years ago
Sorry, I had mistaken what your second question was :-(. No, I don't really assume the reader has much familiarity or background with SOA. In fact, the first chapter attempts to give the reader the general principles and benefits surrounding SOA. That said, I do assume that the reader is familiar with Java and XML, with some understanding of web services in general (though a .NET C# or Ruby developer could probably follow right along). The book is really less on the theory side and more on the implementation side, so there are lots of codes samples etc.

Hope that helps!

jeff
15 years ago
Chapter 2 of my book provides the rationale for why I had selected those products. In part, its based on my own experiences with various open source products; the licensing used; the community base and project activity; the completeness of the solution; and, lastly, how well they can be integrated together to form a complete "OpenSOA Platform". I do recognize that there are a variety of open source offerings in most of the categories I cover, but I could only feasibly cover one product for each category, so some difficult choices had to be made.

Since the book is about building a SOA platform using open source products, I do place particular emphasis on how to service-enable many of the products that I cover. For instance, I provide guidance for how Apache Tuscany (an implementation of the Service Component Architecture, or SCA) can be used to expose JBoss jBPM, Esper, and JBoss Drools as services.

Thanks,

jeff
15 years ago
That's a good question about centralizations vs. decentralization of services within SOA. Decentralization isn't a requirement for SOA, but certainly it becomes more feasible when adopting the principles of SOA. For example, if you can successfully build stateless, interoperable (i.e., typically SOAP or RESTful), loosely-coupled services, you then have great flexibility as to where those services reside. They could reside all on a single app server, for small environments, or be distributed throughout the cloud. Of course, decentralization brings with it some management complications, but tools such as Nagios or Hyperic can help monitor the uptime of the services (and Esper, the complex event processor covered in the book, can help identify any unusual activity or behavior).

As for the question about my experience, I've been solutions architect primarily within the Java enterprise software world for a good part of the past decade. My initial experience with SOA began using commercial products offered by vendors such as Fiorano, Progress and CapeClear. However, I soon had come to the realization that many of the emerging open source products at that time had a lot of equivalent capabilities. Further, as open source products matured, their user base soon greatly exceeded those of the commercial vendors. Such a community of users helped greatly improve the open source alternatives, so much so that I found them to be far more stable and well-supported than their commercial cousins (well supported by forums, mailing lists, and often the sponsoring companies support offerings). As commercial vendors have now either been swallowed up by Oracle or gone out of business (like CapeClear), I think it's become apparent that the open source approach really is, in many respects, less risky. This is particular true when working with popular open source products such as those covered in my book -- they have a large community of users you can tap into.

Hope that answers your questions!

jeff
15 years ago
I would agree with one of the posters, Tomas Erl's books are a fantastic resource in their coverage of SOA patterns. In the first chapter, I do address what I consider to be some of the characterists of what constitutes a good services, but I don't go deeply into that. Instead, my book is more of a practitioners guide for how to use and integrate the various products I cover.

jeff
15 years ago
Good observation -- you're right, I don't specifically cover web services framework, per se, such as Metro (JAX-WS) or Apache CFX. Instead, that is where Apache Tuscany comes into play. It is an implementation of the Service Component Architecture (SCA), and it provides the ability expose services through a variety of bindings, including SOAP, REST, RSS/ATOM, RMI, EJB and some others. What is novel about the approach is that, when you build the service, you don't specify or include any protocol specific code. Instead, that is done declaratively through some XML files (i.e., that is how you specify which binding to expose your service). I really prefer this approach, as I think it brings great flexibility.

Thanks,

jeff
15 years ago
The "OpenSOA Platform" that is described in the book probably shares many similar features to what is offered by IBM. For example, IBM is a major supporter of the SCA initiative, and I believe that technology is now integrated into their SOA offering. The OpenSOA platform also uses SCA, in this case the Apache Tuscany implementation. I'm not intimately familiar with IBM's offerings, so I can't comment to specifically.

As for BPEL, my book advocates using JBoss jBPM in lieu of BPEL. Why? In part, it's because BPEL is really oriented around orchestrating SOAP-based web services. JBoss jBPM, on the other hand, is not tied to SOAP, though I describe how jBPM processes can be invoked via a SOAP call, as well as act as a client in consuming SOAP services. Additionally, jBPM, as a true BPM solution, is very strong in its support for human interface tasks -- something the BPEL standard has only recently begun to address.

jeff
15 years ago
I believe he's referring to Event Stream Processing (ESP), which is really just another term for Complex Event Processing (CEP). In my book I document the usage of Esper, which is an outstanding open source CEP implementation. How does CEP pertain to SOA? An excellent discussion of this is provided in this  article[/url].

In the book, I describe an approach to service-enable Esper so that it can receive events via a web services call (such as through SOAP, REST, JMS etc). While SOA brings with it many benefits, one of the downsides is how to manage a proliferation of services distributed throughout the cloud. If the services emit events to a CEP as they are invoked/consumed, this helps manage your services infrastructure by identifying when anything abnormal occurs. It can also provide critical insights as to what services are being used most, and by whom.

Hope that helps!

jeff
15 years ago
Thanks for the question!

What I am referring by "Open Source SOA" is how to create a SOA technology platform (you are correct, SOA is more than technology, obviously) using completely open source products. The product categories I use, such as BPM, service component frameworks, ESB etc., when surrounded by the proper governance and policies, either can contribute towards helping you implement SOA or can benefit significantly by adopting SOA. For example, I provide some use cases on how a business rule implementation using JBoss Rules/Drools can be exposed as "decision services". Thus, while business rules themselves may not be directly related to SOA, adoption of business rules can be advanced by implementing them in a fashion consistent with SOA best practices.

We actually debated on whether the book might be more aptly titled "Open Source Enterprise", because it describes how enterprise-caliber open source products can be integrated together using the underlying principles of SOA as the foundation.

Thanks,

jeff
15 years ago
In the sections of the book where cover the SCA framework and Apache Tuscany, I do describe how conversational services can be supported. However, an important caveat to remember is that such stateful services generally aren't considered best practices, as it introduces a lot of complexity to the backend service implementation, in particular how it relates to scalability.

Thanks,

jeff
15 years ago
I touch on security a little in the book, but it certainly isn't a focus (that's not to suggest it's not very important, just that it was outside the scope). Primarily, I touch on security during the discussion of Apache Synapse, where I demonstrate how it can be used for handling WS-Security for SOAP-related web services. I also describe its features as it relates to monitoring and managing service levels, which enables you to restrict how many API operations a given customer can invoke within a given period along with some firewall-type capabilities it provides. In the chapter on Esper, I point out that it can be used to monitor for any unusual activity that may be occurring, such as an unusual number of requests or other tell-tale signs that your enterprise may be under attack.

Thanks,

jeff
15 years ago
I agree, soapUI is a very nice open source product for testing both SOAP and RESTful web services. You can construct test cases/suites in it, and even use it to act as a server for mock-requests (they offer a commercial alternative that has a few more bells-and-whistles). In many of my examples in the book I have soapUI integrated in with ANT for testing of the example services (i.e., you run an ant target that will automatically launch soapUI along with the appropriate project).
15 years ago
Great question! I think cloud computing is really an enabler for SOA. After all, SOA is about building reusable services that can be deployed within a distributed fashion, and a cloud represents a great choice for doing that. In my book, I describe how Apache Synapse can be used as a service mediator to really provide endpoint transparency as to where the service actually resides. In other words, using something like WS-Addressing, the client can send a service request, which Synapse fields and then forwards to the actual endpoint location where the service resides, which could be anywhere in the cloud.

I'm a huge fan (and user for many years) of the cloud work being done by Amazon, and have been playing recently with the interesting work being done on the Eucalyptus project (http://www.eucalyptus.com/), which provides the ability for private clouds following the same API-style interface that Amazon uses.

15 years ago
Yes, you're right SOAP is but one way that services can be exposed. A lot of people are using RESTful style services to build their service platform. In the Java world, you may find it sufficient to use just plain old XML (POX) over JMS. SOA certainly doesn't equal SOAP, though that seemed to be the focus years ago when the term first emerged.

In my book, I describe how Apache Tuscany, an SCA implementation, can be used as a framework for building components and exposing them as reusable services that multiple different bindings, such as SOAP, REST, RSS etc. (Obvoiusly, there are other outstanding SCA frameworks such as Fabric3).

jeff
15 years ago
Obviously, I think you can build services using a variety of frameworks, and so SCA is certainly not a requirement for SOA. That said, I think SCA has some very compelling features as it relates to assembling services through reusable components; supports a broad-range of bindings so that services can be exposed over SOAP, REST, JMS, ESB, RMI, RSS/ATOM, JSON etc; and has a powerful distributed deployment model. I don't think SCA is all that complicated to get started with, and hopefully my book addresses that through its case studies and examples.
15 years ago