SOA

Home
SOA
Spring-Hibernate
GOF Design Patterns
Java BP
Java Tutorial
Java Traps
Datawarehouse
C++ Tutorial
Unix Commands
Interview QnA
About MDC

Service Oriented Architecture

If you are planning to develop software using Service Oriented architecture then it is advised to learn at least basics of Web Services.
The following books are recommended to learn basics of Web Services:

  • Prentice Hall-J2EE™ Platform Web Services by Ray Lai
  • Addison Wesley- J2EE Web Services by By Richard Monson-Haefel
  • Sam's Securing Web Services with WS-Security by Jothy Rosenberg, David L. Remy

 

If you would like to appear for Sun's Web Service Developer certification then you can find preparation plan and exam cram notes here.

 

Service Oriented Architecture Primer:

The promise of service oriented architecture is to liberate business from the constraints of technology and unshackle technologists from the chains they themselves have forged. This has major implications both for the business and for the IT that supports the business.

The main purpose of a service-oriented architecture (SOA) is to offer synergy between the business and IT groups in an organization and to offer the organization greater flexibility.

One of the biggest deals in the SOA world is the idea that you don’t throw things out. You take the stuff (software assets) that you use every day — well, the best of the stuff you use every day — and package it in a way that lets you use it, reuse it, and keep on reusing it.

With SOA, these important programs become business services. You end up with one single business service for a given function that gets used everywhere in your organization. With SOA, when you need to change a business policy, you change it in one place and, because the same service is used everywhere, you have consistency throughout your organization.

SOA uses the find-bind-execute paradigm. In this paradigm, service providers register their service in a public registry. This registry is used by consumers to find services that match certain criteria. If the registry has such a service, it provides the consumer with a contract and an endpoint address for that service.

 

SOA-based applications are distributed multi-tier applications that have presentation, business logic, and persistence layers. Services are the building blocks of SOA applications. While any functionality can be made into a service, the challenge is to define a service interface that is at the right level of abstraction. Services should provide coarse-grained functionality.
 

SOA allows for the reuse of existing assets where new services can be created from an existing IT infrastructure of systems. In other words, it enables businesses to leverage existing investments by allowing them to reuse existing applications, and promises interoperability between heterogeneous applications and technologies. SOA provides a level of flexibility that wasn't possible before in the sense that:

  • Services are software components with well-defined interfaces that are implementation-independent. An important aspect of SOA is the separation of the service interface (the what) from its implementation (the how). Such services are consumed by clients that are not concerned with how these services will execute their requests.
  • Services are self-contained (perform predetermined tasks) and loosely coupled (for independence)
  • Services can be dynamically discovered
  • Composite services can be built from aggregates of other services


 

 

The Enterprise Service Bus (ESB): The ESB is actually an architectural construct that can be designed and deployed in a manner that will parallel the business processes environment. The bus can be implemented in various ways, such as with classical messaging, EAI, and brokering technologies or by using platform-specific components such as the service integration buses in J2EE systems (such as WebSphere Application Server). The ESB can also be a combination of both EAI and application server technologies, but the implementation should not affect the overall architecture. The selection between possible implementations will be the result of an initial architecture assessment, including existing IT infrastructure, skills, and processes in the evaluation.

Mediation in an ESB enables the intelligent processing of service requests and responses, events, and messages. These mediations can be implemented at application service endpoints (either requestor or provider) or can be distributed through the infrastructure of the bus.

Mediation capabilities include the following:

Transformations: XML-to-XML translations, database (DB) lookups, and aggregations.

Message validation: This can consist of verification of any data field or a combination of fields with specific rules.

Content or quality service selections: This requires a service selection based on content or on required quality of service. As an example, a priority customer should probably be routed to a higher throughput server than others of lesser priority.

Content-based routing: As an example, if the service parameters contain some country information, the request can be routed to a provider in that country.

Customized logging: This is a legal requirement that might ask for logging and audit tracks of the services interactions. Mediation is potentially a good place for this purpose.

Metering and monitoring: A bus should have all of the manageability anchor points to enable control of its behavior and of the integrated services.

Autonomic behavior: This is used to react when events are detected—to self-configure, heal, optimize, and so on.

Policy management: This allows a description of all of the behavior rules that are required for the previous items in this list through externalized policies based on XML.

Mediators are intermediary components that operate on logical Web service SOAP message representations between the requestor and the provider. These mediator components can be located close to requestors, providers, or halfway between both requestors and providers as true intermediaries. SOAP messages usually contain a header that has to be processed by the mediation handlers, but mediation can be used for purposes other than just SOAP processing and routing.

