Showing posts with label System Design. Show all posts
Showing posts with label System Design. Show all posts

Thursday, September 4, 2025

Event Driven Architecture Standardization for Efficiency and Scale

This is a rehash of my blog post on "Debate Over Domain-Agnostic Connections"  back in March 2010 when I pushed for event driven architecture as a technologist and got push back from the development team who were doing simple point-to-point integration. I have rewritten the post using a prompt that recasts into a structured output that addresses business fit as well as technical fit.

Standardized Event-Driven Architecture for Business Agility


Recommendation to use Domain-Agnostic Connection Factories for Service Integration Bus is crucial for achieving a unified, scalable, and resilient enterprise-wide integration platform. This decision will enable a foundational Event-Driven Architecture (EDA) that directly supports our goals of faster time-to-market and improved system resilience.


Supporting Rationale


Enhancing Business Agility & Resilience

This approach unifies our messaging framework, enabling seamless interoperability across diverse business domains. It mitigates the risk of fragmented integration silos that can impede cross-departmental data flow and innovation.

By abstracting the underlying messaging resources, we can more easily integrate new business units or third-party services without extensive code changes, directly accelerating our ability to respond to market demands.


Operational & Technical Rationale: Standardizing for Efficiency and Scale


Reduced Complexity

Using a single connection factory streamlines development, as engineers no longer need to manage separate code paths for different messaging types (e.g., Topics vs. Queues). This reduces boilerplate code and cognitive load, leading to fewer errors and faster feature delivery.


Improved Scalability & Maintainability

The architecture provides a consistent, standardized pattern that is easier to document, test, and automate. As we scale our microservices and integration points, this consistency will be vital for operational efficiency and platform stability.


Proof Points & Details


Executive Proof Point

 The Proof of Concept (POC) demonstrated a 25% reduction in integration development time for a new service, validating the efficiency gains. Furthermore, a single, documented approach minimizes training overhead for new teams and reduces long-term operational costs.


Practitioner Details

The design uses the JMS 2.0+ standard ConnectionFactory interface, which is the current industry best practice. This pattern allows for code to be written once and deployed to multiple messaging endpoints, such as TopicConnection for broadcast events and QueueConnection for point-to-point transactions. This is not about making development harder; it’s about freeing developers from low-level plumbing so they can focus on business logic.


Analogy

Think of a universal remote control. Instead of needing a different remote for your TV, sound system, and streaming device, one remote can control them all. The ConnectionFactory is our universal remote for enterprise messaging—it simplifies the user experience without sacrificing functionality.


Conclusion & Next Steps


This architectural decision ensures our integration platform is built for the future, not just the current project. It will lead to:


Business Outcome

Improved system resilience and faster time-to-market for new services.


Technical Outcome

A standardized, scalable framework that reduces technical debt and improves maintainability.

The path forward is clear. We will update the project wiki with detailed technical examples and a reference implementation. I will continue to work directly with team leads to ensure a smooth transition and address any further questions, ensuring we maintain a collaborative approach as we move forward.



Sunday, July 7, 2013

10. ATAM Phase 3 and Conclusion

 

Purpose: Follow up. This phase is conducted after the conclusion of the ATAM evaluation.

Phase 3 Step 1: Produce the Final Report

Purpose: To write the final report.

Evaluators will write the final report that summarizes the entire ATAM evaluation.

Phase 3 Step 2: Hold the Post Mortem Meeting

Team members fill out

  • Evaluation team post-exercise survey
  • Method improvement survey
  • Evaluation team post-exercise effort survey

Team leader arranges and facilitates meeting and

  • Collects process observer’s report
  • Collects effort data

 

Phase 3 Step 3: Build Portfolio and Update Artifact Repository

Six months after the evaluation the team leader arranges for the customer to complete the long-term benefit survey.

Conclusion

ATAM is a stakeholder-oriented cross-functional team facilitated architectural review process that results in Risk Themes. Founded on Quality Attributes, Tradeoffs, Sensitivity Points and Risks this process is a proven repeatable method of evaluating software architectures. This process and it’s templates should be customized.

Sunday, June 30, 2013

9. ATAM Phase 2

ATAM Phase 2

Bring the producers and consumers together to ensure that there are no discrepancies.

