Recent from talks
Nothing was collected or created yet.
Service-orientation
View on WikipediaService-orientation is a design paradigm for computer software in the form of services. The principles of service-oriented design stress the separation of concerns in the software. Applying service-orientation results in units of software partitioned into discrete, autonomous, and network-accessible units, each designed to solve an individual concern. These units qualify as services.[1][2]
History of service-orientation principles and tenets
[edit]Service-orientation has received a lot of attention since 2003[3] due to the benefits it promises. These include increased return on investment, organisational agility and interoperability as well as a better alignment between business and IT. It builds heavily on earlier design paradigms and enhances them with standardisation, loose coupling and business involvement.[4] The paradigm lost momentum in 2009;[5] since 2014, renewed interest can be observed under the Microservices moniker. In technology, different vendor SOA platforms have used different definitions of service-orientation. Some vendors promote different principles and tenets over others, but a fair amount of commonality exists.[6]
Service-orientation inherits a small number of principles from earlier paradigms including object-oriented programming, component-based software engineering and open distributed processing. It is commonly acknowledged that several service-orientation principles have their roots in the object-oriented design paradigm: the two are complementary paradigms and there will always be a need for both.[7] Services also inherit a number of features of software components, including
- Multiple-use
- Non-context-specific
- Composable
- Encapsulated i.e., non-investigable through its interfaces
- A unit of independent deployment and versioning
Open Distributed Processing (ODP) combines the concepts of open systems and distributed computing, which are essential characteristics of service-orientation. The key features of ODP are all inherited by service-orientation, including federation, interoperability, heterogeneity, transparency and trading/broking.
Essential characteristics
[edit]Don Box was one of the first to provide a set of design guidelines referred to as his "four tenets of service-orientation", which he described primarily in relation to the Microsoft Indigo (subsequently Windows Communication Foundation) platform that was emerging at the time:
- Boundaries are explicit
- Services are autonomous
- Services share schema and contract, not class
- Service compatibility is based on policy
Other vendors and independent consultants have published their definitions of service-orientation and SOA, for instance, N. Josuttis in "SOA in Practice" and D: Krafzig et al. in "Enterprise SOA". An article in the December 2005 edition of the IBM System Journal[8] entitled "Impact of service orientation at the business level"[9] provided a study of how the service-orientation paradigm relates to fundamental componentization and the IBM Component Business Model (CBM).
Paul Allen defines service orientation as a (business) paradigm, with three main components: business architecture, Service-oriented architecture and software oriented management. Allen's book defines seven Service-Oriented Viewpoints (labelled SOV7): Allen, Paul (2006). Service Orientation Winning Strategies and Best Practices. Cambridge University Press. ISBN 978-0521843362.
- Transparence
- Smoothness of customer's experience in using the service.
- Customer fit
- Ability to tailor offerings to variations in customer needs.
- Partner connectivity
- Ability to use 3rd parties for performing commodity services
- Ability to offer a service to different partners
- Adaptation
- Adapting to the changes in the marketplace.
- Multi-channel capability
- Support the customer end-to-end through process, using different channels to achieve continuity.
- Offering same service through different channels.
- Optimization
- Offering services in real time at high performance levels.
- One-stop experience
- Catering to different needs of the customers through one set of services.
Allen uses the viewpoints as starting point for stating questions during the design process.
Service-orientation has continued to receive increased recognition as an important part of the service-oriented computing landscape and a valid design approach to achieving service-oriented architecture.
See also
[edit]References
[edit]- ^ Erl, Thomas. "SOA Principles".
- ^ "Service-Oriented Software Engineering".
- ^ "Gartner's Hype Cycle Special Report for 2005" (PDF).
- ^ Erl, Thomas. "What Is SOA? - Introduction".
- ^ "SOA is Dead; Long Live Services". Application Platform Strategies Blog. Archived from the original on 2009-01-15. Retrieved 2016-09-29.
- ^ Liebhart, Daniel. SOA goes real. Hanser, 2007, p. 22
- ^ "Elements of Service-Oriented Analysis and Design". www.ibm.com. 2 June 2004.
- ^ "IBM Journal of Research & Development". www.research.ibm.com. 23 October 2017.
{{cite web}}:|archive-url=is malformed: timestamp (help) - ^ "Impact of service orientation at the business level". www.research.ibm.com. 23 October 2017.
{{cite web}}:|archive-url=is malformed: timestamp (help)
Further reading
[edit]- Allen, Paul (2006). Service Orientation, winning strategies and best practices. Cambridge, UK: Cambridge University Press. ISBN 9780521843362.
- Luba Cherbakov et al. (2005). "Impact of service orientation at the business level[dead link]". IBM Systems Journal Oct 2005
- Josuttis, Nicolai (2007). SOA in Practice. Sebastopoal, CA, USA: O'Reilly. ISBN 978-0-596-52955-0.
- Rotem-Gal-Oz, Arnon (2012). SOA Patterns. Mannikng Publications. ISBN 978-1933988269.
- Jenny Ang, Luba Cherbakov, Mamdouh Ibrahim (2005). "SOA antipatterns". IBM Online article, Nov 2005.
- Ali Arsanjani (2004). "Service-Oriented Modeling & Architecture". IBM Online article, 09 Nov 2004.
External links
[edit]
Media related to Service-oriented (business computing) at Wikimedia Commons
Service-orientation
View on GrokipediaFundamentals
Definition
Service-orientation is a design paradigm in software engineering that structures distributed solution logic by decomposing complex problems into smaller, manageable units of capability grouped into distinct, autonomous services, which are network-accessible and designed to address specific business concerns independently.[5] In this paradigm, services function as the primary building blocks of software solutions, with an emphasis on loose coupling to minimize dependencies and enable flexibility, reusability of capabilities across diverse contexts, and close alignment with business processes to better support strategic organizational objectives.[5][6] Service-orientation maintains a focus on these abstract design principles rather than prescriptive implementation details or specific technological architectures.[5] The concept of service-orientation emerged in the early 2000s, rooted in foundational software engineering theories such as separation of concerns and closely associated with the rise of web services as a means to enable interoperable, distributed computing.[6] Service-oriented architecture (SOA) serves as a prominent realization of this paradigm in practice.[3]Core Concepts
Service-orientation revolves around several key terms that define the structure and behavior of services within a service-oriented architecture (SOA). A service contract represents the formal agreement that outlines the capabilities, inputs, outputs, and interaction protocols of a service, ensuring that consumers interact with it in a predictable manner without needing knowledge of its internal implementation. This contract is typically expressed using standards such as Web Services Description Language (WSDL) to specify operations and data formats. Closely related is the service boundary, which delineates the explicit scope of a service's logic and capabilities, encapsulating all processing within a defined perimeter to maintain autonomy and prevent unintended dependencies on external elements. Together, these elements enable services to function as self-contained units, where the boundary hides implementation details while the contract provides a clear entry point for interaction. Another foundational concept is service composition, which involves assembling multiple services to form a larger solution or process, allowing for the orchestration of their capabilities to achieve complex business tasks. In service-orientation, compositions can be atomic, involving a single service invocation, or choreographed, where multiple services coordinate autonomously to fulfill a collective goal. This approach promotes modularity, as individual services can be reused across different compositions without modification. Complementing this is the service inventory, defined as a governed collection of standardized services within an enterprise boundary, serving as a repository that facilitates discovery, reuse, and management of services as shared assets. Services in the inventory adhere to common design standards, ensuring consistency and interoperability across the ecosystem. Service-orientation emphasizes service granularity, distinguishing between coarse-grained services, which encapsulate broader functional scopes with fewer but more comprehensive operations, and fine-grained services, which focus on narrower, atomic tasks with many specialized operations. Coarse-grained services are often preferred for their efficiency in reducing communication overhead and simplifying compositions, while fine-grained ones enhance reusability in diverse contexts, though they may increase complexity in orchestration. A core tenet supporting this is the focus on black-box reusability, where services are designed as opaque components whose internal logic remains hidden from consumers, allowing the same service to be repurposed across applications without exposing or altering its underlying mechanisms. This black-box model fosters longevity and adaptability, as changes to internal logic do not affect external dependencies as long as the contract remains stable. Services in service-orientation are conceptualized as autonomous entities with explicit interfaces, meaning they operate independently, managing their own lifecycle and resources while exposing only necessary capabilities through well-defined contracts. This autonomy is promoted through interoperability standards like XML for data representation and SOAP for message exchange, enabling seamless communication across heterogeneous environments without tight coupling to specific technologies. In practice, these services form a service ecosystem where individual components evolve independently—updating logic or scaling as needed—yet collaborate effectively through orchestration mechanisms, such as workflow engines that sequence invocations to deliver end-to-end processes. This ecosystem model aligns service identification with business domains to ensure that granularities and boundaries reflect real-world functional alignments, enhancing overall agility.History
Origins
Service-orientation traces its roots to the distributed computing paradigms of the 1990s, particularly the Common Object Request Broker Architecture (CORBA) developed by the Object Management Group (OMG) and Microsoft's Distributed Component Object Model (DCOM), which aimed to enable interoperability among heterogeneous systems through object-based middleware.[7] These technologies emphasized encapsulation and remote invocation but faced challenges with tight coupling and platform dependencies, prompting a gradual evolution toward more loosely coupled, web-based services in the late 1990s.[8] The term "service-orientation" emerged prominently around 2003, coinciding with the standardization of web services protocols such as SOAP for messaging, WSDL for service description, and UDDI for discovery, which facilitated platform-independent service interactions over the internet.[9] This shift represented a move from proprietary object-oriented models to a paradigm focused on autonomous, reusable services, as outlined in early web services architecture documents from the World Wide Web Consortium (W3C).[10] Key publications in 2004 and 2005 further solidified the conceptual foundations of service-orientation, with Thomas Erl's "Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services" (2004) providing practical guidance on integrating web services, and his follow-up "Service-Oriented Architecture: Concepts, Technology, and Design" (2005) articulating core design principles for service-based systems.[11][12] These works emphasized service-orientation as a paradigm distinct from earlier object-oriented approaches, prioritizing loose coupling and business alignment over inheritance and state management. Early industry adoption was driven by major vendors like IBM and Microsoft, who promoted service-oriented architecture (SOA) in the early 2000s as a solution to enterprise integration challenges, with IBM releasing patterns for SOA implementation and Microsoft integrating web services into its .NET framework to address legacy system silos.[13][7][14] This vendor-led push accelerated the transition from siloed applications to modular, service-driven enterprises, laying the groundwork for broader SOA implementations.[13]Evolution and Milestones
Service-orientation reached its peak popularity between 2003 and 2009, fueled by the hype surrounding Service-Oriented Architecture (SOA) as a transformative paradigm for enterprise IT. Gartner reports from the early 2000s positioned SOA as the dominant model for unifying disparate systems, promising enhanced return on investment (ROI) through service reuse and greater business agility in responding to market changes.[15] By the mid-2000s, adoption surged across industries, with Gartner predicting that more than 50% of new mission-critical operational applications and business processes designed in 2007 would use SOA to streamline operations and reduce integration costs.[16] This era saw widespread vendor support and, in the mid-2000s, placement of SOA on Gartner's Hype Cycle in the "Peak of Inflated Expectations" phase, driving investments in tools like Enterprise Service Buses (ESBs) for orchestration. The enthusiasm waned around 2009 amid growing disillusionment with SOA's practical challenges. Analyst Anne Thomas Manes declared "SOA is dead; long live services," citing failed implementations due to excessive complexity in service governance and the overhead of centralized ESBs, which often introduced performance bottlenecks and maintenance burdens rather than delivering promised agility.[17] Industry analyses highlighted how top-down SOA projects frequently exceeded budgets and timelines, leading to a sharp decline in new adoptions as organizations shifted focus to lighter-weight alternatives amid the global economic recession. This cooling in interest reflected broader trends in the field. Renewal began around 2014, as service-orientation principles resurfaced in the microservices architectural style, which addressed prior shortcomings by emphasizing decentralized, fine-grained services deployable in cloud environments. Analysts described microservices as a resurgence of SOA principles and an alternative to the monolith, enabling scalable, independent development without heavy ESB dependencies.[18] This linkage to cloud-native practices revitalized interest, with ongoing updates to related standards by bodies like OASIS to support evolving interoperability needs. Post-2020 developments further integrated service-orientation with serverless computing, where platforms like AWS Lambda evolved to handle dynamic service compositions without infrastructure management, as seen in the 2023 introduction of the Amazon Linux 2023 runtime for enhanced performance and compatibility.[19] Service-orientation principles continue to influence hybrid cloud environments as of 2025, facilitating seamless orchestration across on-premises and multi-cloud setups to manage distributed services, with growing integration in AI-driven and edge computing scenarios. This evolution underscores its influence on modern paradigms like microservices, adapting foundational concepts to contemporary scalability demands.Principles and Tenets
Don Box's Four Tenets
Don Box articulated the foundational principles of service-orientation in 2004 through his "four tenets," which emphasize designing services to achieve loose coupling, explicit interactions, and interoperability in distributed systems.[20] These tenets guide the development of service-oriented applications by prioritizing message-based communication over traditional object-oriented tight coupling, enabling services to operate independently across diverse environments.[20] Tenet 1: Boundaries are explicit. This tenet posits that services must clearly define their interaction boundaries, relying on explicit message passing rather than implicit method invocations, to account for the inherent costs of crossing geographical, trust, or environmental boundaries.[20] By making boundaries explicit, services reduce complexity and performance overhead, as developers focus on well-defined message exchanges instead of assuming seamless integration.[20] Tenet 2: Services are autonomous. Services must operate independently, without reliance on a central authority for awareness or control, allowing for separate deployment, versioning, and evolution.[20] Autonomy addresses real-world distributed scenarios by incorporating mechanisms like durable queues for handling partial failures and establishing trust relationships for security, rather than assuming uniform system-wide coordination.[20] An example is Amazon's service ecosystem, where backend services such as order processing can be updated independently of frontend applications, fostering loose coupling by minimizing dependencies on shared runtime environments or synchronized releases.[20] Tenet 3: Services share schemas and contracts, not classes or types. Interactions between services are governed solely by shared schemas for data structures and contracts for behaviors, eschewing object-oriented classes that imply tight coupling through shared type systems.[20] This approach enables machine-verifiable compatibility and long-term stability, as schemas (e.g., using XML with wildcards like xsd:any) and contracts (e.g., optional SOAP headers) allow flexibility without requiring identical execution contexts.[20] Tenet 4: Service compatibility is policy-based. Compatibility between services is assessed through explicit policies that separate structural alignment (via schemas and contracts) from semantic expectations (capabilities and requirements), enabling automated validation.[20] Policies consist of machine-readable assertions, allowing services to declare what they support without assuming identical implementations, which contrasts with object-oriented designs that often conflate structure and semantics.[20] These tenets collectively underpin standards like web services, where message-oriented protocols facilitate their application in interoperable systems.[20]Additional Principles
In the evolution of service-orientation, Thomas Erl extended the foundational concepts by articulating eight design principles in his 2007 book SOA Principles of Service Design. These principles offer tactical guidelines for creating services that are practical, maintainable, and aligned with enterprise needs, building upon earlier abstract tenets to emphasize implementation details such as contract design and behavioral constraints.[21] The eight principles are:- Standardized Service Contract: Services within the same domain share a common, formal contract to ensure consistent interfaces and reduce integration complexity.[21]
- Service Loose Coupling: Service contracts and consumer programs impose minimal dependencies on each other, allowing independent evolution without widespread impacts.[21]
- Service Abstraction: Services hide unnecessary internal details from consumers, exposing only essential logic to promote simplicity and security.[21]
- Service Reusability: Services are designed for broad applicability across multiple contexts, maximizing their utility and reducing redundant development.[21]
- Service Autonomy: Services operate with minimal influence from external factors like runtime environments, enhancing reliability and predictability.[21]
- Service Statelessness: Services avoid retaining session state to support scalability and fault tolerance, deferring state management to consumers or external mechanisms when needed.[21]
- Service Discoverability: Services are supplemented with metadata to facilitate location and understanding, enabling dynamic integration in distributed environments.[21]
- Service Composability: Services are structured to form larger compositions effectively, with considerations for granularity and interaction patterns to ensure cohesive assemblies.[21]
