SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
Composable Software Architecture
with Spring
Sam Brannen
@sam_brannen
Java Breeze | Odessa, Ukraine | 18 May 2013
2
Sam Brannen
•  Spring and Java Consultant @ Swiftmind (Zurich)
•  Developing Java for over 15 years
•  Spring Framework Core Committer since 2007
•  Spring Trainer
•  Presenter on Spring, Java, OSGi, and testing
3
Swiftmind
Your experts for Enterprise Java
Areas of expertise
•  Spring Framework
•  Java EE
•  OSGi
•  Agile Methodologies
•  Software Engineering Best Practices
Headquarters
•  Zurich, Switzerland
•  @swiftmind
•  http://www.swiftmind.com
4
Agenda
•  Enterprise Applications
•  What we’ve learned as a community
•  Composable Software Architecture
•  Java EE + Open Source
•  How Spring fits into the picture
•  Spring 4.0 Roadmap
5
Modern Enterprise Applications
6
What does "enterprise" mean?
Enterprise software is software used in organizations, such
as in a business or government, as opposed to software
used by individuals. Enterprise software is an integral part of
a (computer based) Information System.
-Wikipedia
7
OK, sure... but what does that mean to developers?
8
Furthermore …
Enterprise software typically has interfaces to other
enterprise software and is centrally managed.
- Wikipedia
9
Ahh, now we’re getting somewhere!
10
Typical Enterprise Application
•  Supports enterprise business process
•  Is relatively large
•  Should be robust, scalable, and offer high performance
•  Does not run in isolation
•  Interacts with multiple external systems and services …
11
RDBMS
12
LDAP
13
SMTP
14
FTP, FTP, SSH
15
JMS, AMQP
16
SOAP Web Services, REST Web Services
17
Web and Mobile clients, etc.
18
But each of these has its own APIs and potentially different
protocols and exchange formats!
19
So how should we design such enterprise applications?
20
What we’ve learned as a community
21
Things to avoid
•  Tight coupling to the container or frameworks
•  Tight coupling to protocols and exchange formats in our
service layer
•  Monolithic deployment units
•  Anemic domain models
•  Bloated transaction scripts
•  Code tangling and scattering
22
What we should aim for
•  Modularity
•  Layered architecture with
–  a canonical domain model
–  a dedicated orchestration layer
•  Separation of concerns
•  Externalized environment-specific configuration
•  Design for testability
23
How we achieve it
•  OOA / OOD / OOP
•  (@)POJO Programming Model
•  Marshaling and automatic type conversion
•  Dependency Injection (DI)
•  Inversion of Control (IoC)
•  AOP / Interceptor Model
•  Automated out-of-container testing and CI
24
Composable Software Architecture
25
Composability
Composability is a system design principle that deals with
the inter-relationships of components. A highly
composable system provides recombinant components that
can be selected and assembled in various combinations
to satisfy specific user requirements. (Wikipedia)
•  Self-contained (modular)
•  Typically stateless
26
But it's not just about modularity and statelessness.
27
It's a different way of thinking,
28
a different way of designing,
29
a different kind of architecture,
30
with new possibilities…
31
if done right.
32
Think about different ways the same components can be...
33
reused…
34
repurposed…
35
and composed…
36
to meet different business requirements
37
or to interact with different systems.
38
Composable Architecture Visualized
Infrastructure
Repository
Service
Orchestration
DomainModel
39
How is this new?
•  To be honest, it’s not really new,
–  if you just look at the diagram…
•  The web tier or presentation layer has always effectively
been a type of orchestration layer.
•  The difference is that we re-use all of the other layers
with multiple types of orchestration simultaneously!
40
Orchestration Layer
•  Lies at the heart of a composable architecture
•  Orchestrates all interactions with the service layer
–  potentially interacting directly with repositories (e.g.,
in batch processing)
•  Handles external protocols
•  Converts from external formats into our canonical domain
model
•  Thereby… allowing application services to be composed in
a multitude of different ways!
41
Common Types of Orchestration
•  Web controller
–  HTTP, HTTPS :: HTTP request and response
•  REST or SOAP Web Service endpoint
–  HTTP/HTTPS :: XML, JSON, binary, …
•  JMS or AMQP listener (or message listener container)
–  JMS Message types, domain entities, …
•  Messaging endpoint (e.g., gateway + service activator)
–  Web service, FTP, file system, email, …
•  Batch component (e.g., reader, writer, processor)
–  Files, SQL, …
42
Java EE + Open Source
43
What's good about Java EE?
•  Set of common enterprise standards for Java
•  Consistent across containers and vendors (mostly)
•  Great tooling and build support
•  Catching up with innovation in open source
–  Hibernate à JPA
–  Spring DI / Guice / Seam à CDI
44
Java EE is a one stop shop
45
which is great…
46
if everything you need is in that shop.
47
But if Java EE doesn’t offer what you need…
48
use open source frameworks
49
either in a Java EE container
50
or in an alternative light-weight container.
51
Open Source Frameworks fill the Gaps
•  Web frameworks and UI components
•  NoSQL
•  Big Data
•  AMQP
•  Mobile
•  Social Media
•  Batch
•  Enterprise Integration (EAI)
•  …
52
How Spring fits into the picture
53
Core Spring (Framework)
•  DI + IoC + AOP
•  Declarative
–  transactions, caching, validation, formatting
•  Spring MVC and REST
•  JMS Message Listener Container
–  Message-driven POJOs
•  Testing framework
54
Dependency Injection and Inversion of Control collectively
decouple application code from the deployment environment
55
DI + IoC à POJO Programming Model
56
POJO Programming Model + AOP à Composability
57
Spring is an Ecosystem
•  Spring MVC
•  Spring REST
•  Spring Web Flow
•  Spring Security
•  Spring Web Services
•  Spring Batch
•  Spring Integration
•  Spring Data
•  Spring Mobile
•  Spring Social
•  Spring AMQP
•  …
58
Spring MVC and REST
•  @Controller annotated components serve as MVC
handler methods and REST endpoints
•  Automatic type conversion
•  Data binding to domain entities
•  Marshaling
–  JSON, JAXB, Castor, XMLBeans, JiBX, XStream, …
•  Handler methods and endpoints orchestrate the service
layer
59
Spring Web Services
•  @Endpoint annotated components serve as SOAP Web
Service endpoints
•  Marshaling (OXM)
–  JAXB, Castor, XMLBeans, JiBX, XStream
•  Endpoint methods orchestrate the service layer
60
Spring JMS
•  Message listener containers (MLC) support
–  JMS MessageListener API
–  Message-driven POJOs
•  Automatic type conversion from JMS Message types into
–  String, Map, Object, byte[]
–  Customer converters also supported
•  Marshaling
–  Spring OXM, customer solutions, etc.
•  MLC orchestrates the service layer
61
Spring Integration
•  Inbound and outbound messaging gateways
–  Handle external protocols and APIs
–  Too many to mention here!
•  Automatic type conversion for method arguments and
return types in Service Activators
•  Marshaling and custom type conversion also supported
•  The service layer can be orchestrated via declarative
configuration (e.g., service activators in XML)
62
And the list goes on …
63
Composable Architecture – with Spring
Infrastructure
Repository
Service
DomainModel
Spring REST
Spring MVC
Spring JMS
Spring Integration
Spring Batch
Spring WS
64
Composable Architecture Checklist
þ  Modularity
þ  Layered architecture
þ Canonical Domain Model
þ Orchestration: web, batch, integration, web services
þ Service
þ Repository
þ Infrastructure
þ  POJO programming model
þ  Separation of concerns
þ  Externalized environment-specific configuration
þ  Testability, automated testing, and CI
65
Roadmap for Spring 4.0
66
1st Class Support for Java 8 based apps
•  Language features such as lambda expressions
–  for callbacks with templates
–  for concurrent execution
•  think fork/join, map/reduce, etc.
•  APIs such as JSR-310 Date and Time
–  Alongside Spring’s existing support for JodaTime
67
Configuring Spring with Groovy 2
•  Configuring and implementing Spring-style applications
using Groovy 2.x
•  Groovy-based bean definitions
•  Groovy as the language of choice for an entire
application, as a direct and straightforward alternative to
Java source files
•  Groovy 2.0's static compilation support completes the
picture here
68
Support for Key Java EE 7 Technologies
•  JMS 2.0
•  JPA 2.1
•  Bean Validation 1.1
•  Servlet 3.1
•  And fully covering JCache 1.0
69
Enabling WebSocket-style Architectures
•  Support for JSR-356 compliant runtimes
•  Also supporting related technologies
70
Fine-grained Eventing and Messaging
•  Introducing fine-grained eventing and messaging within
the application
•  Building on our existing application event mechanism
•  Aligned with our JMS message listener mechanism
71
Pruning and Dependency Upgrades
•  Removing a variety of deprecated packages across the
framework
–  See Spring Framework 3.2's deprecations!
•  Raising minimum dependencies to Java 6+
–  Java SE 6+ and Java EE 6+
–  with some compromises for EE 5++ servers
72
In Closing…
73
Further Resources
•  Spring Projects
–  http://www.springsource.org/projects
–  Reference Manuals
–  Javadoc
•  Spring Forums
–  http://forum.springframework.org
•  Spring JIRA
–  http://jira.springframework.org
•  GitHub Repositories
–  https://github.com/SpringSource
74
Blogs
•  Swiftmind Team Blog
–  http://www.swiftmind.com/blog/
•  SpringSource Team Blog
–  http://blog.springsource.com/
75
Q & A
Sam Brannen
twitter: @sam_brannen
www.slideshare.net/sbrannen
www.swiftmind.com