Write Risk Themes early at least start risk themes documentations early – and try to stick to 5. Not all risks map to a theme, there can be some outliers. The following are two groups of activities in Phase 2:

1. Testing – involves checking the results to date against the needs of all relevant stakeholders

2. Reporting –involves presenting the results of the ATAM

Phase 2 involves bottom-up information gathering and analysis.

- Consumers of the system

o End users

o Application builder

o External entities

- Servicers of the system

o System Admin

o Network Admin

o Maintainers

Review Step 1 -6 with the Phase 2 group. Why? This helps Step 7 because these materials are useful in brainstorming. Do not constrain the group, and changes can be made to the utility tree and other artifacts.

Note: Ask for any documentation (architecture) that was requested in Phase 1. Do accept new documentation created “just for Phase 2”. Just a new view, ensure that existing views are not changed/upgraded or modifying the architecture.

image

Risk Theme

A risk theme is a summarization of multiple similar risks discovered during the analysis of qualified attribute scenarios.

The point out bigger issues in the architecture and are

- Either Commission – i.e. multiple questionable decisions made in the architecture

- Or Omission – i.e. decisions NOT made or requirements not included in the architecture

E.g. Risk Theme: “There is no holistic approach to resource management…” Impacts Business Goals: “Cost, time-to-market, ability to compete with competitors”.

Sunday, June 23, 2013

8. ATAM Scenario Documentation example

Scenario Documentation

The following are templates filled out for scenarios for illustration not completeness.

(H,H) Scenario

Port new to Operating System

Attributes

Portability

Environment

Operating system

Stimulus

New Device

Response

The developers deliver a production quality PAMD Image that supports new device within two months.

Architectural Decisions

Sensitivity

Tradeoff

Risk

Nonrisk

(H,H) Scenario

Port new hardware to existing infrastructure and operating system(s)>\.

Attributes

Portability

Environment

N/A for now

Stimulus

A new device is selected to inclusion into the ecosystem.

Response

PAMD developers deliver a production quality PAMD images is developed for the new device within 2 months (business) or 1 year (IT Arch). [Negotiated to 6 months between Business Owner and IT Architect]

Architectural Decisions

Sensitivity

Tradeoff

Risk

Nonrisk

(H,H) Scenario

Data type incompatibility

Attributes

Reliability

Environment

Run-time

Stimulus

The data type understood by the application changes, without an updated plug-in

Response

The system raises an error, informing the user that the data type is incompatible.

Architectural Decisions

Sensitivity

Tradeoff

Risk

Nonrisk

(H,H) Scenario

Loading PAMD plug-ins and applications

Attributes

Reliability

Environment

Stimulus

User loads 1 additional plug-in or applications that exceeds the system capacity limits.

Response

The system responds by loading the new plug-in or application without crashing.

Architectural Decisions

Sensitivity

Tradeoff

Risk

Nonrisk

Here is the clearest definitions I could come up with:

Risk – a clear risk to the architectural design relative to a single quality attribute.

Nonrisk – a good decision.

Tradeoff – two quality attributes are being balanced here.

Sensitivity Point – a single quality attribute is impacted by

Sunday, June 16, 2013

7. ATAM Utility Tree Example

image

I think a utility tree is a visualization of quality attribute exposures for a given architecture, however it can get pretty cumbersome and the details will loose the big picture. In practice, it really depends on the people reading this and how well familiar they are. Chances are they will not be and the goal will be then for the architect to familiarize the stakeholders or create an alternate artifact.

Sunday, June 9, 2013

5. ATAM Phase 0: Evaluation

 

Purpose: Partnership & Preparation: Usually present the ATAM to a small group. Get the Business Drivers.

Step 1: Purpose to ensure that the client understands the mechanics of the evaluation method; make sure the client understands the CBA of an architecture evaluation. Record questions for possible FAQ list. Consultants may write up work plans. 75 man days for evaluation team effort– duration best case is 3 weeks.

Step 2: Initial description of the candidate system. Client provides existing documentation describing the system. Client conveys main architectural drivers e.g. business goals, requirements, constraints etc.

Client and evaluation organization agree on necessary architecture documentation – “3 main views”.

NDA – for evaluation team is done at this step.

Evaluators record general business goals, quality attributes, architectural constraints and list of architecture documentation to be delivered to the evaluation team.

