Interoperability
First of all most: SOA projects involve interoperability. This is only natural and part of the nature of SOA.
However make sure the interoperability part is not in the center of the architecture. Ie. avoid a Java ESB when working in a .Net environment.
In general when starting a new project, one thing to be aware of is interoperability.
When a service is down
Secondly consider what happens when one of the services you depend upon is "down". At some point during production a service you depend upon is not working.
For one of the following reasons:
- Down for maintainance
- An error has happend
- The service has been deprecated
Scenario 1:
Maybe a system is "suddenly" exposed through a service, and this system has never been used for this kind of SLA before. Ie. We had an administrative system that was almost down the entire weekend, which was no problem in the past, since noone worked on the administrative system in the weekend. But in our SOA we exposed this system through a service, that was indirectly used by our website, and our website had a whole different SLA than our administrative system.
Scenario 1 and 2 should be treated the same way if possible.
What about loging and tracability.
Since you system is composed of many sub-systems tracing and loging is going to be a lot harder.
Make sure you consolidate your logs and trace targets so logning is centralized and the IT Pro guys are not gonna hate you.
Statistics
Well you have just implemented this new expensive SOA, management are probalby going to want to see that they get bang for the bucks.
Deployment
Well you have made this big system composed of many services, how are you gonna deploy it?
To create a re-producable deployment is not easy, especially not when your system consists of many subsystems, maybe even i different technologies.
Backup
Naturally a new system should be backed'up.
How easy can you get your SOA up and running after a disaster.
Naturally the importance of backup depends on how mission critical your system is.
Test
Never forget to test you system, and loging, tracing and statistics.
You would definetly want automated integration test suites for these scenarios