SOA Fundamentals for Java Developers · SOA Fundamentals For Java Developers Alexander Ulanov,...
Transcript of SOA Fundamentals for Java Developers · SOA Fundamentals For Java Developers Alexander Ulanov,...
SOA Fundamentals For Java DevelopersAlexander Ulanov, System Architect
Odessa, 30 September 2008
SOA Fundamentals For Java DevelopersAlexander Ulanov, System Architect
Odessa, 30 September 2008
What is SOA?What is SOA?
• Software Architecture style aimed on• Reuse• Growth• Interoperability
• Maturing technology framework supporting the architecture
• Next evolutionary step of enterprise information systems
• An effective mean to close the gap between business and IT
Enterprise EcosystemEnterprise Ecosystem
SOA
SOA for IT-resources integrationSOA for IT-resources integration
• Common infrastructure based on open and widely-adopted standards
• Reuse of enterprise information services and other software assets
• Going beyond the enterprise – integration with:• Partner’s IT• Global chain of information services providers and consumers
• Unified policies to all services and applications• Service level agreements
• Integrating legacy systems • Smooth transition
SOA for Business-IT AlignmentSOA for Business-IT Alignment
• Software resources (services) are designed as a business function
• The services are orchestrated to fulfill particular business-process
• This involves:• Services are understandable in terms of business (visibility)• Local changes in IT as response to new or changed business-
process• Events in information system can be simply abstracted to
business key performance indicators (KPI)
Reference ArchitectureReference Architecture
Principles of Service DesignPrinciples of Service Design
• Top-down: from business-processes to services contract
• Bottom-up: from existing software assets – how to fulfill the contract
Design by ContractDesign by Contract
• Contract• Interface definition
• Operations• Data types
• Policy assertions• Identify behavior
attributes
• “Contract first”
Loose CouplingLoose Coupling
• Service contracts impose low consumer coupling requirements
• Negative coupling:• to implementation of service
logic• to vendor technology• to resources of the
implementation environment• to parent business-process
AutonomyAutonomy
• High level of control over underlying runtime execution environment
• Gradual transformation• Reducing shared resources access• Increasing physical isolation
• Autonomy is especially important to the effectiveness of service compositions
ComposabilityComposability
• Fundamental principle - system decomposition and separation of concerns
• Ability to act as an effective composition member so that it can support the realization of new business requirements that can be fulfilled by the assembly of service compositions
• That involves service properties:• Designed from business-process
model• Autonomous• Loosely coupled
• Composition design pattern:• Functional call
StatelessnessStatelessness
• Concurrent access to statefull service is a scalability issue
• Deferring the management of state information when necessary• Empowers composition and reuse
AbstractionAbstraction
• General categories of information about service:• Functional• Technology• Programmatic• Quality of Service
• Service contracts contain only essential information
• Information about services is limited to what is published in service contracts
ReusabilityReusability
• Services contain and express agnostic logic• Contract centralization• Logic centralization
• Can be positioned as reusable enterprise resources• Inventory (Repository)
• To support reuse• Conservative
• Specify requirements to reuse that service
• Governance effort• Cultural change
• Developers encouraged to discoverfor reuse
DiscoverabilityDiscoverability
• Services are supplemented with communicative meta-data• Functional• Quality of Service
• And can be effectively discovered and interpreted• Service Registry
• Similar process for run-time (dynamical binding)
Standardized Service ContractStandardized Service Contract
• Same contract design standards within service inventory (repository)
• Standards enable automated policies governance
ProcessProcess
SOA ProgramSOA Program
Service Life-Cycle ManagementService Life-Cycle Management
Service InfrastructureService Infrastructure
Communication ProtocolsCommunication Protocols
• WS-*• Large set of standards issued by OASIS
• Security, reliable messaging, policies, etc..• SOAP – basic communication protocol• Standard Java API – JAX-WS
• RESTful Services• JAX-RS
• JMS
• EJB (RMI/IIOP)
• etc
Exposing and Calling Web-Services in JavaExposing and Calling Web-Services in Java
• JAX-WS: server • Expose service from
• EJB• POJO• Spring component
• From WSDL to code vs. from code to WSDL
• JAX-WS: client
Infrastructure FunctionsInfrastructure Functions
• Mediation & Messaging• Synchronous and
asynchronous message delivery
• Transport protocol adapters• HTTP, SOAP, SMTP/POP3,
JMS, FTP, …
• Caching
• Security• End-to-end• Message-level
• Dynamical binding
• Service Composition• Data transformation• Content-based routing• Event-flow orchestration
• Management• Service Provisioning• Traffic management• Monitoring, Logging,
Alerting
Apache Synapse / WSO2 ESBApache Synapse / WSO2 ESB
• Lightweight ESB • Mediation• Transformation (XSLT, XQuery)• Security (WS-Security)
Service Component Architecture (SCA)Service Component Architecture (SCA)
• Programming model seen by application code remains the same regardless to protocol
Service Component Architecture (SCA)Service Component Architecture (SCA)
• Assembly:• Packaging component as a
service• Combining into composites• Dependency Injection• Wiring, Auto-wiring• Properties
• Annotations• @Remotable, @Reference,
@Property…• SCDL configuration files
Service Component Architecture (SCA)Service Component Architecture (SCA)
Advantage over Spring:• remote components• multiple protocols for communication • variety of programming languages for application components• support for an asynchronous programming model • flexible application of policy to components and to communications
Open-Source Infrastructure ProductsOpen-Source Infrastructure Products
• JAX-WS Containers• Java 6 SDK WS-Container• Sun JAX-WS (Metro)• Apache CXF
• ESB• Apache ServiceMix
• IONA Fuse ESB• Mule ESB• Apache Synapse
• WSO2 ESB• Sun’s OpenESB• JBoss ESB
• SCA container• Apache Tuscany
• Messaging• Apache Active MQ
• Registry• ApacheDS (LDAP)• Sun OpenDS (LDAP)• Apache jUDDI (UDDI)
• Registry/Repository• Mule Galaxy• WSO2 Registry
What else is worth to study?What else is worth to study?
Questions?Questions?