You can implement an ESB in many different ways. It is important, however, to reuse whatever standard infrastructure services already exist, ensuring compatibility and reliability. Thus, in a best-practice-based implementation, mediators should use the standard Java Web services SOAP-handling standard: JAX-RPC. This standard provides access to the SOAP headers via the handler API and can be hosted in a J2EE application server infrastructure. Handlers can be easily chained in series and reused across systems. In addition, using embedded mediations, the ESB supports a broad spectrum of ways to hop on and off the bus. The ESB includes business connections that enable external partners in B2B interaction scenarios to participate in the service interaction flows. In this B2B case, it provides the additional mediations and security that external access imposes. Mediation on the protocols that attach to the bus enables the connectivity with existing service-oriented components. These protocols include CORBA, RMI/IIOP, TCP/IP, JCA, native JMS, and other Java protocols.

A Web services gateway is an additional component of a bus that provides controlled access to the bus for external partners, hiding details of individual internal services, validating user access, controlling access, and auditing requests. The gateway uses core bus components such as mediation and security to implement its routing and management services.

Because business processes are essential to the SOA approach, the model must also integrate an additional standard for this aspect: the Business Process Execution Language (BPEL). BPEL is used by business analysts to model the business processes and by programmers to implement the choreography of services.

 

SOA implementation guidelines:

Every vendor provides some guidelines to asses your organizations SOA readiness. Once you have assessed your current architecture and deployment, these are some basic guidelines to move towards SOA.

  • Use blueprint instead of starting from scratch. Do not reinvent the wheel. Build on other's experiences.
  • Make sure the SOA project you choose for your starting point is well defined and well confined. Prove SOA successful with something that is small, is achievable in a short time, and will have a significant impact — then build incrementally.
  • Stick to standards and standard interfaces. The proprietary software you build will be your own downfall. The sooner you part ways from evil temptations, the happier and healthier your software can be.
  • Don’t Neglect Governance: SOA governance won’t happen by itself. Address it early. SOA governance is as much about the way you work and the processes you put in place to create a SOA environment as it is about any technology issues. So, don’t just go and buy a bucket full of tools labeled SOA governance. SOA governance is about leadership and thinking through how you are going to get from where you are today to a well-coordinated approach that conforms to your corporate goals and objectives.
  • Pay close attention to the security implications of exposing business services.
  • SOA makes a lot of sense for a lot of things, but not for everything. If you have an application that is so specialized that it is isolated from other aspects of the business and works just fine, leave it alone. At the same time, when you find the software that is appropriate for SOA, you need to prioritize, scrutinize, and make sure you’re looking at the right level of granularity. For example, if you make each service very small, you might end up with thousands of little pieces of code that are hard to find and hard to reuse. The bigger the reusable service, the easier it will be to find and reuse. And some things need never, ever be exposed as services.
  • Don’t Postpone SOA: SOA is a long journey. The sooner you begin, the sooner you’ll get somewhere.
  • SOA is an architectural style that has been around for years. Web services are the preferred way to realize SOA.
  • SOA is more than just deploying software. Organizations need to analyze their design techniques and development methodology and partner/customer/supplier relationship.
  • Moving to SOA should be done incrementally and this requires a shift in how we compose service-based applications while maximizing existing IT investments.


     

SOA Maturity Levels

 

A complete overnight realization of SOA is not a viable solution. Implementing SOA is a five step process.



Level1: Initial Service - In the first stage companies service-enable their applications using standard APIs. The costs are modest.

Level2: Architected Service- In second stage companies use SOA services to build new or refractor existing integration points. The company should establish visibility into the entire service list and their consumers. It becomes feasible to reuse services because more thought is put into policies that services must adhere to, such as security and uptime requirements.

Level3: Business and Collaborative Service - Third stage involves the introduction of business-oriented services, such as business process management (BPM). With a focus on the partnership between technology and business organizations, Level 3 optimizes the flexibility of business processes, allowing IT to respond quickly to changing business requirements.

Level4: Measured business services - Level 4 provides continuous feedback on the performance and business impact of the processes implemented at Level 3. The key focus at this level is collecting data and providing that data to business users, enabling them to transform the way they respond to events. It could involve logging and monitoring service health constantly.

Level5: Optimized business services - At this final level, business-optimization rules are added, and the SOA becomes the nervous system for the enterprise. Automatic responses to the measurements and displays of Level 4 allow an organization to take immediate action on events. A Level 5 project can take the request messages entering the ESB and route that information to an event-stream processor. This service correlates the behavior of all traders across multiple execution venues and identifies important patterns. This information might be used to execute new trades or stop a rogue trader who is out of view of compliance officers.


There are several SOA lifecycle stages mentioned by different vendors.
 

Soa levels defines by SOA consortium:



 

Soa levels defined by BEA:






References:

Service Oriented Enterprise by Setrag khoshafian
Service Oriented Architecture For Dummies
Service-Oriented Architecture Compass: Business Value, Planning, and Enterprise Roadmap
By Norbert Bieberstein,, Sanjay Bose,, Marc Fiammante,, Keith Jones,, Rawn Shah
SOA for the Business Developer: Concepts, BPEL, and SCA, First Edition
byBen MargolisandJoseph Sharpe