Step 3: Go/No-Go decision with respect to conducting ATAM.

Evaluation organization representatives understand the state of the architecture well enough to make a decision and ensure that the candidate system is ready for evaluation.

Evaluation team takes a look at the context drawing and multiple views of the system (e.g. run time etc.)

The list of named participants and their roles with respect to the system must be provided.

Step 4: SOW presentation and negotiation.

Step 5: Form core evaluation team. Aim for 4-6 evaluators.

Modifiability – coupling, encapsulation, contract based interactions, cohesion etc.

Step 6: Conduct evaluation team kick-off meeting.

Team Leader: establishes the time and place for the meeting.

Stickies on a board that can be grouped by risk themes are helpful…or use “Mind Maps”.

Tools like “Enterprise Architect” are used for evaluation in some companies.

Step 7: Prepare and Plan for Phase 1.

Review the purpose of the ATAM phases with the client.

Confirm the time and place for the evaluation for the client to present the system architecture & business goals, architect to present the system architecture and arrange for supplies.

Step 8: Preliminary review of the system’s software architecture.

Hold a brief post-mortem.

Sunday, June 2, 2013

4. ATAM Phases Overview

 

There are 4 phases of the ATAM evaluation: Phase 0-3.

Phase 0: Partnership & Preparation

· Usually present the ATAM to a small group. Get the Business Drivers.

Phase 1: Initial Evaluation: Step 1-6

· Steps 1-5: We don’t pre-judge here. Just gather information and focus on the pros.

· Step 6: This is still phase 1. Ask questions about the architectural decisions, and do they map back to business drivers?

20110604moonA.jpg

Phase 2: Complete Evaluation: Step 7-9

· Step 7: (Brainstorm & Prioritize) – Phase 2: Show Phase 1 scenarios, you recap.

· Step 8: Analyze Architectural Approaches: You have more stakeholders.

· Step 9: Report out

Phase 3: Follow-up

Sunday, May 26, 2013

3. The Benefits of ATAM Evaluations

 The following are the benefits of Architecture Tradeoff Analysis Methodology (ATAM) -

· Clarified Quality Attribute Requirements

· Improved Architecture documentation

· Documented basis for architectural decisions

· Identify risks early in the life cycle

· Increased communication among stakeholder


· The results are dramatically improved software and solution architectures.

2. ATAM Conceptual Model

The Architecture Tradeoff Analysis Method (ATAM) is a facilitated, stakeholder-driven evaluation process designed to surface risks, non-risks, sensitivity points, and trade-offs in an architecture. Its value lies in creating a structured conversation that aligns technical decisions with business drivers and quality attributes.

Core Concepts

Sensitivity Points

Definition: A property of one or more components that is critical to achieving a specific quality attribute response.

Example: Queue depth is a sensitivity point. Adjusting it directly influences scalability and throughput.

Trade-offs

Definition: A property that simultaneously affects multiple quality attributes, often requiring explicit prioritization.

Example: Persistent vs. non-persistent queues impact durability, availability, and throughput—forcing a conscious trade-off among them.

Conceptual Flow

The ATAM process decouples business drivers and scenarios from the architectural plan and decisions, ensuring a traceable line of reasoning.

A more accurate flow in practice is:

Architectural Plan / Presentation

→ Architectural Approaches (candidate solutions and patterns)

→ Quality Attribute Requirements (QARs) tied to those approaches

→ Architectural Decisions made explicit and evaluated against QARs

Practitioner Advice

Phase Separation: Never run Phase 1 (eliciting drivers and scenarios) and Phase 2 (detailed analysis and trade-offs) in the same week.

Allow 1–2 weeks between phases for participants to reflect, refine scenarios, and prepare.

This gap leads to sharper analysis and more meaningful stakeholder engagement.

Why It Matters for Architects

Brings clarity and rigor to architectural decisions by making implicit trade-offs explicit.

Provides a shared vocabulary for stakeholders and technologists to discuss quality attributes (scalability, availability, performance, etc.).

Ensures that architecture is justified by business drivers, not just technical preference.


See Conceptual Model here: http://www.sei.cmu.edu/architecture/tools/evaluate/atam.cfm

Sunday, May 19, 2013

Understanding Architectures with Pictures

 

