I am studying SOA architecture and I am bit confused, googling there are many definition of that, many technologies are involved and here my doubts start:
If I got correctly these are the principles for a system to be SOA:
- Use Open Standard: XML, WSDL, WS Security. About WSDL, it is important because integrating different services (typically Web Services must expose them contract? Then If I got BPEL usage is just a process that uses contract of services to permit communication between them.
- Be Modular
- Use ESB : (This seems to be a must, even for services that don't need to communicate via it.. This introduces my first doubts.. if a service is exposed as Web Service expose his own WSLD that enables interoperability, why the ESB should be used as a must?
- Then comes BPEL, is BPEL a language to orchestrate services interaction each other? Something like Orchestration in Saga Pattern?
- Increase interworking between services as much as possible (different than the principles of Microservice Architecture)
- Adopting previous (old) enterprise application that usually are very old, a SOA is frequently based on services using traditional relational database
Maybe point 5 and 6 are consequences than rules to follow...
Tks