Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

How can I tell if a system is built upon a service oriented architecture when reading its source code?

share|improve this question
add comment

3 Answers

SOA is an architecture style, and so, the intend is more important than the code. Who says, the code you think is SOA-Style does not get refactored the next iteration? Generally, i would expect, it's easier just to ask the architect.

That said, ideally (i.e., when intend and source match), the following apply:

  • The Source Code of the whole Project is split into very independend units that can be deployed 'standalone', i.e, without the rest beeing deployed. These are the services.

  • Such a service would have an Interface to the external world, as a means of communication with other services. For Examle, a Date Service could answer under the url http://example.com/current_date something like {"year": 2011, "month": 8, "day": 29}.

  • Except for it's interface, a service is a 'black box' to the other services. All communication is done over these interfaces. In particular, there is no shared database.

  • When designed as SOA from the start, one would expect the same technology to be used for most of the interfaces. 'SOAP' and 'RPC over HTTP/JSON' would be examples for such technologies.

(EDIT: cleaned the answer a little)

share|improve this answer
    
Thanks for your answer Keppla, If it possible I would go to the system architect and ask him/her directly. But what if you have 100 independent systems, and not able to contact the architects, and the only input you have is the source code of those running systems??? Another Q: what you meant by saying: most of these Services use the same technology for their "Interfaces". What is service Interface? How to determine one? Thanks in advance, –  Zain Aug 31 '11 at 9:29
    
@Zain: Sounds like you inherited a big legacy. Why is it, you want to know if it's SOA? I mean, regardless of the architect's intend, you have to deal with it anyways :). If it's your job now, and the intend of the design is not clear, do as you think, don't think of the original architect as smarter. after all: if his design would be so good, you would not ask what it is :) –  keppla Aug 31 '11 at 10:02
    
@Zain: I cleaned the answer a little to fit your follow-up question. When you design Services, you would not reinvent how they communicate for each service. For example: if you have a service, that provides the date via HTTP/Json, and another that provides your Articles via HTTP/Json, you would not use XML via TCP out of the blue to provide, say, User comments. That is something i would expect to see, when you glued together some existing peices of software, that already have interfaces, but are not from the start planned as Services. –  keppla Aug 31 '11 at 10:03
add comment

Normally, unless you are the person responsible for it you are not required to know it. You may not see anything in the "code" but rather in configuration files. If you spot configuration files on how to communicate with remote services, for example with an ESB, or as @keppla said via RPC, SOAP, then there are chances that some form of SOA-architecture is used - at least - between these two components.

But if you really want to know though, you may ask the architect, or the IT manager, they should know.

share|improve this answer
add comment

If the system makes numerous calls to services which encapsulate their own logic and are defined only by their contract (parameter types and operations), then it is likely a service oriented system.

If the system doesn't make any calls to external services, then it's not a service oriented design.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.