“Pictures speak a 1024 words.” – this is a quote I used a lot for the past 10 years or so. Why? Well this is because architectures need to be visualized. Bredemeyer Consulting’s Visual Architecting Process, SEI’s SAPP, RUP’s UML, Zachman, TOGAF etc. all dwell on visualizing abstractions. But how do you translate that to real projects, and especially those that claim to be agile and misunderstand that to mean no design and no plans? As one of the many signatories of the agile manifesto it is clear to me that those projects that do not know what the architecture is can not deliver software in a timely manner with good quality attributes.

Circuit Board On A Blueprint Background Royalty Free Stock Photos - Image: 7848798

Software Architecture should be represented by a set of views that support its analysis. Usually the following views are most often used:

Advice: At least 3-views recommended by SEI:

1. Module View

2. Component View

3. Deployment View

Plus a sequence diagram can be added as the forth.

Multiple views of a software architecture allow it to be understandable without any confusion by the entire team and its stakeholders.

Sunday, December 9, 2012

SOA 2004–a blast from the past or what I thought about it back then

I wrote up some views on Service Oriented Architecture in 2004. This was a time when XML was a buzzword and people were wondering and writing about SOA. I was implementing a leading edge solution for a policy administration system using an ACORD XML interface and hosting Internet B2B services for independent agencies. A soup to nuts solution that included XML, SOAP, WSDL, Java EE, EJB and RDBMS + COTS.

I also wrote this unpublished paper:

Introduction

This is the most important decade for distributed computing. Reuse and interoperability are back in a big way for distributed applications. Over the years, several types of reuse methodologies have been proposed and implemented with little success: procedure reuse, object reuse, component reuse, design reuse etc. None of the methodologies tackled interoperable reuse. Enter web-services. Web-services are big and everyone in the industry is taking this seriously. Web services are reusable services based on industry-wide standards. This is significant because it could very well be the silver bullet for software reuse. Software can now be reused via web services and applications can be built leveraging Service Oriented Architectures. This paper relates Service Oriented Architectures and highlights its significance and relationship to web-services.

Distributed Software Applications

Software applications deployed across several servers and connected via a network are called distributed applications. Web-services promise to connect such applications even when they may be deployed across disparate platforms in a heterogeneous application landscape. Cross-platform capabilities are one of web-service’s key attractions because interoperability has been a dream of the distributed-computing community for years (Vaughan-Nichols, Steven J.). In the past, distributed computing was complex and clunky. Previous standards like CORBA (Common Object Request Broker Architecture), RMI (Remote Method Invocation), XML-RPC (Extensible Markup Language – Remote Procedure Calls), and IIOP (Internet Inter-ORB Protocol) were used for distributed applications and information interchange; these were not based on strict standards.

Sun Microsystems’s RMI (Remote Method Invocation) over JRMP (Java Remote Method Protocol) was the next revolution of distributed computing. JRMP required both client and server to have a JRE(Java Runtime Environment) installed. It provided DGC (Distributed Garbage Collection) and advanced connection management. With the release of its J2EE specification, Sun introduced EJBs (Enterprise JavaBeans). EJBs promised to support both RMI over JRMP and CORBA IDL (Integrated Development Language) over IIOP (Internet Inter-ORB Protocol). Distribution of these beans (read objects) and transaction management across topologies seemed to be a blue sky dream that never materialized. In addition, the J2EE standard was not envisioned to be a truly enterprise standard – in the sense that integration with other object oriented platforms was not “graceful”. Microsoft introduced .Net and C# that directly compete with J2EE and Java. The continued disengagement between these two major platforms has reached its threshold. It has became imperative that there be a common cross-platform cross-vendor standard for interoperability of business services. Web-services seem to have bridged the gap in the distributed computing space that no other technology has in the past: standardize the interoperability space.

Dublin Core Metadata Glossary defines interoperability as:

The ability of different types of computers, networks, operating systems, and applications to work together effectively, without prior communication, in order to exchange information in a useful and meaningful manner. There are three aspects of interoperability: semantic, structural and syntactical.

Vaughan-Nichols (2002) states that web-services enables interoperability via a set of open standards, which distinguishes it from previous network services such as CORBA’s Internet Inter-ORB Protocol (IIOP).

Web Services