Contenu connexe

Tendances

IT4IT real life examples & myths and rumors dispelled
IT4IT real life examples & myths and rumors dispelledIT4IT real life examples & myths and rumors dispelled
IT4IT real life examples & myths and rumors dispelled
Tony Price
 

Tendances (20)

Data integration with Apache Kafka
Data integration with Apache KafkaData integration with Apache Kafka
Data integration with Apache Kafka
 
Build your own event analytics pipeline using BigQuery, Dataflow, and k8s. Je...
Build your own event analytics pipeline using BigQuery, Dataflow, and k8s. Je...Build your own event analytics pipeline using BigQuery, Dataflow, and k8s. Je...
Build your own event analytics pipeline using BigQuery, Dataflow, and k8s. Je...
 
Solution Architecture And Solution Security
Solution Architecture And Solution SecuritySolution Architecture And Solution Security
Solution Architecture And Solution Security
 
Adopting a composable architecture
Adopting a composable architectureAdopting a composable architecture
Adopting a composable architecture
 
Elastic-Engineering
Elastic-EngineeringElastic-Engineering
Elastic-Engineering
 
2019 DevSecOps Reference Architectures
2019 DevSecOps Reference Architectures2019 DevSecOps Reference Architectures
2019 DevSecOps Reference Architectures
 
Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
 
