Before embarking on a costly Enterprise Service Bus (ESB) project, you must define clearly what requirement you are trying to satisfy, and hence what capabilities are required from your ESB.
An Enterprise Service Bus is not an Enterprise Silver Bullet, and can be defined as a set of infrastructure capabilities implemented by a middleware technology that helps to enable a Service-Oriented Architecture. Remember the service capabilities you are looking to implement, thing like: loose coupling, location transparency, cohesion, implementation abstraction, policy-based management, scalability, and so on.
ESB Key Capabilities
- Communications
- routing
- addressing
- protocol agnostic
- publish/subscribe
- request/response
- fire-forget
- events
- synchronous and asynchronous messaging
- Service interaction
- interface definitions, implementation agnostic
- service directory and discovery
- Integration
- database
- service aggregation
- adaptors
- protocol transformation
- multi-language invocation support
- Quality of Service
- Transactions (atomic, compensation)
- Reliable delivery
- Security
- authentication
- authorisation
- non-repudiation
- confidentiality
- credential mapping
- WS-Security
- Service Level
- Performance
- Throughput
- Availability
- Service SLA monitoring and enforcement
- Message processing
- Config-based logic
- Content-based logic
- Message and data transformations
- Validation
- Enrichment
- Management
- Service registration
- Logging, metering and monitoring
- Discovery
- Integration with systems management and administration tooling
- Self-monitoring and management
- Tooling
- IDE for drag-on-drop flow creation
- Infrastructure Intelligence
- Business rules
- Policy-driven behaviour and quality of service capabilities
- Pattern recognition