The word “service” conjures up different connotations to different audiences. We need to understand what a service is not. One damaging assumption for service is that it is another term for component(Perrey & Lycett, 2004). Component-orientation, object-orientation and integration based architectures are in the same space and are often a source of confusion.

Service-Architecture defines a service: “A service is a function that is well-defined, self-contained, and does not depend on the context or state of other services.” Perret and Lycett, attempt to define “service” by unifying its usage context by business, technical, provider and consumer. They describe and contrast multiple perspectives on “service” in detail. “The concept of perspective is the key to reconciling the different understandings of service. Business participants view a service (read business service) as a unit of transaction, described in a contract, and fulfilled by the business infrastructure.” They contrast this with the technical participant’s perception of a service as a “unit of functionality with the semantics of service described as s form of interface”. The authors go on to define a service: “Service is functionality encapsulated and abstracted from context”. They argue that the contrasting perceptions of services are really not an issue as long as there is commonality in the underlying perception. The commonality seems to lie in the reuse of services.

“Web services can be characterized as self-contained, modular applications that can be described, published, located and invoked over a common Web-based infrastructure which is defined by open standards.” (Zimmermann, Milinski, Craes, & Oellermann, 2004)

The Web Service Architecture

We are on the cusp of building “plug-compatible” software components that will reduce the cost of software systems at the same time increase their capabilities (Barry, 2003). Applications can be built on architectures which leverage these services. The goal is for service-oriented architectures to be decoupled for the very services it invokes.

Service-oriented architecture leverages the interoperability of web-services to make distributed software reusable.

Web-services makes the process more abstract than object request brokers by delivering an entire external service without users having to worry about moving between internal code blocks(Vaughan-Nichols, 2002). A recent Yankee Group survey results showed that three out of four enterprise buyers plan on investing in SOA (Service-oriented Architecture) technology within one year(Systinet, 2004).

Interoperability is driven by standards, specifications and their adoption. A service operates under a contract or agreement which will set expectations, and a particular ontological standpoint that influences its semantics (Perrey & Lycett, 2003). Applications that expose business processes with web-services are simpler to invoke and reuse by other applications because of pre-defined contracts that the service publishes. Web-services are interoperable and service-oriented architecture enables reuse, as a result SOA and web-service have formed a natural alliance(Systinet, 2004).

The collection of web-service specifications enables a consortium of vendors with their own underlying implementations of these standards to compete viably in the reuse and interoperability market. This is good because the competition is limited to the implementation level as opposed to the standards-level. Vendors will enable a compliant-based marketplace for distributed applications which expose web-services. This would enable SOA-based web-services to consistently search and leverage services in a business domain, via well-known public, private or protected registries, that are compliant with these standards.

Practitioners have used web-services for interoperability successfully in large systems:

“To achieve true interoperability between Microsoft (MS) Office™/.NET™ and Java™, and to implement more than 500 Web service providers in a short time frame were two of the most important issues that had to be solved. The current, second release of this solution complies with the Web Services Interoperability (WS-I) Basic Profile 1.0. Leveraging the Basic Profile reduced the development and testing efforts significantly” (Vaughan-Nichols, 2002).

The Communication Protocol

While web-services are primarily meant to communicate over HTTP (Hyper Text Transfer Protocol) they can communicate over other protocols as well. SOAP (not an acronym) popularly misrepresented as an object-access protocol is the primary message exchange paradigm for web-services. SOAP is fundamentally a stateless, one-way message exchange paradigm(W3C, 2004).

Interoperability is driven by standards, specifications and their adoption. True interoperability between platforms is achieved via SOAP (Zimmermann et al., 2004). Web services are interoperable and service-oriented architecture enables their interoperability. Interoperable protocol binding specifications for exchanging SOAP messages are inherent to web-services(W3C, 2004).

The collection of specifications enables a pool of vendors with their own implementation of these standards. This is good because the competition is limited to the implementation level as opposed to the standards-level. WS standards compliant vendors will enable a compliant based marketplace for distribute applications which would greatly support service oriented architectures. This would enable SOAs to consistently search and leverage services in a domain that are compliant with these standards.

The Description Language and Registry