Cloud Native Application Development
Cloud Native Application DevelopmentCloud Native Application Development
Cloud Native Application Development
 
Azure 101
Azure 101Azure 101
Azure 101
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event Sourcing
 
Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps  Microsoft DevOps Solution - DevOps
Microsoft DevOps Solution - DevOps
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
 
Azure Synapse Analytics Overview (r1)
Azure Synapse Analytics Overview (r1)Azure Synapse Analytics Overview (r1)
Azure Synapse Analytics Overview (r1)
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Monitoring modern applications using Elastic
Monitoring modern applications using ElasticMonitoring modern applications using Elastic
Monitoring modern applications using Elastic
 
Introducing Databricks Delta
Introducing Databricks DeltaIntroducing Databricks Delta
Introducing Databricks Delta
 
IT4IT real life examples & myths and rumors dispelled
IT4IT real life examples & myths and rumors dispelledIT4IT real life examples & myths and rumors dispelled
IT4IT real life examples & myths and rumors dispelled
 
Enterprise architecture
Enterprise architectureEnterprise architecture
Enterprise architecture
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Cloud Native In-Depth
Cloud Native In-DepthCloud Native In-Depth
Cloud Native In-Depth
 

En vedette

En vedette (15)

Software architecture also needs agile
Software architecture also needs agileSoftware architecture also needs agile
Software architecture also needs agile
 
