SOA

CIS007-3 – Comparative Integrated Systems

Powerpoint – CIS007-3_Service Oriented Architecture (Overview) -April 2016

Chapter 10: Service Oriented Architecture (From Rajapakse, D. G. (2011) A Fresh Graduate’s Guide to Software Development Tools and Technologies)

Patterns: Service Oriented Architecture and Web Services, 2o04, IBM Redbooks
Design service-oriented architectures using Web services – Explore service bus, directory, and gateway solutions – Learn by example with practical scenarios

See Chapter 2: Service-Oriented Architecture
This chapter provides an introduction to service-oriented architecture. It also introduces Web Services as an implementation of service-oriented architecture (SOA).

In this chapter, we discuss the following topics:
Overview of service-oriented architecture
Web services architecture
Web services and service-oriented architecture
Enterprise Service Bus
Where to find more information

A Quick Introduction to SOA Tutorial, 2013, Software Engineering Competence Center

Achieving business agility and easing the integration of legacy systems are main goals for software development in various business organizations. Business agility is the ability to change the business process quickly in response to the change in the business environment, such as adding a new service to the organization portfolio. One way to  achieve this in a fast, yet cost effective way is to adopt the Service Oriented Architecture (SOA) approach. SOA
is an architecture methodology that views the system as set of services. The service is a software component that implements a reasonable amount of work. Each service is loosely coupled to increase its scalability and reusability.
So, whenever a business need emerges and requires adding new functionality to the system, the development team in the organization can develop a service that fulfill that need, and rapidly integrates it in the current system without the need to change the overall architecture of the system.
The aim of this tutorial is to introduce SOA and its benefits, and provide a brief overview about the popular implementations of SOA and the concept of Web Services.

