InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Component Composition Strategies and Tactics

Posted by Jean-Jacques Dubray on Jan 09, 2008

Sections
Enterprise Architecture
Topics
SOA ,
SOA Appliance ,
Architecture ,
Orchestration ,
SOA Platforms
Tags
Service Component Architecture ,
Component Based Architecture

Component technologies have continuously evolved since the early 90s. With the advent of Spring and the development of the Dependency Injection pattern, they have taken a new turn and started providing advanced composition mechanisms.

Last week, Sanjay Patil, Standards Architect at SAP Labs, published an article on "IT Scenarios for Service Component Architecture" that described some of the composition strategies enabled by the Service Component Architecture.

Last month, a team from IBM compared the different component technologies and the degree to which they support composition. The article first defined some of the properties that promote composition mechanisms:

  • Interface coupling
  • Data (type systems and message formats)
  • Version resiliency
  • Transport independence
  • Expected interaction patterns
  • Conversations
  • Ability to mediate
  • Dynamicity

For Sanjay, the two most important factors are transport independence which translates into deployment flexibility, and dynamicity which is achieved in SCA with the use of policies.

The IBM article also explored the many factors that influence the granularity of the component, though it supports the current industry thinking that:

in general, loosely coupled components are coarse grained, while tightly coupled components are more likely to be fine grained

The article argues that:

SCA provides composition on two axes: composition by reference and composition by implementation 

  • SCA components can compose services by orchestrating the invocation pattern of those services through a single invocation programming model that's independent of where and how the services are deployed.
  • SCA can also provide composition by implementation through the use of an assembly of finer-grained components as the implementation of a coarse-grained component.

Their analysis is shared by Sanjay who sees:

  • A bottom-up composition scenario where an application [is composed] by assembling different existing implementation artifacts
  • An heterogeneous composition scenario ... [where] SCA allows structuring the integration logic, and related functions (such as mapping, etc.) as first class components, whose relationship with other components is then captured as part of a well defined composite.

However, he also describes yet another scenario, a "top-down" scenario which:

...takes the opposite approach for creating the composites [...where] the goal of an Assembler is to analyze the high level business requirements and create composites on top of components that are yet to be implemented.

The IBM article concludes:

One of the strengths of SCA is its ability to combine with a wide variety of fine-grained component models that are used to implement coarse-grained service components. SCA brings value to each of them in terms of modeling the structure of solutions in the large, providing agility and flexibility, and removing the need to define complex configuration details within implementation code. It also has the virtue of being able to connect different component models used for different parts of an overall solution.

  • This article is part of a featured topic series on SOA
Component Composition Strategies and Tactics (Thank You) by KuldeepSinh Chauhan Posted
  1. Back to top

    Component Composition Strategies and Tactics (Thank You)

    by KuldeepSinh Chauhan

    Along with all other readers, I am very thankful to both Sanjay and InfoQ for such an intersting article.

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.