Art of Heavy Lifting in the Enterprise World With Oracle Coherence and Oracle Weblogic
1. Art
of
Heavy
Li.ing
in
the
Enterprise
World
With
Oracle
Coherence
and
Oracle
Weblogic
Deniz
Seçilir
(@denizsecilir)
Yusuf
Uğur
Soysal
(@yusufsoysal)
2. Agenda
Benefits
of
Using
Oracle
Weblogic
and
Coherence
Turkcell
CRM
Infrastructure
–
Use
of
Coherence
and
Weblogic
Servers
Turkcell
VAS
Infrastructure
–
Use
of
Coherence
and
Weblogic
Servers
Q/A
3. Turkcell
Group
–
Regional
Leader
9
countries
65.8
million
subscribes
Leadership
in
the
region
4. Turkcell
Group
–
Regional
Leader
9
countries
65.8
million
subscribes
Leadership
in
the
region
Turkcell
Group:
Subscribers
in
Q212
(million)
Turkcell
Europe
0.3
Listed
on
the
0.5
million
net
Northern
Cyprus
Moldova
0.4
1.1
addiaons
in
Q212
NYSE
and
the
1.7
Belarus
Georgia
2.0
ISE
since
July
Azerbaijan
Ukraine
4.3
10.1
2000
Kazakhstan
11.7
Turkcell
Turkey
34.7
5. More
About
Turkcell
! Creates
employment
for
more
than
50.000
people
in
Turkey
! The
first
and
only
Turkisy
company
listed
on
NYSE
! Complies
with
ISO9001,
EU
and
US
regulaTons
! Massive
tax
contribuTon
to
the
Turkish
goverment
! Corporate
social
responsibility
projects
on
educaTon,
culture
and
sports
6. Turkcell
Technology
We
are
an
energeTc
team
having
more
than
18
years
of
experience
combined
with
an
ongoing
commitment
to
innovaTon.
7. About
Turkcell
Technology
Our
innovaTon
is
driven
by
our
customer’s
challenges
and
we
are
passionate
in
differenaaang
our
customer’s
businesses.
More
than
10
TTECH
Center
Team
of
400+
years
of
put
into
service
people
with
17
experience
in
customers
in
Turkcell
ICT
17
countries
1994
-‐
2006
2007
2008
2009
2012
TTECH
company
First
out
of
formed
with
44
group
engineers
customers
8. Our
Customers
TTECH’s
soluTons
are
market
proven
and
serve
more
than
100
million
customers
in
17
countries
9. Our
Competencies
§ Mobile
MarkeTng
§ CRM
&
Channel
Management
§ SIM
Asset
&
Services
Management
§ Business
Support
SoluTons
§ Value
Added
Services
&
Enablers
§ Mobile
Internet
§ Roaming
SoluTons
§ Mobile
Financial
Services
§ Mobile
Terminal
ApplicaTons
Mobile
Markeang
Roaming
BSS
CRM
MI
SIM
Terminal
MFS
BI
Mobile
App
VAS
CUSTOM
SERVICES
PACKAGED
SOLUTIONS
11. Internaaonal
Memberships
The
GSMA
represents
the
interests
of
the
worldwide
mobile
communicaaons
industry.
Turkcell
Technology
has
become
the
only
associate
partner
of
the
Data
Warehouse
Global
Leaders
Group
from
the
telecommunicaaon
sector
in
the
EMEA
region.
CISQ
works
to
build
so.ware
quality
standards
and
incorporates
with
the
leading
technology
organizaaons
worldwide
and
global
iniaaave
sponsored
by
So.ware
Engineering
Insatute
Carnegie
Mellon
University
and
OMG.
13. Why
Use
a
Grid
System
• Efficient
use
of
resources
• Load
balancing
• Dynamic,
scalable
data
• High
availability
capacity
• Process
data
where
they
are
• Single,
consistent
view
of
data
15. Why
We
Choosed
Oracle
Coherence
• Scalability,
Availability,
Performance
• Support
&
Price
• Ease
of
Integraaon,
Ease
of
Management
• Mulaple
Client
Support
• Distributed
Query
Execuaon
16. TCMP,
Under
The
Hood
• Tangosol
Cluster
Management
Protocol
(TCMP)
• TCMP
enhances
UDP
• Scalable
• UDP
Mulacast
• Membership
Management
• Mulacast
is
not
required
• UDP
used
for
• Very
fast
and
scalable
• TCMP
guarantees
packet
order
and
delivery
• TCP/IP
connecaons
do
not
need
to
be
maintained
17. Ease
of
Integraaon,
Ease
of
Management
• Configuraaon
Management
• Simple
Cache
Api
• Weblogic
Console
/
EM
Console
Integraaon
18. Distributed
Caching:
Service
Catalog
Data
Client
Client
APP SERVER 1
SCME
Client
Client
APP SERVER 2
Client
Client
APP SERVER 3
19. Distributed
Caching:
Service
Catalog
Data
Cache
Client
Client
APP SERVER 1 SCME
Cache
Client
Client
APP SERVER 2
Cache
Client
Client
APP SERVER 3
20. Distributed
Caching:
Service
Catalog
Data
Client
Client
SCME
MASTER SERVER
APP SERVER 1
Client
Client
APP SERVER 2
Client
Client
APP SERVER 3
21. Our
New
Catalog
System,
CPCM
• Module
that
contains
complete
list
of
products
like
1
–
Catalog
Management
tariffs,
tariff
opTons,
services,
packets,
campaigns
etc.
• Price
elements
adached
to
the
offers
2
–
Price
Management
• Business
rules
associated
with
the
products
3
–
Rule
Management
• A
management
module
responsible
for
technical
4
–
Resource
Management
resources
installed
with
products
• Product
specificaTons
5
–
Profile
Management
• Historic
data
about
products
and
requests
6
–
Version
Management
23. Coherence*Web
• HTTP
session-‐management
module
(built-‐in
feature
of
Coherence)
• Supports
wide
range
of
applicaaon
servers
• Does
not
require
any
changes
to
the
applicaaon
• Allows
session
state
to
be
managed
in
the
various
caching
topologies
• Allows
storage
of
session
data
outside
of
Java
EE
applicaaon
server
• Heterogeneous
applicaaons
running
on
mixed
hardware/OS/applicaaon
servers
can
share
common
user
session
data.
26. Coherence*Web
is
easy
to
use
•
Modify
web.xml
and
weblogic.xml
•
Deploy
coherence-‐web-‐spi.war
•
Configure
Coherence
Cluster
27. Use
Coherence*Web
When
• You
don’t
want
to
loose
sessions
while
restarang/
maintaining
your
applicaaon
• Your
applicaaon
works
with
large
HTTP
session
state
objects
• You
run
into
memory
constraints,
due
to
storing
HTTP
session
object
data
• You
want
to
off-‐load
HTTP
session
storage
to
an
exisang
Coherence
cluster
• You
want
to
share
session
state
across
EAR
files
and
applicaaon
servers
28. GALATA
Oracle
CEP
Processing
big
amount
of
data
ConTnuous
data
flow
Latency
in
miliseconds
Different
Data
Sources
User-‐defined
windows
for
evaluaTon
Complex
Event
Paderns
29. GALATA
• 800,000
events
per
second
• 50
simultaneous
campaign/offer
capability
• Responsiveness
under
1
second
• With
scalable
architecture,
ready
to
expand
on
0-‐
day
31. Turkcell
SMS
Proxy
-‐
Columbus
MO & MT
SMS & MMS Forwarding
Support
Different
Procotols
Bunch of
B. Rules
Delivery
Reports
Encrypted
Messages
Charging
35. Columbus
Distributed
TPS
• Flexible
licence
control
• Balance
the
load
on
SMSC
• Reliable
traffic
for
SMSC
• Minimize
network
traffic
–
if
necessary
• Must
be
very
fast
38. Columbus
Distributed
TPS
• Create
a
NamedCache
• Put
iniaal
values
• Increment
/
decrement
when
needed
• Check
current
value
KEY
INITIAL
VALUE
MT
TPS
0
MO
TPS
0
39. Columbus
Distributed
TPS
public boolean increment() {
Boolean result = Boolean.TRUE;
if (limitMt != null) {
result = executeIncrementTask(MT_INDEX);
}
return result;
}
private Boolean executeIncrementTask(int indx) {
ChangeTPLimitTask task = new ChangeTPLimitTask();
return (Boolean) this.storedMap.invoke(indx, task);
}
40. Columbus
Distributed
TPS
public class ChangeTPLimitTask extends AbstractProcessor
implements PortableObject {
private Boolean result = Boolean.FALSE;
@Override
public Object process(Entry entry) {
try {
Limit limit = (Limit) entry.getValue();
if( limit != null ) {
result = limit.increment();
}
entry.setValue(limit);
} catch( Exception e ) {
// handle somehow
}
return result;
}
// ...
}
41. Columbus
–
Merging
Messages
• Treat
different
messages
as
one
• Data
may
not
be
available
on
one
server
• Should
be
processed
as
it
is
available
43. Columbus
–
Merging
Messages
• Create
a
NamedCache
• Create
a
list
per
message
reference
• Add
new
message
part
to
list
• Process
message
once
all
message
parts
are
arrived
KEY
VALUE
MessageRef#1
Part#1
-‐>
Part#2
-‐>
...
MessageRef#2
Part#4
-‐>
...
44. Columbus
–
Merging
Messages
ConcatInfo concatInfo = createConcatInfo();
MergeMoConcatTask task = new MergeMoConcatTask(concatInfo);
task = (MergeMoConcatTask)
this.storedMap.invoke(concatInfo.getMessageReference(), task);
if( task.isFirstPiece() ) {
// do things related to first piece of concat
} else if( task.getAllPieces() != null && task.getAllPieces().size() > 0 ) {
// do things when all pieces are found
}
45. Columbus
–
Merging
Messages
public class MergeMoConcatTask extends AbstractProcessor
implements PortableObject {
private ConcatInfo concatPiece;
private boolean firstPiece = false;
private List<ConcatInfo> allPieces = null;
public MergeMoConcatTask() {
// for reflection purposes
}
public MergeMoConcatTask(ConcatInfo concatPiece) {
this.concatPiece = concatPiece;
}
46. Columbus
–
Merging
Messages
@Override
public Object process(Entry entry) {
try {
List<ConcatInfo> value = (List<ConcatInfo>) entry.getValue();
ConcatInfo firstConcat = null;
if( value == null ) {
this.firstPiece = true;
value = new ArrayList<ConcatInfo>();
firstConcat = this.concatPiece;
} else {
firstConcat = value.get(0);
value = new ArrayList<ConcatInfo>(value);
}
value.add(this.concatPiece);
if( value.size() == firstConcat.getConcatCount() ) {
// we have all elements
this.allPieces = value;
}
entry.setValue(value);
} catch( Exception e ) {
// handle somehow
}
return this;
}
48. Columbus
–
Matching
Delivery
Reports
• Should
know
which
message
has
arrived
• Match
delivery
reports
to
the
message
that
it
belongs
• Should
be
processed
as
it
is
available