Service-Oriented Architecture


Service-oriented architecture is a buzzword. It is all about 1. Loose coupling 2. Modular programme 3. connected components using various protocols over IP. SOA is the philosophy of encapsulating application logic in services with a uniformly defined interface and making these publicly available via discovery mechanism. Let's look at some more aspects about SOA

Core Values
  1. More focus on 'business value' compare to 'technical strategy'
  2. So more focus on 'strategic goal' compare to 'project benifits'
  3. The components should have 'intrinsic inter-operability'
  4. More importance to 'shared services' compare to 'implementation for specific purpose'
  5. Flexibility is more important compare to optimisation
  6. Here, 'Evolution refinement' is more important compare to 'initial perfection'
SOA is similar to 1. Modular programming 2. Distributed computing 3. mashups 4. SaaS and 5. Cloud computing. Still it is different. SOA has 11 principals. 

1. The service contract should be standardized. That includes functional expressions may be using WSDL. Data model may be using XML schema and 3. Policy document. 

2. Reference autonomy standardization : The other components are merely aware about presence of other service component. It fosters the loose coupling

3. Service Location Transparency : Service can be executed, deployed anywhere. 

4. Service Longevity : Service should run for ever. It also means backward compatible implementation. 

5. Service Abstraction means the service is jut a black box. (1) The functional aspects of service (2) Technical information (3) Logic / Algorithm and (2) Quality of service, all these are hidden. 

6. Service autonomy : It means, service should be more predictable, reliable and less depends on external environment.  Run time service autonomy achieved by dedicated CPU and memory so external environment has lesser impact. Design time service autonomy means, service can be evolve and re-design without impacting consumers. More applicable to entity service and utility service. 



7. Service statelessness: The service is implemented as stateless. However it can take support for other system to maintain state. Service may need to maintain state about (1) Context data (2) Business data and (3) Session data. 

8. Service granularity define the scope of service. It impacts performance and message size for the service. 

9. Service normalization is trade off between redundancy and performance 

10. Service composability  A service can play two role here (1) Service controller and (2) Service member 

11. Service discovery : Using service discovery protocol 

12. Service re-usability : The service, which is part of multiple business processes is more reusable. The service with extra functionality will be reusable in future. 

13. Service encapsulation: The service not part of SOA, initially. 

Each SOA building block plays any of the three roles

1. Service provider

2. Service broker = service registry = service repository

3. Service consumer = service requester

Implementation

SOA can be implemented in multiple ways

1. SOA can be implemented using any service based technology. It can be web services using SOAP+WSDL or RESTful protocol. It can be using (1) Jini and JBI (2) CORBA (3) REST (4) WCF

2. Messaging technology can be used (1) ActiveMQ (2) JMS (3) RabbitMQ

3. OPC-UA is a M2M protocol. It can be web service oriented. It can be binary protocol over TCP/IP. It can by hybrid approach of binary protocol over SOAP. 

4. Apache Thrift is a RPC based framework by FaceBook. It provides IDL and binary protocol. 

5.  SORCER is Java based distributed computing platform, for service oriented computing environment. 

6. The programming language like C# .Net, Java, BPEL also has support for SOA

7. WS-CDL and WS-Coordination Specifications extend SOA further for workflows and business process.

Service Oriented Modelling

In SOA framework, Service Oriented Modelling identifies various disciplines to conceptualize, analyze, design, and architect service-oriented assets. Here three approaches are identified


1. SDDM: Service-oriented design and development methodology

2. SOMA: Service-oriented modeling and architecture

3. SOMF: Service-oriented modeling framework. It is about what to do. 

Extension and variants

SOA can be further extended with various variants

1. SOA 2.0 is combination of SOA and EDA. Event Driven Architecture. It has three components. (1) Event emitters (agents) (2) Event consumers (sinks OR event processing engine) (3) Event channel. It can be (3.1) message oriented middleware or (2) TCP/IP link (3) File: XML, flat file, or even e-mail. 

2. Web 2.0 has same philosophy as SOA, but it serves different user needs. 
3. Microservices : (1) Fine grained services may be a process of OSGi Bundle (2) Light weight protocol may be HTTP or shared memory. Results in continuous software development process. Jolie programming language allows to think and program in terms of microservices. The complexity moves to network as (1) network latency (2) message format (3) load balancing and (4) fault tolerance

I hope, the readers like this overview of SOA.