While WSDL (Web Service Description Language) describes a service, a registry is a place where the location of WSDLs can be searched. There are two primary models for web-services registry (SunMicrosystems, 2003). UDDI and ebXML each target a specific information space. While UDDI focuses more on technical aspects when listing the service, ebXML focuses on business aspects more. In a nutshell, SOAP, WSDL and UDDI fall short in their abilities to automate ad-hoc B2B relationships and associated transactions. None are qualified to address the standardization of business processes, such as procurement process (SunMicrosystems, 2003).

The initial intent of UDDI was to create a set of public service directories that would enable and fuel the growth of B2B electronic commerce. Since the initial release of the UDDI specification, only a few public UDDI registries have been created. These registries are primarily used as test beds for web service developers.

Conclusion

Web-services in combination with service-oriented architecture have bridged the interoperability gap in the distributed computing space unlike any other technology in the past. Service-oriented architecture and web-services are a paradigm shift in the interoperability space because they are based on industry accepted standards and are simpler to implement across disparate software deployments. This technology is certainly here to stay.

Wednesday, September 26, 2012

How would you solve for these requirements?

Sometimes I get expertise requests, and here is a challenge.

Solution Key Components:
* Ability to ingest upto 3,000 messages per second from external domain
* Messages can be in XML, EDI, etc format. ~20 kb each.
* Transform into canonical format
* Perform authorization & authentication
* Break message into multiple messages (achieve parallelism)
* Route based on load, content to message queues (JMS, etc)
Function 1:
* Message queue clusters bucket and shoot to Rules engine
* Rules engine devises appropriate action, forwards to event handlers
* Event handler integrates with e-mail service to send an e-mail
Function 2:
* Message hits Data Access layer for storage
* Looking to store Transaction-type data (1bn records per month)
* Need quick retrieval techniques. Ensure Data consistency/quality
* CRUD operation time should be under 0.1 seconds
Web Component:
* Request comes in from an external site for a iFrame request
* Request needs to be authenticated/authorized/load-balanced
* User information should be cached right @ log-in, so cache can retrieve data we expect the user to view, so we don't retrieve when the user starts navigating
* Planning to have an Active/Active multi-site design
* Don't want to do sticky sessions
* Should we have a distributed cache with regions replicated across sites to avoid sticky sessions?
* Web layer needs to handle 500 concurrent requests minimum
* Overall solution primarily designed on-premise (Virtualized environment) with DR-site on public cloud

I will post my take based on these needs. Also, it will be fun to look back at it after a while as new technologies & solution options evolve.

Thursday, November 3, 2011

Rolling Back Transactions

While doing a spot check on code and configuration – I noticed that the developer wasn’t throwing a runtime exception nor was he setting rollbackOnly in a CMT EJB.

I was told that any exception will rollback a transaction and it is not possible to setRollbackOnly, and there are only 4 types of transaction attributes on CMT. Wrong, wrong and wrong.

1. If your code throws an application exception – the container expects the bean to handle it. However, if your bean throws a runtime exception (or subclass), like javax.ejb.Exception – the container will rollback the transaction.

2. If you don’t want to throw RTEs all around your code – and/or you have massive catch all exception code blocks, you should context.setRollbackOnly – to rollback transactions.

3. There are various transaction attributes – 6 to be exact: Requires, Requires New, Supports, Not Supported, Never & Mandatory. Never and Mandatory are opposite to one another. Requires starts a transaction if not called with one, Mandatory will throw an exception if called without a transaction, Supports will use one if there is one, but won’t complain….rest are self explanatory.

What’s most important about Transactions are how the transaction propagates in both directions (commit and more importantly rollback)

Sunday, September 12, 2010

Point-to-point SOA

Service Oriented Architectures realizations are coupling departments within large organizations. Web-Services are being developed without compliance or guidance from any actionable enterprise architecture design. Without a full soup-to-nuts solution architecture template available to teams, well-intentioned developers are unfortunately creating a web of point-to-point systems architectures with SOA tools and technologies.

Vendors, marketing, tooling and technology isn't helping integration architectures evolve and arrive at the optimal quality attribute tradeoffs. Most quality attributes, like loose coupling, high cohesion, performance, scalability etc are skewing negatively.

It cannot be stressed enough that SOA is more dangerous with out a proper design in place, than no SOA at all. WSDL, SOAP, XSD, REST etc are still not properly understood or realized appropriately in many organizations. Basic systems architectures are unable to evolve due to a significant lack of skills, organizational constraints, poor processes, personnel and such.

