Question

I have seen quite a lot of instances where the term "Web Services" & "Service Oriented Architecture - SOA", have been used interchangeably. But, I am sure a lot of you would agree that they are just not the same, where "SOA" is way beyond and a lot more than just "Web Services"!

Nevertheless, going to my question(s), being a small company that we are as of now, we have this new business to provide a bunch of web services - to external clients (other companies). So, I have the following questions in mind, in this regard:

1) Should we just concentrate on developing these bunch of web services (Java, Spring) and deploying them independently and deliver to the clients to begin with, or should we also consider bringing them all together and providing means for web service governance by using SOA infrastructures like Mule ESB, Apache ServiceMix, etc.

2) Is it a lot easier and less resource-intensive (effort-wise and money-wise) to consider SOA infrastructure right from the beginning or is it going to be almost the same even if we defer it to sometime later? I just want to make sure that we do not over-engineer and so I am not sure if SOA is an over-kill or it really worth the time and investment, from the beginning?

3) Do SOA infrastructures offer better performance with High Scalability and Low Latency, as compared to deploying the web services independently just like any web application? I sometimes wonder that doesn't all this additional infrastructure for SOA add to latency?

4) I have heard of several SOA infrastructures like Apache ServiceMix and Mule ESB, which I guess are open-source while there are other licensed solutions like the Oracle SOA suite, and IBM DataPower. Are they all equally good or is there any best choice? I also wonder if ESB/Service Bus is a part of every SOA infrastructure or is it something different?

5) Do you have any other suggestions/tips for me to consider as an Web-Services and SOA Evangelist?

6) Does Spring-Integration provide any means for SOA? Can you please direct me to some examples?

Was it helpful?

Solution

This is a quite broad and subjective question . The key question to ask is what value would an ESB provide that your applications cannot deliver. The answer depends on your use case and you existing technology eco system . For example if you use legacy technologies that doesn't provide web-services ground up, then having an ESB infrastructure will help you quickly "web service enable " .

You might also want to use ESBs to act as a proxy that apply the ACL rules or encryption or security controls . Certain ESB ( Appliances ) provide FIPS-140-2 controls , intrusion detection etc that you may on may not need .

ESB does provide significant governance and operational/ monitoring capabilities out of the box , especially if you are using the web service (SOAP/WS-* ) services .

Scale and Latency is not a function of ESB itself but , it depends on what product and how it is implemented . You could implement a highly available and scalable web service endpoint without an ESB . However there are certain appliances ( Data power , Intel ESG etc ) that provide significant hardware acceleration to certain process ( e.g. XML/XLST etc )

Another aspect of using ESB is to understand who your consumers /providers are . Are you looking at dealing with different protocols with different consumers /providers . Are you required support multiple payload types ( XML , JSON ) . I would also says that its not necessarily to have an ESB to meet these requirements but it might make it little it easier for you to have the business app do only implementation of the service and ESB offer various end points depending on the needs of the consumer .

Most importantly SOA is an Architecture pattern not a single product. There is nothing that says "SOA" means ESB , you could very well design a spring integration or Apache Camel based application that is service oriented , scalable and flexible

So that's some of the advantages of using ESB and here's some links as to why you shouldn't use one

Slideshare PPT

Eric's Blog

Since you getting started on Services , another aspect you might want to make it Restful Vs SOAP based services . There's lot of content on the net , following are some links to get you started .

Hope that helps.

http://www.ibm.com/developerworks/webservices/library/ws-restful/

http://martinfowler.com/articles/richardsonMaturityModel.html

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top