This document discusses Rakuten's adoption of Java EE 6 and migration to WebLogic for its online financial systems. It summarizes Rakuten's policies of in-house development, efforts to educate developers on Java EE 6 technologies through books and online materials, and simplifying the architecture using Java EE 6 specifications like CDI, JPA and EJB. It also describes migrating from GlassFish to WebLogic to take advantage of WebLogic 12c and issues addressed during the migration. Finally, it discusses using WebLogic clustering and Exadata to provide high performance, reliability and scale for critical financial operations.
Java EE 6 Adoption in One of the World's Largest Online Financial Systems (for JJUG CC Fall 2014)
1. @HirofumiIwasaki
Java EE 6 Adoption
in One of the World’s Largest
Online Financial Systems
Hirofumi Iwasaki
Financial Services Department, Development Unit,
Rakuten, Inc.
CCC Fall 2014
JavaOne
OOW 2014
Special
Replay
Session
2. @HirofumiIwasaki 2
Speaker Biography
Hirofumi Iwasaki
– Group Manager, Technology Manager
– Financial Service Department, Development Unit,
Rakuten, Inc.
Carrier
– Planning, designing & implementation of huge enterprise systems for financial,
manufacturing and public systems with enterprise middleware, especially Java EE
& .NET in Japan for about 16 years.
Opus, Lectures, etc.
– Conferences: JavaOne 2014, Oracle OpenWorld 2014, Java Day Tokyo 2014,
JJUG CCC Spring (2014), WebLogic roundtable (2012-2013),
Rakuten Tech Conference (2014, 2013) etc.
– Magazine: @IT (2005-2010), CIO Magazine (2009), IT Architect (2005-2009),
Web+DB Press (2005), Java World (2001-2004), etc.
6. @HirofumiIwasaki 6
Agenda
1. Java EE 6 for Our Financial Systems
Overview
2. Starting with GlassFish,
Migrated to WebLogic
3. Hard Business Operations, with the Power of
the WebLogic and Exadata
7. @HirofumiIwasaki 7
Agenda
1. Java EE 6 for Our Financial Systems
Overview
2. Starting with GlassFish,
Migrated to WebLogic
3. Hard Business Operations, with the Power of
the WebLogic and Exadata
11. @HirofumiIwasaki 11
Internet Services
(1997)
(2003)
(2006)
(2007)
(2010)
in USA
EC in
France
(2009)
(2004)
(2008)
(2008)
(2011)
EC in
UK
EC
In Austria
In Indonesia
in Brazil
(2005)
(2009)
EC
In Thailand
(2010)
Internet Finance
(2001)(2000) (2005)
In Germany
(2012)
EC in
Malaysia
(2013)
(2013)
In Spain
EC
In Singapore
EC
In Japan
Online Books,
DVD Store
Online Hotel
Reservation
Pay-per-view
Video Service
Portal Site
Performance
Marketing
In USA
Internet
Research
Internet
Auction
EC
in Taiwan
Global eBook
Global Video
streaming Global Video
Streaming
Global Social
Messaging App
(2014)
Online Security
Brokerage
Credit Card E-money
Internet
Banking
Rakuten Life
Insurance
IP Telephony
Professional
Baseball
Marriage
Consultant
1997 2014
(2014)
Credit Card Payment
By Smartphone
(2012)
Point Service
(2013)
Phone Service
Online Golf
Reservation
Others
Energy Service
Real Café Service
Curation Service
Expanding Business Portfolio
13. @HirofumiIwasaki 13
Life
Insurance
5 Financial Services of Rakuten Group in Japan
Credit Card
E-Money
Bank
Financial
Securities
Big 5 Services
Each has Huge Transactions
24/7 Non-Stop Services
18. @HirofumiIwasaki 18
Why We Chose WebLogic 12c
Product Productivity Reliability Scalability Support Price Operation Development
WebLogic
Server 12c
Excellent Excellent Excellent Excellent Not Good Excellent Excellent
Commercial
Product A
Excellent Excellent Excellent Excellent Not Good Not Good Not Good
Commercial
Product B
Excellent Excellent Not Good Not Good Not Good Not Good Excellent
19. @HirofumiIwasaki 19
Why We Chose the Oracle Exadata?
Product Productivity Data
reliability
Scalability HA PCI DSS Operation
Oracle
Exadata
Excellent Excellent Excellent Excellent Excellent Excellent
Product X - Not Good - - - Not Good
Product Y Excellent Excellent - Excellent Not Good Not Good
20. @HirofumiIwasaki 20
PCI DSS Certification Requirements
We were supposed to be certified with PCI DSS, the card payment
industry data security standard. Exadata is the solution.
OS audit DBA audit Standard audit Fine grain audit
Audit
target
Instance start and
stop, connect with
admin or listener
DB operation with
admin user
DB operation with
login, object operation
with DDL/DML, data
reference, etc.
CRUD for specific
data
Output OS file, listener log OS file OS file,
(DBA_AUDIT_TRAIL
view in Oracle)
User definition table,
(DBA_FGA_AUDIT_
TRAIL view in
Oracle)
Audit log Time, OS info, DB
instance, action, auth
info, exit code
Time, DB user, action,
auth info, OS user, exit
code
Time, user, action, OS
user, terminal name,
query, etc.
time, DB user, OS
user, accessed
object name, fine
grain audit policy
name, query
22. @HirofumiIwasaki 22
1. Policies: Case of Rakuten
Internal Development First,
no outsourcing to external SI vendors. (Group All)
– Financial businesses are also the target for
the application of this policy.
NO ORDEREducate
&
Develop
Rare Case for
Financial Systems in Japan
In-House
Development
External Vendors
23. @HirofumiIwasaki 23
2. Education: Read, Read, Read!
RECOMMENDED
for WebLogic 12c
Good & Only
Japanese
EE 6 book
Start from HERE
4th Edition
Good Pocket
Reference!
For NetBeans 7
with EE 6
24. @HirofumiIwasaki 24
2. Education: Online Materials
NetBeans Java EE docs
for Advanced Information
Original Tutorial
for Newbies (Start here!)
25. @HirofumiIwasaki 25
2. Education: Simplify to Learn
Old Architecture
New Architecture
Too difficult to learn many
non-standard old technologies
Simple & Easy!
26. @HirofumiIwasaki 26
Comparison between old and new system
Feature Old New(JEE6)
Dependency Injection Spring DI CDI
Web Framework PHP(Symfony, Smarty) JSF
REST Servlets JAX-RS
Transactions Transactional(Spring) EJB CMT(JTA)
Persistence iBATIS JPA
Batch TERASOLUNA batch FW EJB
WebSockets ー Java API for WebSockets
Validation ー Bean Validation API
Security ー Java EE Security
27. @HirofumiIwasaki 27
Rich Clients
(no business logics)
Call
Web Presentation
(no business logics)
Business Logic
(no presentations)
3. Architecture: Apply EE 6 Specs
Data Access
JPA
EJB
CMT
JSF
DBs
Java FX JTA
Container
Managed
automatic
Transaction
Messaging
JMS MQ
Connection
RMI-IIOP
Other
Servers
EMail
MTA
JavaMail
JAX
Call
Call
Call
Call
Call
There's no
rich client
28. @HirofumiIwasaki 28
3. Architecture: Migrate from Old
Front-End (Apache)
Front-End
(WebLogic)
Back-End
(WebLogic)
Old App Architecture
Back-End
Database
View
PHP
Action
with
Business
Logic
Web
Service
API
Service
Data
Service
External
Service
External
Services
DMZ
(Apache)
Static
HTML,
Images,
CSS
View
Facelet
Exadata
External
Services
Backing
Bean
(no
business
logic)
Business
Logic
Entity
External
DAO
Entity
Transaction
Boundary
Transaction
Boundary
BEGIN
COMMIT
WebLogic
Plug-In
BEGIN
COMMIT
New App Architecture
29. @HirofumiIwasaki 29
Core
3. Architecture: Simplified
L7Balancer Front Real-time
Front Batch
Web Site B
Web Site A
Internal Site
ReverseProxy
Batch Exec
Services(akaAPIs)
System B
Gateway
Database
System C
Sub Proc
31. @HirofumiIwasaki 31
4. Environment: Easy Startup
3. Install JDK, IDE,
App servers -> Build -> Run on the local terminal
2. Download
Code from
Repository
1. Join a
project.
4. Refer JIRA tickets
for tasks
32. @HirofumiIwasaki 32
5. Test: Full Auto Testing &Validation.
Management Server
1. Auto PULL
2. Auto
Build
& Test
3. Auto
Validate4. Report
Hourly
ZERO Violations
33. @HirofumiIwasaki 33
Agenda
1. Java EE 6 for Our Financial Systems
Overview
2. Starting with GlassFish,
Migrated to WebLogic
3. Hard Business Operations, with the Power of
the WebLogic and Exadata
34. @HirofumiIwasaki 34
Chart of the mid 2011 Java EE app servers
Vendor App Server EE 5 Servers EE 6 Servers
Open Source GlassFish 2.1.1 3.1.1
Oracle WebLogic 10.3 -
IBM WebSphere 7.0 8.0
Red Hat JBoss 6.0 7.0 (partially)
In Mid 2011, We Didn’t Have WebLogic 12c Yet
We wanted to apply Java EE 6 for our new system, but not released.
We decided to use GlassFish 3.1.1 until the EE 6 applied WebLogic
(12c) released.
35. @HirofumiIwasaki 35
Impact of the Migrating within the Project
Non-Interchangeable Development Code
– Different container behaviors.
– Non Java EE, different each server special APIs.
Scheduled Impacts for Migrating WebLogic Configurations
– Cluster configurations for high availabilities.
– Other setting adjustments.
– Bug checking and applying patches.
– Connecting Oracle Enterprise Manager.
GlassFish WebLogic
36. @HirofumiIwasaki 36
Code Base BEA WebLogic 6.0
based + Improvements
Felix OSGi modular
based kernel
Web Container WebLogic Original Tomcat Container
EJB Container WebLogic Original GlassFish Original
Remote Invocation T3, RMI-IIOP, SOAP RMI-IIOP, SOAP
Transaction Processing WebLogic Original GlassFish Original
Persistence Container WebLogic Original TopLink Based
Runtime JRockit, Oracle JDK Oracle JDK
Investigation of the Differences
WebLogic GlassFish
37. @HirofumiIwasaki 37
Schedule for Migrating from GlassFish to WebLogic
Java EE 6
Development
with GlassFish
Migrating to
WebLogic
(12c)
DevelopmentOperations
Java EE Development
with WebLogic (12c)
Production
Release
Configuration of Java EE 6 applied
WebLogic (12c) and
Enterprise Manager (12c)
(Dec, 2011)
Production
Release
Finally the
new WL was
released at
the end of 2011
38. @HirofumiIwasaki 38
Non-Interchangeable Point: 1. Container Initialization
Single WAR including JSF and EJBs
– GlassFish
1. EJB initialize (@Startup)
2. JSF (Servlet) initialize (HttpServlet#init())
– WebLogic
1. JSF (Servlet) initialize (HttpServlet#init())
2. EJB initialize (@Startup)
Inverse initialization pattern
– Affected for the server initializations.
– Absorbed with the wrapper classes
39. @HirofumiIwasaki 39
Non-Interchangeable Point: 2. Remote Invocation
Different EJB remote invocation operations. Wrapped for absorbing.
GlassFish (5 properties, no security)
Properties prop = new Properties();
prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,
“com.sun.enterprise.naming.SerialInitContextFactory”);
prop.setProperty(Context.URL_PKG_PREFXIES,
“com.sun.enterprise.naming”);
prop.setProperty(Context.STATE_FACTORIES
“com.sun.corba.ee.impl.presentation.rmi.JNDIStateFacto
ryImpl”
prop.setProperty("org.omg.CORBA.ORBInitialHost",
“theservername”);
prop.setProperty("org.omg.CORBA.ORBInitialPort",
“3700”);
Context context = new InitialContext(prop);
ARemote remote
= (ARemote) context.lookup(“java:global/…”);
WebLogic (4 properties, with security)
Properties prop = new Properties();
prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,
“weblogic.jndi.WLInitialContextFactory”);
prop.setProperty(Context.PROVIDER_URL,
“t3://theservername:7001”);
prop.setProperty(Context.SECRITY_PRINCIPAL,
“weblogic”);
prop.setProperty(Context.SECURITY_CREDENTIALS,
“thepassword”);
Context context = new InitialContext(prop);
ARemote remote
= (ARemote) context.lookup(“java:global/…”);
40. @HirofumiIwasaki 40
Agenda
1. Java EE 6 for Our Financial Systems
Overview
2. Starting with GlassFish,
Migrated to WebLogic
3. Hard Business Operations, with the Power of
the WebLogic and Exadata
41. @HirofumiIwasaki 41
active-active
cluster to avoid
single-point of
failure
Non-stop
failover
Parallel
operation for
high
performance
Atomic Database Scaling
Stand-by
Real-Time
Batch
Old Database New Scaling model (Exadata)
SAN
Active
Fibre
Channel
switch
(1~8Gb/s)
InfiniBand
switch
(40Gb/s)
Real-Time
Batch
Single point of
failure for non-
stop service
MySQL
limitation for
update
transaction
performance
Batch traffic
adversely
affects online
performance
Shared storage
limitation with
another
service's bad
performance
affects
5 minutes
in fail over
Divide online /
batch servers
High
performance
networking
Independent
storage for 24
Hrs / 365 days
performance
guarantee
Storage
RT group Batch group
・・・ ・・・
Scale-out
enabled
architecture
Not scalable
architecture
×
42. @HirofumiIwasaki 42
Single Database, Single Schema Strategy
Exadata
X3-2
Replication
(APB)
WebArea
INTRAArea
Merged to
Single Exadata
Ultra-huge financial
online transactions
with ACID props.
MS SQL Server
43. @HirofumiIwasaki 43
Migration of Application
Front-End (Apache)
Front-End
(WebLogic)
Back-End
(WebLogic)
Old App Architecture
Back-End
Database
View
PHP
Action
with
Business
Logic
Web
Service
API
Service
Data
Service
External
Service
External
Services
DMZ
(Apache)
Static
HTML,
Images,
CSS
View
Facelet
Exadata
External
Services
Backing
Bean
(no
business
logic)
Business
Logic
Entity
External
DAO
Entity
Transaction
Boundary
Transaction
Boundary
BEGIN
COMMIT
WebLogic
Plug-In
BEGIN
COMMIT
New App Architecture
44. @HirofumiIwasaki 44
Fast Deployment Operations
WebLogic Server
Single
WAR
for API
WebLogic
Managed Server
Real-Time
Batch
For Management
WebLogic Management Console
Same WAR, for
different servers.
Automatic
multi server
deploying
45. @HirofumiIwasaki 45
Non-stop “Production Redeployment”
WebLogic Server
Old Module
New ModuleWebLogic
Request
Dispatcher
Requests
Auto versioning,
Non-stop redeployment
WebLogic
Managed
Server
WAR
Automatic multi
versioning, parallel
operation
Old modules will be un-
deployed gracefully when all
old sessions are invalidated.
47. @HirofumiIwasaki 47
Our Requests for WebLogic and Exadata
For WebLogic,
– Appliance of latest Java EE specs ASAP!!
We know the WebLogic is the basement of the Oracle Fusion
Middleware, but we want the latest EE for our products.
Yes, we’re waiting the next WebLogic version supporting JEE7.
For Exadata
– Make patches easy to operate
Huge costs for updating quarterly update patch.
Complicated procedures for non-stop upgrading.
Hoping for the next generation updating technology.
Hello. Let’s get started.
Let me share about the result of our financial systems using Java EE 6.
This is Hirofumi Iwasaki speaking.
I'm a financial system group manager of Rakuten.
And a professional of enterprise financial system management, planning and development.
Today’s agenda. Firstly, overview of our renewed systems.
Secondly, about the development process using GlassFish and WebLogic.
The last is the operation process using the WebLogic and Exadata.
Started from the overview.
The Rakuten group has many services around the world.
And we’re the Japan team for financial services groups.
And the rapidly expanding worldwide from 2010. 14 countries for e-commerce, 28 countries fro all serves.
The Rakuten Group Consolidated Transaction Volume worldwide
In details, the Rakuten group was started from 1997, and expanding internet finance business as shown.
We have 5 big services of financial in Japan.
Rakuten Card, Rakuten Bank, Rakuten Edy, Rakuten Security, Rakuten Life, Rakuten Insurance.
Each service has huge financial transactions.
Additionally, the systems require the 24/7, non-stop services.
These requirements are tons of heavy implementation points for stable operations.
Let's dig a little deeper. The big 3 requirement of Rakuten financial systems.
First, rapid changeable logics, Second, huge request expansion capacity, and last, transactional.
Very hard requirements for systems.
And our credit card company, the Rakuten Card’s systems were very serious situation. 3 big issues.
Firstly, outdated. Used very special old technologies, and met the EOL. We cannot fix anymore.
Secondly, complicated. One action with many system relations and bucket relays.
Thirdly, difficult to change. There are many systems, files, and databases, and tightly related, mutual dependencies.
We decided to change them all.
We have 3 big targets for the new architecture.
Sustainability, flexibility, and system transparency.
These are for the concrete, long life cycle of the financial system
The platform comparison of our future systems. We selected Java EE and dot NET framework.
Portability. Of course Java EE is excellent. Actually, .NET is poor environment limitation, only for Windows except for MONO project.
Result of financial systems. Both are good, but Java EE is excellent for its long running results of the world.
Vendor support. Java EE systems are supported by many platform vendors.
And the excellent community. We decided to chose the Java EE for our next systems.
Next is platform. We selected 3 major commercial platform for the next systems.
Finally we chose the WebLogic Server, because of its stability and huge result for the financial systems.
Especially we focused the ease of development and operations. The key factors are the “Fast Swap” and “Production Redeployment” functions of WebLogic, the most suitable for our system development and operations.
The last was the database. We chose Oracle Exadata for our new systems.
Exadata is the engineered systems of Oracle, with Oracle Database and Real Application Cluster set.
We focused the scalability, PCI DSS and ease of operations, and lead to this selection.
Actually, the general financial systems require the transactional operations with ACID property for its data keeping, and the Exadata was the best solutions for our credit systems.
As a reliable financial services, we must be certified the PCI DSS.
PCI DSS means the data security standard, so we must think the concrete repository of our credit data.
And we recognize that the Exadata is the most secure relational database for our usage.
Next, architecture policies.
I planned the Java EE to real financial systems, with these 5 big issues.
1st, policies, 2nd, education, 3rd, architecture, 4th, environment, and 5th, test.
1st, policies. In the case of Rakuten, we have a policy, "internal development first".
Of course, financial systems also. No basic policies to throw external vendors.
We must clear this core policies, and consider the next solutions to run.
2nd, educational issues. Read, read, and read.
There's many good Java EE books in book stores, but English book only, not Japanese.
Fortunately, we already changed our standard language to English, and many programmer can read them.
And there are many useful articles in world wide web.
Thanks to the NetBeans team, nice tutorial are still in the web site.
Refer to this site if you want to start Java EE development.
In old architecture, we must learn many non-standard old technologies to develop.
These causes many resource management issues & high operational costs. In new architecture, we simplified to Java EE 6.
Allow me to do a simple comparison between our old architecture and the new one.
Spring DI was used previously which was changed to CDI (we lost the ability to inject lists, maps resources and also to programmatically inject but that’s OK)
Web framework was earlier based on php framework symfony with additional php template engine like smarty
REST services were based on Servlets, which thankfully were moved to use JAX-RS
Transactions were using Transactional of spring,
iBatis was used as persisitence API.
3rd, I designed to apply Java EE 6 specs to the new architecture.
Basic structure is obeyed to standard architecture, and applied front-end to JSF.
And due to the no rich client requirement, I skipped JavaFX spec.
We had some older systems to integrate to the new architecture.
In the PHP case, we designed each from PHP business logics to the EJB API codes.
Full rewriting, 100% API-nized for re-use & collaborating services in the future.
We also re-designed the application module blocks. Center API-nized logics, with many front-ends.
All business logic designed as API, with SOAP, REST, and IIOP protocol access
enabled for future service-oriented architectures to simplify.
For the ease of development, we adopt the new IDE,
NetBeans 7 with Apache maven automatic building systems.
And we build full local programming environment to easy coding & run for rapid programming.
We made the easy startup environment to reduce startup costs.
If some programmer attends the project,
2. just download from git server,
3. install tools,
and 4. refer to JIRA for his or her for today's task management.
And to educate the accurate programming manners,
we introduced Jenkins auto-building server with static security analyzers, Sonar & VeraCode.
And we achieved zero violations before the new system release.
In the mid of 2011, we decided to apply the WebLogic server for our systems, but we didn’t have EE 6 applied one yet.
And there was the GlassFish 3.1.1 was already released as a EE 6 reference implementation.
So we decided to use GlassFish 3.1.1, until the next WebLogic 12c released.
As the migrating from GlassFish to WebLogic, there is the differences.
First, different container behaviors, and non Java EE, different each server special APIs.
So we scheduled impact for migrating as shown.
Investigation of the differences. Almost all basement is different.
The schedule. We started our system development with GlassFish, and migrated to WebLogic 12c on December 2011, the 12c unveiled time.
And started the configuration of the WebLogic Enterprise Manager 12c.
We had some older systems to integrate to the new architecture.
In the PHP case, we designed each from PHP business logics to the EJB API codes.
Full rewriting, 100% API-nized for re-use & collaborating services in the future.