Wednesday, August 8, 2007

Mule ESB Distribution

So I started playing with Mule starting Feb 2007. Mule is an integration platform that allows for pluggable connectors to other types of systems. There are so many descriptions of ESBs and architecture styles, and almost everyone claims to be an expert in the space.
IMO Mule is basically a container-type framework that rests on various open source products...
if you go to the 1.4.1 distribution's opt folder the listing is as such:

05/22/2007 08:23a 444,463 acegi-security-1.0.1.jar 05/22/2007 08:28a 443,432 antlr-2.7.6.jar 05/22/2007 08:26a 1,599,570 axis-1.4.jar 05/22/2007 08:26a 31,191 axis-jaxrpc-1.4.jar 05/22/2007 08:26a 18,979 axis-saaj-1.4.jar 05/22/2007 08:26a 126,771 axis-wsdl4j-1.5.1.jar 05/22/2007 08:21a 327,810 backport-util-concurrent-3.0.jar 05/22/2007 08:28a 490,136 c3p0-0.9.0.4.jar 05/22/2007 08:23a 193,391 carol-2.0.5.jar 05/22/2007 08:28a 324,238 cglib-nodep-2.1_3.jar 05/22/2007 08:26a 36,342 commons-attributes-api-2.1.jar 05/22/2007 08:21a 188,671 commons-beanutils-1.7.0.jar 05/22/2007 08:21a 30,117 commons-cli-1.0.jar 05/22/2007 08:23a 46,725 commons-codec-1.3.jar 05/22/2007 08:21a 571,259 commons-collections-3.2.jar 05/22/2007 08:28a 33,976 commons-dbutils-1.1.jar 05/22/2007 08:22a 139,966 commons-digester-1.7.jar 05/22/2007 08:21a 71,442 commons-discovery-0.2.jar 05/22/2007 08:23a 279,781 commons-httpclient-3.0.1.jar 05/22/2007 08:21a 83,613 commons-io-1.3.1.jar 05/22/2007 08:22a 285,104 commons-jxpath-1.2.jar 05/22/2007 08:17a 245,274 commons-lang-2.3.jar 05/22/2007 08:27a 180,792 commons-net-1.4.1.jar 05/22/2007 08:21a 62,086 commons-pool-1.3.jar 05/22/2007 08:25a 38,830 cryptix-jce-api-20050328.jar 05/22/2007 08:25a 296,386 cryptix-jce-provider-20050328.jar 05/22/2007 08:25a 30,258 cryptix-message-api-20050405.jar 05/22/2007 08:25a 276,885 cryptix-openpgp-provider-20050405.jar 05/22/2007 08:25a 16,652 cryptix-pki-api-20050405.jar 05/22/2007 08:22a 486,522 dom4j-1.4.jar 08/08/2007 01:41p 6,205 ds.txt 05/22/2007 08:22a 19,759 geronimo-ejb_2.1_spec-1.0.1.jar 05/22/2007 08:21a 36,396 geronimo-j2ee-connector_1.5_spec-1.0.1.jar 05/22/2007 08:22a 19,259 geronimo-j2ee-management_1.0_spec-1.0.1.jar 05/22/2007 08:25a 34,263 geronimo-jaxrpc_1.1_spec-1.0.1.jar 05/22/2007 08:23a 31,397 geronimo-jms_1.1_spec-1.0.1.jar 05/22/2007 08:21a 14,637 geronimo-jta_1.0.1B_spec-1.0.1.jar 05/22/2007 08:25a 8,097 geronimo-qname_1.1_spec-1.0.1.jar 05/22/2007 08:25a 24,611 geronimo-saaj_1.1_spec-1.0.1.jar 05/22/2007 08:22a 82,923 geronimo-servlet_2.4_spec-1.0.1.jar 05/22/2007 08:25a 2,356,373 groovy-all-1.0.jar 05/22/2007 08:25a 10,832 groovy-engine-1.0-jdk14.jar 05/22/2007 08:28a 2,208,240 hibernate-3.2.2.ga.jar 05/22/2007 08:23a 386,591 hivemind-1.1.1.jar 05/22/2007 08:23a 74,662 hivemind-lib-1.1.1.jar 05/22/2007 08:23a 72,741 howl-logger-0.1.11.jar 05/22/2007 08:23a 405,545 javassist-3.0.jar 05/23/2007 08:15a 226,915 jaxen-1.1.1.jar 05/22/2007 08:28a 603,060 jbpm-3.1.4.jar 05/22/2007 08:21a 11,670 jcl104-over-slf4j-1.3.1.jar 05/22/2007 08:11a 153,253 jdom-1.0.jar 05/22/2007 08:23a 124,316 jotm-2.0.10.jar 05/22/2007 08:23a 5,798 jotm_jrmp_stubs-2.0.10.jar 05/22/2007 08:25a 11,292 jruby-engine-1.0-jdk14.jar 05/22/2007 08:25a 10,250 js-engine-1.0-jdk14.jar 05/22/2007 08:21a 31,906 jug-2.0.0-asl.jar 05/22/2007 08:20a 120,640 junit-3.8.2.jar 05/22/2007 08:25a 10,250 jython-engine-1.0-jdk14.jar 08/09/2007 08:33a 0 list.txt 05/22/2007 08:21a 367,444 log4j-1.2.14.jar 05/22/2007 08:21a 56,164 mockobjects-core-0.09.jar 05/22/2007 08:22a 148,213 mx4j-impl-2.1.1.jar 05/22/2007 08:22a 261,174 mx4j-jmx-2.1.1.jar 05/22/2007 08:22a 167,410 mx4j-remote-2.1.1.jar 05/22/2007 08:22a 485,831 mx4j-tools-2.1.1.jar 05/22/2007 08:25a 149,445 nanocontainer-1.0.jar 05/22/2007 08:24a 167,958 ognl-2.6.9.jar 05/22/2007 08:23a 682,351 org.mortbay.jetty-5.1.12.jar 05/22/2007 08:19a 65,425 oro-2.0.7.jar 05/22/2007 08:25a 112,635 picocontainer-1.2.jar 05/22/2007 08:30a 405,607 quartz-all-1.5.2.jar 05/22/2007 08:25a 251,039 retrotranslator-runtime-1.2.1.jar 05/22/2007 08:25a 14,921 script-api-1.0-jdk14.jar 05/22/2007 08:21a 12,231 slf4j-api-1.3.1.jar 05/22/2007 08:21a 6,869 slf4j-log4j12-1.3.1.jar 05/22/2007 08:30a 188,221 smack-2.2.1.jar 05/22/2007 08:23a 2,694,134 spring-2.0.5.jar 05/22/2007 08:28a 31,020 spring-modules-jbpm31-nodeps-0.8a.jar 05/22/2007 08:22a 26,514 stax-api-1.0.1.jar 05/22/2007 08:26a 113,780 stax-utils-20040917.jar 05/22/2007 08:22a 83,820 wrapper-3.2.3.jar 05/22/2007 08:26a 148,522 wsdl4j-1.6.1.jar 05/22/2007 08:22a 505,825 wstx-asl-3.2.1.jar 05/22/2007 08:28a 86,956 xapool-1.4.jar 05/22/2007 08:21a 1,212,965 xercesImpl-2.8.1.jar 05/22/2007 08:26a 131,384 xfire-aegis-1.2.6.jar 05/22/2007 08:26a 28,705 xfire-annotations-1.2.6.jar 05/22/2007 08:26a 423,888 xfire-core-1.2.6.jar 05/22/2007 08:26a 25,055 xfire-java5-1.2.6.jar 05/22/2007 08:26a 8,074 xfire-jsr181-api-1.0-M1.jar 05/22/2007 08:21a 195,119 xml-apis-1.3.03.jar 05/22/2007 08:26a 127,961 XmlSchema-1.1.jar 05/22/2007 08:21a 24,677 xpp3_min-1.1.3.4.O.jar 05/22/2007 08:22a 349,667 xstream-1.2.1.jar 94 File(s) 24,263,547 bytes


94 files make up the optional open source distribution shipped with Mule.

Writing a web-service is as simple as creating a POJO & modifying the configuration file with the right parameters.

Is WSJF "better" than traditional ROI calculations for Applications?

I love road trips, and i like analogy.   The Premise: Two couples are planning a road trip. The "Perfection" group: This group spe...