Service composability principle: Difference between revisions

Content deleted Content added
Short description
 
(21 intermediate revisions by 15 users not shown)
Line 1:
 
'''Service Composability''' is a design principle, applied within the [[service-orientation]] [[design paradigm]], which encourages the design of [[Service (computer science)|services]] in a manner so that they can be reused in multiple solutions that are themselves made up of composed services. The ability of the service to be recomposed should be independent of the size and complexity of the service composition<ref name='servicecomposition'>[http://www.whatissoa.com/p12.php Service Composition]</ref>.
{{Short description|Computing design principle}}
<br/>
In computing, '''Serviceservice Composabilitycomposability''' is a design principle, applied within the [[service-orientation]] [[design paradigm]], whichthat encourages the design of [[Service (computer science)|services]] in a manner so that they can be reused in multiple solutions that are themselves made up of composed services. The ability ofto recompose the service tois be recomposed should beideally independent of the size and complexity of the service composition.<ref name='servicecomposition'>[{{cite web|url=http://www.whatissoa.com/p12.php |title=Service Composition]|publisher=|access-date=2010-03-04|archive-url=https://web.archive.org/web/20100311045214/http://www.whatissoa.com/p12.php|archive-date=2010-03-11|url-status=dead}}</ref>.
This principle is directly related to the agility promised by SOA as it promotes composing new solutions by reusing existing services<ref name='MP'>Michael Poulin.[http://www.ebizq.net/blogs/service_oriented/2009/02/evolution_of_principles_of_service_orientation_service_statelessness_part_6.php Evolution of principles of Service Orientation: Service Statelessness, part 7][Online].Date accessed: 21 April 2010.</ref>.
 
This principle is directly relatedresponsible tofor the agility promised by SOA as it promotes composing new solutions by reusing existing services.<ref name='MP'>Michael Poulin.[http://www.ebizq.net/blogs/service_oriented/2009/02/evolution_of_principles_of_service_orientation_service_statelessness_part_6.php Evolution of principles of Service Orientation: Service Statelessness, part 7][Online].Date accessed: 21 April 2010.</ref>.
 
==Purpose==
The concept of developing software out of independently existing components encourages the concept of composition. This is the underlying concept within object-orientation where the end product is composed of several interlinked objects that have the ability to become part of multiple software solutions, no matter how complex the solution is. The same composition concept is inherited by service-orientation, whereby a business process is automated by combining multiple services. However, within service-orientation there is even greater focus on building services that can be composed and recomposed within multiple solutions in order to provide the [[agility]] promised by the SOA. As a result of this emphasis, some guidelines are required in order to develop services that can be effectively aggregated into multiple solutions.
<br/>
 
The concept of developing software out of independently existing components encourages the concept of composition. This is the underlying concept within object-orientation where the end product is composed of several interlinked objects that have the ability to become part of multiple software solutions, no matter how complex the solution is. The same composition concept is inherited by service-orientation, whereby a business process is automated by combining multiple services. However, within service-orientation there is even greater focus on building services that can be composed and recomposed within multiple solutions in order to provide the [[agility]] promised by the SOA. As a result of this emphasis, some guidelines are required in order to develop services that can be effectively aggregated into multiple solutions.
The Serviceservice Composabilitycomposability principle provides design considerations that help towards designing composable services with a view to encourage service reuse as much as possible. The guidelines providesprovided by this principle prepare the service so that it is ready to participate in service compositions without requiring any further design changes.
<br/>
The Service Composability principle provides design considerations that help towards designing composable services with a view to encourage service reuse as much as possible. The guidelines provides by this principle prepare the service so that it is ready to participate in service compositions without requiring any further design changes.
 
==Application==
The application of thisthe designservice composability principle requires designing services in a manner so that they can be used in a service composition either as a service that controls other services, i.e. a controller service, or as a service that provides functionality to other services in the composition without further composing other services, i.e. a composition member.<ref name='MP' />.
 
In order forFor the service to provide this dual functionality, the service contract<ref name='servicecontract'>[{{cite web|url=http://www.whatissoa.com/p11.php |title=Service Contract]|publisher=|access-date=2010-03-04|archive-url=https://web.archive.org/web/20120501123049/http://www.whatissoa.com/p11.php|archive-date=2012-05-01|url-status=dead}}</ref> needs tomust be designed in a manner so that it presents functionality based on varying levels of input and output data. In case if it is required to participate as a composition member, then usually the input parameters to the service would be more fine grained as compared to the situation when it is required to participate as a composition controller. A heavily reused service needs tomust be as stateless as possible ([[Service Statelessness Principle|Serviceservice Statelessnessstatelessness principle]]) so that it can provide optimum performance when composed within multiple service compositions.
<br/>
The effectiveness of this principle depends upon the extent to which [[Service-Orientationorientation Designdesign Principlesprinciples|rest of the design principles]] have been applied successfully. The application of the [[Standardizedstandardized Serviceservice Contractcontract]] principle enablesmakes the services to be interoperable with otherothers, and helps to keep the composition design rather simpler by avoiding the need to perform runtime data model transformation.<ref name='IBMRed'>IBM Red Books [http://www.redbooks.ibm.com/redbooks/pdfs/sg247607.pdf Power Systems and SOA Synergy][Online].Date accessed: 21 April 2010.</ref>. By applying the Service [[Serviceservice Looseloose Coupling|Loosecoupling Couplingprinciple]] principle, a service could be recomposed with the confidence that it would not create any form of negative coupling<ref name='CoupTypes'>[[Service_Loose_CouplingService loose coupling#Coupling_Types|Coupling Typestypes|coupling types]]</ref> with the other service in the composition. The application of the [[Service Autonomyautonomy Principleprinciple|Serviceservice Autonomyautonomy]] and the [[Service Statelessnessstatelessness Principleprinciple|Serviceservice Statelessnessstatelessness]] principles increase the reliability and availability of the service so that it be reused in multiple service compositions with increased confidence.
The application of this design principle requires designing services in a manner so that they can be used in a service composition either as a service that controls other services i.e. a controller service, or as a service that provides functionality to other services in the composition without further composing other services i.e. a composition member<ref name='MP' />.
<br/>
In order for the service to provide this dual functionality, the service contract<ref name='servicecontract'>[http://www.whatissoa.com/p11.php Service Contract]</ref> needs to be designed in a manner so that it presents functionality based on varying levels of input and output data. In case if it is required to participate as a composition member, then usually the input parameters to the service would be more fine grained as compared to the situation when it is required to participate as a composition controller. A heavily reused service needs to be as stateless as possible ([[Service Statelessness Principle|Service Statelessness principle]]) so that it can provide optimum performance when composed within multiple service compositions.
<br/>
The effectiveness of this principle depends upon the extent to which [[Service-Orientation Design Principles|rest of the design principles]] have been applied successfully. The application of the [[Standardized Service Contract]] principle enables the services to be interoperable with other and helps to keep the composition design rather simpler by avoiding the need to perform runtime data model transformation<ref name='IBMRed'>IBM Red Books[http://www.redbooks.ibm.com/redbooks/pdfs/sg247607.pdf Power Systems and SOA Synergy][Online].Date accessed: 21 April 2010.</ref>. By applying the Service [[Service Loose Coupling|Loose Coupling]] principle, a service could be recomposed with the confidence that it would not create any form of negative coupling<ref name='CoupTypes'>[[Service_Loose_Coupling#Coupling_Types|Coupling Types]]</ref> with the other service in the composition. The application of the [[Service Autonomy Principle|Service Autonomy]] and the [[Service Statelessness Principle|Service Statelessness]] principles increase the reliability and availability of the service so that it be reused in multiple service compositions with increased confidence.
 
==Considerations==
In order forFor the service to be an efficient service controller as well as a service member, the underlying technology architecture needs to provide a runtime environment that is scalable and can support the statelessness required by the service. Similarly as the service compositions increase in size, the storage and retrieval of the context data, related to the runtime interaction of the services, may need to be delegated to the runtime environment instead of the services managing this context data in order to make the service composition more efficient.
<br/>
 
In order for the service to be an efficient service controller as well as a service member, the underlying technology architecture needs to provide a runtime environment that is scalable and can support the statelessness required by the service. Similarly as the service compositions increase in size, the storage and retrieval of the context data, related to the runtime interaction of the services, may need to be delegated to the runtime environment instead of the services managing this context data in order to make the service composition more efficient.
As more and more service compositions are built, there is a tendency of getting dependent on a service that is highly reused. This requires careful analysis during the design of the service compositions and considering alternate standby services for critical functionality. On the other hand, it may become difficult to evolve a service that is now become a part of multiple service compositions. This could be addressed by the application of the Concurrent Contracts design pattern that advocates maintaining multiple concurrent contracts for a service.<ref name='CC'>[{{cite web|url=http://www.soapatterns.org/concurrent_contracts.php|title=SOA Concurrent ContractsPatterns|website=SOA Pattern]Patterns}}</ref>. This way the service can evolve while providing backward compatibility.
<br/>
 
As more and more service compositions are built, there is a tendency of getting dependent on a service that is highly reused. This requires careful analysis during the design of the service compositions and considering alternate standby services for critical functionality. On the other hand, it may become difficult to evolve a service that is now become a part of multiple service compositions. This could be addressed by the application of the Concurrent Contracts design pattern that advocates maintaining multiple concurrent contracts for a service<ref name='CC'>[http://www.soapatterns.org/concurrent_contracts.php Concurrent Contracts Pattern]</ref>. This way the service can evolve while providing backward compatibility.
Some of the factors that determine the composability potential of a service include:<ref name='Reddy'>Reddy. et al.[httphttps://wwwdoi.springerlink.com/content/36107373037136n2org/fulltext10.pdf1007%2Fs11219-008-9055-6 Evaluating legacy assets in the context of migration to SOA][Online].pp 58.Date accessed: 21 April 2010.</ref>:
<br/>
Some of the factors that determine the composability potential of a service include<ref name='Reddy'>Reddy. et al.[http://www.springerlink.com/content/36107373037136n2/fulltext.pdf Evaluating legacy assets in the context of migration to SOA][Online].pp 58.Date accessed: 21 April 2010.</ref>:
* Ability to provide functionality at different levels within a business process.
* Message Exchange pattern
Line 29 ⟶ 28:
* Support for exception handling.
* The availability of meta-data about service capabilities and behavior.
 
==See also==
*[[Executable choreography]]
*[[Service choreography]]
 
== References ==
{{Reflist}}
* Kjell-Sverre Jerijærvi.[http://www.infoq.com/articles/soa-contract-maturity-model SOA Contract Maturity Model][Online].Date accessed: 21 April 2010.
* Mauro. et al. [https://web.archive.org/web/20110203194511/http://www.computer.org/portal/web/csdl/doi/10.1109/HICSS.2010.336 Service Oriented Device Integration - An Analysis of SOA Design Patterns.] [Online], pp.1-10&nbsp;1–10, 2010 43rd Hawaii International Conference on System Sciences, 2010. Date accessed: 8 April 2010.
* [[Thomas Erl]] (2008).[http://www.amazon.co.uk/Principles-Service-Prentice-Service-Oriented-Computing/dp/0132344823 SOA Principles of Service Design]. Prentice Hall. ISBN 0-13-234482-3
* [[Thomas Erl|Erl]] et al.,(2009).[http://www.amazon.com/gp/product/0136135161/ref=s9_simi_gw_p14_i1?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-1&pf_rd_r=0FBSA23BKC0AXWVZ5Q9G&pf_rd_t=101&pf_rd_p=51471022&pf_rd_i=507846 SOA Design Patterns]. Prentice Hall. ISBN 0-13-613516-1
* [[Thomas Erl|Erl]] et al.,(2008).[http://www.amazon.co.uk/Service-Contract-Prentice-Service-Oriented-Computing/dp/013613517X/ref=sr_1_1?ie=UTF8&s=books&qid=1269973080&sr=8-1 Web Service Contract Design for SOA]. Prentice Hall. ISBN 0-13-613517-X
* Dino Esposito.[http://msdn.microsoft.com/en-us/magazine/cc699560.aspx The HTML Message Pattern][Online].Date accessed: 21 April 2010.
* [[Service-oriented_architecture#Principles|Service-orientation Principles]]
* Anne Thomas Manes.[http://archive.wikiwix.com/cache/20100424080039/http://apsblog.burtongroup.com/2009/11/the-soa-manifesto.htm The SOA Manifesto][Online].Date accessed: 21 April 2010.
* Wojciech Cellary, Sergiusz Strykowski.[http://delivery.acm.org/10.1145/1700000/1693045/p5-cellary.pdf?key1=1693045&key2=3796591721&coll=Portal&dl=GUIDE&CFID=87272569&CFTOKEN=10049575 E-Government Based on Cloud Computing and Service-Oriented Architecture][Online].Date accessed: 22 April 2010.
* Sun, L., Dong, H., Hussain, F.K., Hussain, O.K., Chang, E.: [https://www.researchgate.net/publication/265169908_Cloud_service_selection_State-of-the-art_and_future_research_directions Cloud service selection: State-of-the-art and future research directions. Journal of Network and Computer Applications][Online] 45 (October 2014) pp. 134-150. Date accessed: 16 June 2015.
 
== External links ==
* [http://www.whatissoa.com/ SOA Concepts]
* [http://www.soaglossary.com/ SOA Terms Glossary]
* [http://www.soamethodology.com SOA Methodology]
* [http://www.soaprinciples.com/ SOA Principles]
 
[[Category:Service-oriented (business computing)]]