How can I tell if a system is built upon a service oriented architecture when reading its source code?
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)

- 5,220
- 24
- 32
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.

- 9,807
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.

- 4,209
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 09:29