Software Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patternsSoftware Architecture taxonomies - Integration patterns
Software Architecture taxonomies - Integration patterns
 
Refactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsRefactoring for Software Architecture Smells
Refactoring for Software Architecture Smells
 
Software architecture
Software architectureSoftware architecture
Software architecture
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET Developers
 
User Driven Software Architecture
User Driven Software ArchitectureUser Driven Software Architecture
User Driven Software Architecture
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture design
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
Practices of Good Software Architects
Practices of Good Software ArchitectsPractices of Good Software Architects
Practices of Good Software Architects
 
Software Architecture for Cloud Infrastructure
Software Architecture for Cloud InfrastructureSoftware Architecture for Cloud Infrastructure
Software Architecture for Cloud Infrastructure
 
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overviewEnterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
Enterprise Architecture for Dummies - TOGAF 9 enterprise architecture overview
 

Similaire à Composable Software Architecture with Spring

WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
daveayan
 
Introduction to g reg 4.6.0
Introduction to g reg 4.6.0Introduction to g reg 4.6.0
Introduction to g reg 4.6.0
WSO2
 
Microservices, Spring Cloud & Cloud Foundry
Microservices, Spring Cloud & Cloud FoundryMicroservices, Spring Cloud & Cloud Foundry
Microservices, Spring Cloud & Cloud Foundry
Emilio Garcia
 

Similaire à Composable Software Architecture with Spring (20)

Node.js architecture (EN)
Node.js architecture (EN)Node.js architecture (EN)
Node.js architecture (EN)
 
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...WSO2 Intro Webinar -  Simplifying Enterprise Integration with Configurable WS...
WSO2 Intro Webinar - Simplifying Enterprise Integration with Configurable WS...
 
Cross-platform interaction
Cross-platform interactionCross-platform interaction
Cross-platform interaction
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Review
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 
Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!Prominent Back-end frameworks to consider in 2022!
Prominent Back-end frameworks to consider in 2022!
 
170215 msa intro
170215 msa intro170215 msa intro
170215 msa intro
 
Introduction to g reg 4.6.0
Introduction to g reg 4.6.0Introduction to g reg 4.6.0
Introduction to g reg 4.6.0
 
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...
 
Monolithic to Microservices Architecture
Monolithic to Microservices ArchitectureMonolithic to Microservices Architecture
Monolithic to Microservices Architecture
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
FlexDeploy Product Technical Overview
FlexDeploy Product Technical OverviewFlexDeploy Product Technical Overview
FlexDeploy Product Technical Overview
 
Microservices, Spring Cloud & Cloud Foundry
Microservices, Spring Cloud & Cloud FoundryMicroservices, Spring Cloud & Cloud Foundry
Microservices, Spring Cloud & Cloud Foundry
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--dev
 

Plus de Sam Brannen

Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2
Sam Brannen
 

Plus de Sam Brannen (20)

Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
Testing with Spring, AOT, GraalVM, and JUnit 5 - Spring I/O 2023
 
Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022Testing with JUnit 5 and Spring - Spring I/O 2022
Testing with JUnit 5 and Spring - Spring I/O 2022
 
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
JUnit 5 - Evolution and Innovation - SpringOne Platform 2019
 
JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019JUnit 5: What's New and What's Coming - Spring I/O 2019
JUnit 5: What's New and What's Coming - Spring I/O 2019
 
JUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVMJUnit 5 - New Opportunities for Testing on the JVM
JUnit 5 - New Opportunities for Testing on the JVM
 
Get the Most out of Testing with Spring 4.2
Get the Most out of Testing with Spring 4.2Get the Most out of Testing with Spring 4.2
Get the Most out of Testing with Spring 4.2
 
JUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyondJUnit 5 - from Lambda to Alpha and beyond
JUnit 5 - from Lambda to Alpha and beyond
 
Testing with Spring: An Introduction
Testing with Spring: An IntroductionTesting with Spring: An Introduction
Testing with Spring: An Introduction
 
Testing with Spring 4.x
Testing with Spring 4.xTesting with Spring 4.x
Testing with Spring 4.x
 
Spring Framework 4.1
Spring Framework 4.1Spring Framework 4.1
Spring Framework 4.1
 
Testing Spring MVC and REST Web Applications
Testing Spring MVC and REST Web ApplicationsTesting Spring MVC and REST Web Applications
Testing Spring MVC and REST Web Applications
 
Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2
 
Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1Spring Framework 4.0 to 4.1
Spring Framework 4.0 to 4.1
 
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
 
Spring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSpring Framework 3.2 - What's New
Spring Framework 3.2 - What's New
 
Spring 3.1 and MVC Testing Support - 4Developers
Spring 3.1 and MVC Testing Support - 4DevelopersSpring 3.1 and MVC Testing Support - 4Developers
Spring 3.1 and MVC Testing Support - 4Developers
 
Effective out-of-container Integration Testing - 4Developers
Effective out-of-container Integration Testing - 4DevelopersEffective out-of-container Integration Testing - 4Developers
Effective out-of-container Integration Testing - 4Developers
 
Spring 3.1 to 3.2 in a Nutshell - SDC2012
Spring 3.1 to 3.2 in a Nutshell - SDC2012Spring 3.1 to 3.2 in a Nutshell - SDC2012
Spring 3.1 to 3.2 in a Nutshell - SDC2012
 
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012
 
Spring 3.1 and MVC Testing Support
Spring 3.1 and MVC Testing SupportSpring 3.1 and MVC Testing Support
Spring 3.1 and MVC Testing Support
 

Dernier

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Dernier (20)

%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 

