Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Java EE Proves Effective for
Mission Critical e-Payment Systems
JavaOne 2015
CASHLESS 3.0 Payment Systems & Java EE
San Francisco, October 26, 2015
TM
less
™
About Me
Andrea Folli
CTO of the Cashless Business Unit at TAS Group,
an Italian SW Company providing advanced e-Payment solutions
for a global market.
15 years of experience in building core business and
mission-critical enterprise applications for some of the largest
financial organizations in Italy and EU.
Leading the software development of CASHLESS 3.0,
the new e-Payment suite of TAS Group built with Agile MDD
methodology on top of the Java EE 6.0/7.0 Platform.
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
2
less
™
About TAS Group
TAS Group is the
strategic partner
Experience
and Innovation
for business innovation in Payment
Professional Services
Software
Systems, Applications
Cards, Capital Markets and
ERP processes.
Housing & Hosting
Software
as a Service
Project Implementation
Other IT Services
Over 30 years
experience
Our mission is to innovate and
optimize mission-critical applications
of financial operators, creating value
for businesses through long-term
relationships with our customers
Cashless
Solutions
Payment
Networks
Cashless 3.0 Payment Systems & Java
Capital
Markets
& Treasury
Credit
Management
© TAS Group 2015
More than 400
experts
Customers in over
20 countries
eGov
& B4B
ERP
Hosting
& Housing
3
Business Unit Cashless Solution
Over 100 million cards
managed world-wide
Over 65% of Acquiring
systems and more than 50%
of Issuing systems in Italy
are managed by TAS solutions
15 years of recognized
leadership in EMV migration
across Europe
Value Proposition
Issuing
Transaction Processing
Merchants & Acquiring
EMV/Key Management
Fraud Management
Mobile & e-payment gateways
Cashless 3.0 Payment Systems & Java
Customers
Issuers
Processors
Acquirers
New PSPs
Retailers/Merchants
© TAS Group 2015
Assets and Competences
Core competence in every
aspect of the Card
Business Value Chain
Accreditations and Product
Certifications acquired
domestically and
Internationally
Cashless Solutions
4
Cashless 3.0: Strategic Guidelines
At the beginning of 2013, TAS decided to invest in a new,
innovative suite of e-Payment solutions for the international market.
Main project goals:
Manage the lifecycle of all kinds of e-Payment programs and devices, physical
(Cards) or virtual (e-Wallet), world wide
Reduce the time to market and the TCO adopting a new technology platform
with a new development and deployment methodology
Combine a strong and widely recognized business expertise with a new,
Cloud & SaaS ready, IT architecture
Standardize deployment, distribution and installation for all customers and
environments
In order to:
Expand the company’s business footprint on the international market
Maintain existing customers by replacing the legacy solutions with a new
generation of services based on best-in-class open software and technologies
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
5
Cashless 3.0: Basic Requirements
Application framework had to comply with:
High Portability: Wide range of supported platforms at 0 cost
(OS, AS, DBMS, Browser)
High Scalability: Scaling out and Scaling up, transparently on demand
High Flexibility: Convention over Configuration, Code by exception
High Pluggability: Add-On & Customizations decoupled from the core standard
product and dynamically injected on demand
High Interoperability: Quick and cheap integration in different scenarios with a variety
of systems and clients (also Legacy Systems: MF/COBOL)
High Resilience: Dynamic and real-time load-adaptive architecture
High Performance: Real-time response to a huge number of concurrent requests
(e.g: authorizing of 1K+ payment tx per sec)
Cashless 3.0 Payment Systems & Java EE
© TAS Group 2015
6
Cashless 3.0: Advanced Requirements
Architecture had to be:
Natively designed As a composable set of self-consistent, interoperable business
for SOA services provided through well-defined and stable interfaces
Built on “Best of Class” But compliant with the most diffused IT Technologies and
OSS Technology Industry Standards (Oracle, Red-Hat, IBM, IBM z/OS)
I18n/L10n Full Support for MultiLocale, MultiLanguage, MultiCurrency
Cloud & SaaS Ready Full Support MultiCompany and MultiTenancy
Compliance With the OWASP and PCI-PA-DSS security standards
Vertical Procedures
Cashless 3.0 Payment Systems & Java EE
Cloud Services
© TAS Group 2015
7
Cashless 3.0: The Organizational Perspective
New application architecture should drive a new culture of innovation
based on remote team working and agile programming.
A new way of thinking, designing and programming standard, reusable, and
fully portable SW components
Guarantee the business continuity on existing installations by elaborating
migration strategies and patterns to make the new value proposition attractive
for the established customers
Initial efforts devoted to internal training, knowledge exchanges and sharing
Key steps:
Collect and actualize the existing know-how
Apply the resulting business logics to the new architecture
Define application components and business services
Evaluate effort, cost estimation, task definition and planning
Staff up and skill building
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
8
Cashless 3.0: The Existing Assets
Legacy business components written in COBOL
Some Java Web Applications for data setup and management
(JSF 1.2, Servlet 2.3, JSP 2.1, Hibernate, Spring, GWT, JDBC ...)
Some vertical J2EE Applications (EJB 2.X, Hibernate, ...)
e.g. POS Terminal Management, ATM Terminal Management, Key Management System
Java SE 1.4/1.5, J2EE 1.4
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
9
Cashless 3.0: The whole pricture
Cashless 3.0: The Main
Picture
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
10
Cashless 3.0: CMS organization model
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
11
Cashless 3.0: CMS production model
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
12
Cashless 3.0: CMS sales model
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
13
Cashless 3.0: The Big Challenge
At the end of the day:
A big challenge with many risk factors
But also a sensational opportunity for a “brave heart” SW Engineer.
OK ... more or less
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
14
Cashless 3.0: The first crucial decision
The first and most important decision:
Adoption of the Java EE 6.0 Platform as the only
development platform for all components.
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
15
Cashless 3.0: Decision Factors
Why the Java EE 6.0 Platform?
To replace the existing “puzzle” with a unique set of standard
technologies, vendor-independent, platform neutral
To avoid direct dependencies on external frameworks enforcing the full
compliance with the standard API specifications
To use the EJB3 Technology to encapsulate the business logic of the
business services
To use the JTA Technology to manage in a transparent and safe way the
transaction management and concurrency
To use JPA Technology to abstract the persistent layer from the
underlying DBMS
In a nutshell…
Java EE 6.0 natively provided us all the features we needed.
Plus, Java’s roadmap gave us strong guarantees on future
development.
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
16
Cashless 3.0: A quick look at the history of Java EE
At the beginning of 2013 the available releases of Java
Platform Enterprise Edition were:
Release
Release Date
JSR
J2EE 1.4
November 2003
JSR 151
Java EE 5.0
May 2006
JSR 244
Java EE 6.0
December 2009
JSR 316
Last stable release was Java EE 6.0, RI:
Oracle-Sun Open Source Glassfish AS 3.1.2
The new release already planned:
Java EE 7.0 [JSR 342]*
January 2010
*actual release date: May 2013
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
17
Cashless 3.0: Java EE 5.0 was groundbreaking
The transition from J2EE 1.4 to JEE 5.0 was accompanied by a deep
architecture refactoring providing
a simplified
programming model:
No more:
Java “Evil Edition”
EJB as @Annotated POJO
Instead: Java Enterprise Edition
ORM Lightweight Persistence Architecture
Dependency Injection for EJB
The need for refactoring came from the community and the
marketplace:
EJBs 2.x were too complex while emerging frameworks like Spring
provided simpler and more flexible solutions based on the new patterns:
IOC, DI, AOP
Entity Beans were very frequently replaced by lightweight ORM
frameworks like Hibernate, MyBATIS, EclipseLink
Java EE 5.0 integrated most of the new features introduced by the
emerging frameworks into:
EJB 3.0 - JSR 220
JPA 1.0 - JSR 220
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
18
Cashless 3.0: Java EE 6.0 was strengthening
Java EE 6.0 reinforced and improved new technologies introduced
by Java EE 5.0 while pruning some obsolete or useless API.
Main improvements:
Web: Servlet 3.0, Java Server Faces 2.0
@WebServlet, @ServletFilter, @WebServletContextListener
Distributed configuration: web-fragment.xml
Programmatic creation of Servlets, Filters, Listeners
Web Services: JAX-WS 2.2, JAX-RS 1.1
Enterprise: EJB 3.1, JPA 2.0, CDI 1.0
Portable JNDI Names
No-interface View SLSB
Singleton Beans, Concurrency Management (@Lock, @AccessTimeout)
@Asynchronous SLSB methods and Future Interface
@Schedule, @Schedules
Improved JPQL features, Criteria API
@Inject
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
19
Cashless 3.0: Building the Ecosystem
Analysis & Modeling: Adoption of Visual Paradigm
a lightweight and flexible UML Modeling Tool, supporting the
Agile Model Driven Development while keeping separate the
two phases of Modeling and Programming
Development: Adoption of Eclipse Java EE IDE
Building & Distribution: Adoption of Maven for project management, building,
deployment, assembly and packaging
Versioning: Adoption of SVN
Ticketing & Milestones: Adoption of Trac
Functional & Adoption of SoapUI for API functional and performance testing
Performance Testing:
Quality Assurance: Adoption of SonarQube for code analysis
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
20
Cashless 3.0: Building the Application Architecture
Lean and clean architecture based on well defined
and decoupled layers
Small & self-contained projects ensuring a clear
separation of roles and responsibilities
Common sets of
programming patterns
naming conventions
templates
Strong focus on reuse and portability
No SFSB, only SLSB and Singleton Beans
Parallel processing through @Asynchronous
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
21
Cashless 3.0: Building the Application Architecture
Auto-incremented ID as PK on all JPA Entities
Version on all JPA Entities for optimistic locking
Natural candidate key on all JPA Entites to redefine
equals() and hashCode()
Lazy Fetching for all associations
No embedded SQL/JPQL inside the code but re-usable
JPQL and Native static queries
Use of Criteria API for dynamic queries, just in case
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
22
Cashless 3.0: Building the Application Architecture
Generic, reusable DAO to abstract application code from
the persistence layer and transaction management
(CMT/BMT/Local TX)
Separated Persistence Unit for TP and Batch processing
JTA-CMT for OTP
JTA-BMT or Local Transactions for Batch Processing
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
23
Cashless 3.0: A look inside
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
24
Cashless 3.0: Agile MDD
Application of the basic principles of OO for Business Analysis:
Forward Engineering
Encapsulation;
Loose coupling;
But flexible and not invasive
High cohesion;
Clear separation of role and responsabilities.
Creation of the application model by UML/SOAML:
Use Case Modeling;
Component Modeling;
Process and Service Modeling;
Data Modeling.
Generation (full/incremental) of DDL and Entities for persistence
Development of the business
Reverseservices
Engineering
(interface, control logic, business logic)
Functional & Performance Test by SoapUI
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
25
Cashless 3.0: Programming Patterns
Web Tier (JSF):
Standard templates
Composite components
Business Tier (EJB, JTA, JPA):
Service Locator
Session Facade
Message Facade
Business Delegation
On Demand Caching
Abstract Factory
Singleton
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
26
Cashless 3.0: Smart programming
Eclipse IDE is the only workbench for developers:
Transparently integrated with Maven Repo by M2Eclipse
Transparently integrated with SVN by Subclipse
Transparently integrated with Trac and MyLyn
Hot deployment on JBoss for local test and debugging
Real-time code analysis by SonarQube, FindBugs, Lapse
ITALY-BOLOGNA
ITALY-ROME
ITALY-MILAN
SWITZERLAND
SPAIN-CORDOBA
Multi Country Software Factory
CENTRAL TEST ENVIRONMENT
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
CENTRAL TEST ENVIRONMENT
27
Cashless 3.0: Smart building
Smart and Transparent Building for different targets
Selection of different combinations of AS and DBMS
through the use of maven profiles:
mvn -P jboss, postgresql
mvn -P jboss, mysql
mvn -P websphere, db2
mvn -P weblogic, oracle
It affects JPA the specific configuration for DBMS, the
tune-up of transaction management/resources and the
specific deployment descriptors for the AS.
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
28
Cashless 3.0: Switchable Features and Setup
Activation of switchable features
Enable/Disable multilanguage support
mvn (-P ML | -P noML)
DB Multitenancy setup and deliverables building through
dynamic properties:
mvn –D owner=<client_code>
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
29
Cashless 3.0: Pluggable Custom Components
Abstraction from specific client needs and custom
implementations through pluggable delegates
Web Services
GUIs
Core Business
Logic
Business
Business
delegates
Business
delegates
Delegates
Client
Client
technologies
Client
technologies
Technologies
Achieved through standard CDI specializations,
stereotypes and alternatives:
@Specializes
public class Client1AuthorizationDelegate extends AuthorizationDelegate { … }
@Client1
public class SolutionADelegate implements SolutionDelegate { … }
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
30
Cashless 3.0: Target Driven Packaging
Dynamically building of final deliverables
Ad-hoc package assembly through maven profiles and
modular dependency
Libraries, delegates and custom implementations are
automatically included in the final deliverables
specific to the client
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
31
Cashless 3.0: Switchable Features and Setup
The Java EE 7.0 API we are working on
Rearrangement of batch processes accordingly to the Batch
all folks!
Applications for the JavaThat’s
Platform
(JSR-352) and “chunkoriented” programming
Usage of the Concurrency Utilities for the Java EE (JSR-236)
for improved asynchronous parallel processing
Usage of the improved CDI 1.2 API
Usage of HTML5 and WebSocket
Cashless 3.0 Payment Systems & Java
© TAS Group 2015
32
TM
Andrea Folli
(646) 351-0969
+39 348 0990260
[email protected]
TAS Group
TAS USA
www.tasgroup.eu
www.tasgroup.us.com
[email protected]
[email protected]
THANK YOU
Cashless 3.0: Java EE proves effective for
mission critical e-Payment Systems