Service Oriented Architecture (SOA)
(From Wikipedia: https://en.wikipedia.org/wiki/Service-oriented_architecture)

A service-oriented architecture (SOA) is an architectural pattern in computer software design in which application components provide services to other components via a communications protocol, typically over a network. The principles of service-orientation are independent of any vendor, product or technology.

A service is a self-contained unit of functionality, such as retrieving an online bank statement. By that definition, a service is an operation that may be discretely invoked. However, in the Web Services Description Language (WSDL), a service is an interface definition that may list several discrete services/operations. And elsewhere, the term service is used for a component that is encapsulated behind an interface. This widespread ambiguity is reflected in what follows.

Services can be combined to provide the functionality of a large software application. SOA makes it easier for software components on computers connected over a network to cooperate. Every computer can run any number of services, and each service is built in a way that ensures that the service can exchange information with any other service in the network without human interaction and without the need to make changes to the underlying program itself.


A service-oriented architecture is essentially a collection of services. These services communicate with each other. The communication can involve either simple data passing or it could involve two or more services coordinating some activity. Some means of connecting services to each other is needed.
Service-oriented architectures are not a new thing. The first service-oriented architecture for many people in the past was with the use DCOM or Object Request Brokers (ORBs) based on the CORBA specification. For more on DCOM and CORBA, see Prior Service-Oriented Architectures.

Services
If a service-oriented architecture is to be effective, we need a clear understanding of the term service. A service is a function that is well-defined, self-contained, and does not depend on the context or state of other services.

Connections
The technology of Web Services is the most likely connection technology of service-oriented architectures. The following figure illustrates a basic service-oriented architecture. It shows a service consumer at the right sending a service request message to a service provider at the left. The service provider returns a response message to the service consumer. The request and subsequent response connections are defined in some way that is understandable to both the service consumer and service provider. How those connections are defined is explained in Web Services Explained. A service provider can also be a service consumer.

Service-oriented architecture

See below…


These articles provide an extensive overview of Web Services, related standards, and technologies that can be used in Cloud Computing and service-oriented architectures.


 

Understanding Service-Oriented Architecture (Microsoft Developer Network)
(https://msdn.microsoft.com/en-us/library/aa480021.aspx)

Summary: Gives a concise explanation of service-oriented architecture, what it is, and how it affects what architects, CIOs, project managers, business analysts, and lead developers do.

Contents
Introduction
Principles and Definitions
SOA Basics
Process Matters
Architectures
The Service Architecture
The SOA Platform
The Enterprise SOA
Summary


Chapter 1: Service Oriented Architecture (SOA) (Microsoft Developer Network)
(https://msdn.microsoft.com/en-us/library/bb833022.aspx)

“SOAs are like snowflakes – no two are alike.”

Readers of this chapter will learn about some of the general concepts generally associated with Service Oriented Architectures (SOA). The chapter provides several analogies for understanding service oriented concepts and some high level recommendations for designing services. This chapter provides an abstract model for describing SOA and introduces a set of architectural capabilities that will be explored in subsequent chapters of this book.

Contents
Introduction to SOA
Understanding Services
An Abstract SOA Reference Model
Recurring Architectural Capabilities
Management
Supporting the Common Architectural Capabilities
Common Architectural Capabilities and the Abstract SOA Model
Summary
References


Service Oriented Architecture : What Is SOA?
(https://www.opengroup.org/soa/source-book/soa/soa.htm)

Service Oriented Architecture : What Is SOA?
This definition of SOA was produced by the SOA Definition team of The Open Group SOA Working Group.

Service-Oriented Architecture
Service-Oriented Architecture (SOA) is an architectural style that supports service-orientation.
Service-orientation is a way of thinking in terms of services and service-based development and the outcomes of services.

A service:

  • Is a logical representation of a repeatable business activity that has a specified outcome (e.g., check customer credit, provide weather data, consolidate drilling reports)
  • Is self-contained
  • May be composed of other services
  • Is a “black box” to consumers of the service

SOA Architectural Style
An architectural style is the combination of distinctive features in which architecture is performed or expressed.

The SOA architectural style has the following distinctive features:

  • It is based on the design of the services – which mirror real-world business activities – comprising the enterprise (or inter-enterprise) business processes.
  • Service representation utilizes business descriptions to provide context (i.e., business process, goal, rule, policy, service interface, and service component) and implements services using service orchestration.
  • It places unique requirements on the infrastructure – it is recommended that implementations use open standards to realize interoperability and location transparency.
  • Implementations are environment-specific – they are constrained or enabled by context and must be described within that context.
  • It requires strong governance of service representation and implementation.
  • It requires a “Litmus Test”, which determines a “good service”.

What is Service-Oriented Architecture? – An Introduction to SOA
(http://www.javaworld.com/article/2071889/soa/what-is-service-oriented-architecture.html)Get a primer on SOA, starting with the basic question of what a service-oriented architecture is and what comprises a Java-based SOA infrastructure at the core, platform, and quality-of-services level. Service-oriented architecture (SOA) is an evolution of distributed computing based on the request/reply design paradigm for synchronous and asynchronous applications. An application’s business logic or individual functions are modularized and presented as services for consumer/client applications. What’s key to these services is their loosely coupled nature; i.e., the service interface is independent of the implementation. Application developers or system integrators can build applications by composing one or more services without knowing the services’ underlying implementations. For example, a service can be implemented either in .Net or J2EE, and the application consuming the service can be on a different platform or language.


 

Service Oriented Architecture (SOA): simply good design
Structure and optimize your business and IT solutions with SOA
(https://www-01.ibm.com/software/solutions/soa/)

Service Oriented Architecture (SOA) has several core ideas that should be addressed in your organization’s SOA journey:

With the convergence of mobile, social, cloud, and big data analytics, SOA is more important than ever before for offering insight and integrating systems from end to end. By applying Service Oriented Architecture principles, an enterprise can manage and govern business and IT transformation, setting them apart from their competitors. The benefits range from seamless integration, cloud enabled solutions, holistic business insight and agility to externalized APIs. SOA integrates the front office, back office and the Internet of Things.

Middleware, best practices and patterns speed the Service Oriented Architecture journey and amplify the value it creates. IBM has over a decade of experience with SOA and a broad portfolio of capabilities, spanning integration, processes, operational control and services. SOA is “simply good design” — resting on a solid foundation of technology and practices that support your organization’s journey into the changing world of mobile, social, cloud and big data.


IBM – What is Service Oriented Architecture (SOA)?
(https://www-01.ibm.com/software/solutions/soa/what-is-soa.html)

Service Oriented Architecture (SOA) is a business-centric IT architectural approach that supports integrating your business as linked, repeatable business tasks, or services.

Answers to frequently asked questions – helping you to get started with SOA.


Service-Oriented Architecture (SOA) and Web Services: The Road to Enterprise Application Integration (EAI)
(http://www.oracle.com/technetwork/articles/javase/soa-142870.html)

Most enterprises have made extensive investments in system resources over the course of many years. Such enterprises have an enormous amount of data stored in legacy enterprise information systems (EIS), so it’s not practical to discard existing systems. It’s more cost-effective to evolve and enhance EIS. But how can this be done? Service Oriented Architecture (SOA) provides a cost-effective solution……

SOA and web services are two different things, but web services are the preferred standards-based way to realize SOA. This article provides an overview of SOA and the role of web services in realizing it. The article provides:

  • An overview of software as a service
  • A tutorial on SOA
  • An overview of Sun’s platforms for building web services
  • Guidelines for designing interoperable web services
  • Challenges in moving to SOA
  • An overview of Java Business Integration (JSR 208)
  • A discussion of web services for enterprise application integration

 

An Introduction to Service-Oriented Architecture from a Java Developer PerspectiveAn Introduction to Service-Oriented Architecture from a Java Developer Perspective
(http://archive.oreilly.com/pub/a/onjava/2005/01/26/soa-intro.html)

The use of heterogeneous technologies and applications in corporations is a reality. At a time when resources are scarce, IT shops cannot just throw away their existing applications; rather, they must leverage their existing investments. service-oriented architecture (SOA) is popular because it lets you reuse applications and it promises interoperability between heterogeneous applications and technologies.
In this article, I will introduce SOA from a Java developer perspective and examine the technologies available in the Java space to build service-oriented applications.


Gartner IT Glossary – Service-Oriented Architecture (SOA)
(https://www.gartner.com/it-glossary/service-oriented-architecture-soa)

soa, service oriented architectureService-oriented architecture (SOA) is a design paradigm and discipline that helps IT meet business demands. Some organizations realize significant benefits using SOA including faster time to market, lower costs, better application consistency and increased agility. SOA reduces redundancy and increases usability, maintainability and value. This produces interoperable, modular systems that are easier to use and maintain. SOA creates simpler and faster systems that increase agility and reduce total cost of ownership (TCO).


SOA Manifesto
(http://www.soa-manifesto.org/)

SOA Manifesto

Service orientation is a paradigm that frames what you do. Service-oriented architecture (SOA) is a type of architecture that results from applying service orientation.

We have been applying service orientation to help organizations consistently deliver sustainable business value, with increased agility and cost effectiveness, in line with changing business needs.

Through our work we have come to prioritize:

Business value over technical strategy
Strategic goals over project-specific benefits
Intrinsic interoperability over custom integration
Shared services over specific-purpose implementations
Flexibility over optimization
Evolutionary refinement over pursuit of initial perfection

That is, while we value the items on the right, we value the items on the left more.

Guiding Principles

We follow these principles:

  • Respect the social and power structure of the organization.
  • Recognize that SOA ultimately demands change on many levels.
  • The scope of SOA adoption can vary. Keep efforts manageable and within meaningful boundaries.
  • Products and standards alone will neither give you SOA nor apply the service orientation paradigm for you.
  • SOA can be realized through a variety of technologies and standards.
  • Establish a uniform set of enterprise standards and policies based on industry, de facto, and community standards.
  • Pursue uniformity on the outside while allowing diversity on the inside.
  • Identify services through collaboration with business and technology stakeholders.
  • Maximize service usage by considering the current and future scope of utilization.
  • Verify that services satisfy business requirements and goals.
  • Evolve services and their organization in response to real use.
  • Separate the different aspects of a system that change at different rates.
  • Reduce implicit dependencies and publish all external dependencies to increase robustness and reduce the impact of change.
  • At every level of abstraction, organize each service around a cohesive and manageable unit of functionality.

XML.com: XML From the Inside OutWhat Is Service-Oriented Architecture?
(http://webservices.xml.com/pub/a/ws/2003/09/30/soa.html)

“Things should be made as simple as possible, but no simpler.” — Albert Einstein


Video: Service Oriented Architectures
(https://www.coursera.org/learn/python-network-data/lecture/0CpCx/video-service-oriented-architectures)

Lecture transcript
The service-oriented approach to linking software systems and applications is transforming the way many organizations share data. This approach improves existing methods of data sharing, by providing a service layer between systems. Sharing data between applications is a well-established principle that works on a simple level. As systems expand, the solution that connects two software applications will often not work for a third. What began as a workable system, then locks valuable data in a silo. Sharing the data is still possible, but requires adaptations and tweaks. The process is laborious and time consuming, leading to bottlenecks and overload. The reality of this world is unnecessary effort expended in duplication of data. By applying a service layer to the applications you wish to connect up, data is offered up in a common format for reuse elsewhere. The service-oriented approach works with existing software systems and does not require you to remove the monolithic application. Replacement applications reuse the links already made and can plug into the service layer without affecting other users of the data. New applications can be added to grow overall system architectures in the same way. The data in each application, is offered up as a service which any other application can consume. When the service-oriented approach is evolved into a system-wide architecture, it allows connections and service sharing opportunities between organizations nationally and globally. Take monitoring of student progress for example. Results are logged by a virtual learning environment, but how much of that data is shared with a management system that is tracking progression against funding? If the motivation and commitment of struggling students is not addressed and they decide to walk away, there is a direct impact on funding. If the data is freed up and shared across a system using a service-oriented approach, it could contribute to retaining student motivation, and thereby maximizing income. And what if across the education community, there was one standard and agreed way to describe a course? It would allow course information to be made available as a consumable service, both internally and externally. This is the subject of a current project called Exchanging Course Related Information or XCRI, encompassing course marketing, quality assurance, enrollment, and reporting requirements. This service-oriented approach enables aggregated organizations, like UCAS, to gather the standard and agreed descriptions of courses from each provider. Comprehensive details of approved enrollment opportunities, are then returned to a prospective student for easy and accurate comparison. Amongst the research community, it is the same principle. Here, the service-oriented approach is enabling researchers to work across institutions in virtual organizations. MyGrid is a project that provides a shared toolkit for creating experiments by coordinating the information flow between distributed resources and services. Workflows and query specifications link together remote and local resources using web service protocols. Workflows created by myGrid represent the scientific process of the experiments they enact, making them a rich resource for scientists creating their own new experiments. The service layer to this data enables users to share, re-use, and re-purpose experiments within the myGrid community. Many education and research services are already developing a service-oriented approach taking their lead from the business world and major software developers. It is in this context that the e-Framework, a successful and expanding international initiative, works to make sense of the service-oriented approach for the education and research community. The e-Framework website identifies and describes the service components needed. It provides the blueprints and reference example for those in the community who want to gain a greater understanding and knowledge of how to implement a service-oriented approach. The e-Framework website is thus becoming a knowledge base that is developing a shared vocabulary and way of thinking for all in education and research.


 

What is Service Oriented Architecture (SOA)?
(https://www.youtube.com/watch?v=jL1oVENiYT8)

Uploaded on 6 Oct 2010
http://zerotoprotraining.com