Composable Software Architecture with Spring

  • 1. Composable Software Architecture with Spring Sam Brannen @sam_brannen Java Breeze | Odessa, Ukraine | 18 May 2013
  • 2. 2 Sam Brannen •  Spring and Java Consultant @ Swiftmind (Zurich) •  Developing Java for over 15 years •  Spring Framework Core Committer since 2007 •  Spring Trainer •  Presenter on Spring, Java, OSGi, and testing
  • 3. 3 Swiftmind Your experts for Enterprise Java Areas of expertise •  Spring Framework •  Java EE •  OSGi •  Agile Methodologies •  Software Engineering Best Practices Headquarters •  Zurich, Switzerland •  @swiftmind •  http://www.swiftmind.com
  • 4. 4 Agenda •  Enterprise Applications •  What we’ve learned as a community •  Composable Software Architecture •  Java EE + Open Source •  How Spring fits into the picture •  Spring 4.0 Roadmap
  • 6. 6 What does "enterprise" mean? Enterprise software is software used in organizations, such as in a business or government, as opposed to software used by individuals. Enterprise software is an integral part of a (computer based) Information System. -Wikipedia
  • 7. 7 OK, sure... but what does that mean to developers?
  • 8. 8 Furthermore … Enterprise software typically has interfaces to other enterprise software and is centrally managed. - Wikipedia
  • 9. 9 Ahh, now we’re getting somewhere!
  • 10. 10 Typical Enterprise Application •  Supports enterprise business process •  Is relatively large •  Should be robust, scalable, and offer high performance •  Does not run in isolation •  Interacts with multiple external systems and services …
  • 16. 16 SOAP Web Services, REST Web Services
  • 17. 17 Web and Mobile clients, etc.
  • 18. 18 But each of these has its own APIs and potentially different protocols and exchange formats!
  • 19. 19 So how should we design such enterprise applications?
  • 20. 20 What we’ve learned as a community
  • 21. 21 Things to avoid •  Tight coupling to the container or frameworks •  Tight coupling to protocols and exchange formats in our service layer •  Monolithic deployment units •  Anemic domain models •  Bloated transaction scripts •  Code tangling and scattering
  • 22. 22 What we should aim for •  Modularity •  Layered architecture with –  a canonical domain model –  a dedicated orchestration layer •  Separation of concerns •  Externalized environment-specific configuration •  Design for testability
  • 23. 23 How we achieve it •  OOA / OOD / OOP •  (@)POJO Programming Model •  Marshaling and automatic type conversion •  Dependency Injection (DI) •  Inversion of Control (IoC) •  AOP / Interceptor Model •  Automated out-of-container testing and CI
  • 25. 25 Composability Composability is a system design principle that deals with the inter-relationships of components. A highly composable system provides recombinant components that can be selected and assembled in various combinations to satisfy specific user requirements. (Wikipedia) •  Self-contained (modular) •  Typically stateless
  • 26. 26 But it's not just about modularity and statelessness.
  • 27. 27 It's a different way of thinking,
  • 28. 28 a different way of designing,
  • 29. 29 a different kind of architecture,
  • 32. 32 Think about different ways the same components can be...
  • 36. 36 to meet different business requirements
  • 37. 37 or to interact with different systems.
  • 39. 39 How is this new? •  To be honest, it’s not really new, –  if you just look at the diagram… •  The web tier or presentation layer has always effectively been a type of orchestration layer. •  The difference is that we re-use all of the other layers with multiple types of orchestration simultaneously!
  • 40. 40 Orchestration Layer •  Lies at the heart of a composable architecture •  Orchestrates all interactions with the service layer –  potentially interacting directly with repositories (e.g., in batch processing) •  Handles external protocols •  Converts from external formats into our canonical domain model •  Thereby… allowing application services to be composed in a multitude of different ways!
  • 41. 41 Common Types of Orchestration •  Web controller –  HTTP, HTTPS :: HTTP request and response •  REST or SOAP Web Service endpoint –  HTTP/HTTPS :: XML, JSON, binary, … •  JMS or AMQP listener (or message listener container) –  JMS Message types, domain entities, … •  Messaging endpoint (e.g., gateway + service activator) –  Web service, FTP, file system, email, … •  Batch component (e.g., reader, writer, processor) –  Files, SQL, …
  • 42. 42 Java EE + Open Source
  • 43. 43 What's good about Java EE? •  Set of common enterprise standards for Java •  Consistent across containers and vendors (mostly) •  Great tooling and build support •  Catching up with innovation in open source –  Hibernate à JPA –  Spring DI / Guice / Seam à CDI
  • 44. 44 Java EE is a one stop shop
  • 46. 46 if everything you need is in that shop.
  • 47. 47 But if Java EE doesn’t offer what you need…
  • 48. 48 use open source frameworks
  • 49. 49 either in a Java EE container
  • 50. 50 or in an alternative light-weight container.
  • 51. 51 Open Source Frameworks fill the Gaps •  Web frameworks and UI components •  NoSQL •  Big Data •  AMQP •  Mobile •  Social Media •  Batch •  Enterprise Integration (EAI) •  …
  • 52. 52 How Spring fits into the picture
  • 53. 53 Core Spring (Framework) •  DI + IoC + AOP •  Declarative –  transactions, caching, validation, formatting •  Spring MVC and REST •  JMS Message Listener Container –  Message-driven POJOs •  Testing framework
  • 54. 54 Dependency Injection and Inversion of Control collectively decouple application code from the deployment environment
  • 55. 55 DI + IoC à POJO Programming Model
  • 56. 56 POJO Programming Model + AOP à Composability
  • 57. 57 Spring is an Ecosystem •  Spring MVC •  Spring REST •  Spring Web Flow •  Spring Security •  Spring Web Services •  Spring Batch •  Spring Integration •  Spring Data •  Spring Mobile •  Spring Social •  Spring AMQP •  …
  • 58. 58 Spring MVC and REST •  @Controller annotated components serve as MVC handler methods and REST endpoints •  Automatic type conversion •  Data binding to domain entities •  Marshaling –  JSON, JAXB, Castor, XMLBeans, JiBX, XStream, … •  Handler methods and endpoints orchestrate the service layer
  • 59. 59 Spring Web Services •  @Endpoint annotated components serve as SOAP Web Service endpoints •  Marshaling (OXM) –  JAXB, Castor, XMLBeans, JiBX, XStream •  Endpoint methods orchestrate the service layer
  • 60. 60 Spring JMS •  Message listener containers (MLC) support –  JMS MessageListener API –  Message-driven POJOs •  Automatic type conversion from JMS Message types into –  String, Map, Object, byte[] –  Customer converters also supported •  Marshaling –  Spring OXM, customer solutions, etc. •  MLC orchestrates the service layer
  • 61. 61 Spring Integration •  Inbound and outbound messaging gateways –  Handle external protocols and APIs –  Too many to mention here! •  Automatic type conversion for method arguments and return types in Service Activators •  Marshaling and custom type conversion also supported •  The service layer can be orchestrated via declarative configuration (e.g., service activators in XML)
  • 62. 62 And the list goes on …
  • 63. 63 Composable Architecture – with Spring Infrastructure Repository Service DomainModel Spring REST Spring MVC Spring JMS Spring Integration Spring Batch Spring WS
  • 64. 64 Composable Architecture Checklist þ  Modularity þ  Layered architecture þ Canonical Domain Model þ Orchestration: web, batch, integration, web services þ Service þ Repository þ Infrastructure þ  POJO programming model þ  Separation of concerns þ  Externalized environment-specific configuration þ  Testability, automated testing, and CI
  • 66. 66 1st Class Support for Java 8 based apps •  Language features such as lambda expressions –  for callbacks with templates –  for concurrent execution •  think fork/join, map/reduce, etc. •  APIs such as JSR-310 Date and Time –  Alongside Spring’s existing support for JodaTime
  • 67. 67 Configuring Spring with Groovy 2 •  Configuring and implementing Spring-style applications using Groovy 2.x •  Groovy-based bean definitions •  Groovy as the language of choice for an entire application, as a direct and straightforward alternative to Java source files •  Groovy 2.0's static compilation support completes the picture here
  • 68. 68 Support for Key Java EE 7 Technologies •  JMS 2.0 •  JPA 2.1 •  Bean Validation 1.1 •  Servlet 3.1 •  And fully covering JCache 1.0
  • 69. 69 Enabling WebSocket-style Architectures •  Support for JSR-356 compliant runtimes •  Also supporting related technologies
  • 70. 70 Fine-grained Eventing and Messaging •  Introducing fine-grained eventing and messaging within the application •  Building on our existing application event mechanism •  Aligned with our JMS message listener mechanism
  • 71. 71 Pruning and Dependency Upgrades •  Removing a variety of deprecated packages across the framework –  See Spring Framework 3.2's deprecations! •  Raising minimum dependencies to Java 6+ –  Java SE 6+ and Java EE 6+ –  with some compromises for EE 5++ servers
  • 73. 73 Further Resources •  Spring Projects –  http://www.springsource.org/projects –  Reference Manuals –  Javadoc •  Spring Forums –  http://forum.springframework.org •  Spring JIRA –  http://jira.springframework.org •  GitHub Repositories –  https://github.com/SpringSource
  • 74. 74 Blogs •  Swiftmind Team Blog –  http://www.swiftmind.com/blog/ •  SpringSource Team Blog –  http://blog.springsource.com/
  • 75. 75 Q & A Sam Brannen twitter: @sam_brannen www.slideshare.net/sbrannen www.swiftmind.com