the art of heavy lifting in the enterprise worldwith oracle coherence and oracle weblogic
TRANSCRIPT
Art of Heavy Lifting in the Enterprise WorldWith Oracle Coherence and Oracle Weblogic
Deniz Seçilir (@denizsecilir)Yusuf Uğur Soysal (@yusufsoysal)
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
9 countries65.8 million subscribesLeadership in the region
Turkcell Group – Regional Leader
Turkcell Group – Regional Leader
9 countries65.8 million subscribesLeadership in the region
Turkcell TurkeyKazakhstan
Ukraine Azerbaijan
Georgia Belarus
Moldova Northern Cyprus
Turkcell Europe
34.711.7
10.14.3
2.01.71.1
0.40.3
Turkcell Group: Subscribers in Q212 (million)
Listed on the NYSE and the ISE since July
2000
0.5 million net additions in Q212
More About Turkcell
Creates employment for more than 50.000 people in TurkeyThe first and only Turkisy company listed on NYSEComplies with ISO9001, EU and US regulationsMassive tax contribution to the Turkish govermentCorporate social responsibility projects on education, culture and sports
Turkcell Technology
We are an energetic team having more than 18 years of experience combined with an ongoing commitment to innovation.
About Turkcell Technology
More than 10 years of experience in Turkcell ICT
TTECH Center put into service
Team of 400+ people with 17 customers in 17 countries
TTECH company formed with 44 engineers
First out of group customers
Our innovation is driven by our customer’s challenges and we are passionate in differentiating our customer’s businesses.
20092008 201220071994 - 2006
Our Customers
TTECH’s solutions are market proven and serve more than 100 million customers in 17 countries
Our Competencies
Mobile Marketing
SIM Asset & Services Management
Value Added Services & Enablers
Roaming Solutions
CRM & Channel Management
Business Support Solutions
Mobile Internet
Mobile Financial Services
Mobile Terminal Applications
Mobile Marketing
PACKAGED SOLUTIONS
RoamingSIM
VAS
CUSTOM SERVICES
MFS
BSS
BI
CRM MI
TerminalMobile App
Our Partners
International Memberships
Turkcell Technology has become the only associate partner of the Data Warehouse Global Leaders Group from the telecommunication sector in the EMEA region.
The GSMA represents the interests of the worldwide mobile communications industry.
CISQ works to build software quality standards and incorporates with the leading technology organizations worldwide and global initiative sponsored by Software Engineering Institute Carnegie Mellon University and OMG.
Meet Us
Why Use a Grid System
• Efficient use of resources• Dynamic, scalable data
capacity• Single, consistent view of data
• Load balancing• High availability• Process data where they are
How We Choosed Oracle Coherence?
Why We Choosed Oracle Coherence
• Scalability, Availability, Performance
• Support & Price
• Ease of Integration, Ease of Management
• Multiple Client Support
• Distributed Query Execution
TCMP, Under The Hood
• Tangosol Cluster Management Protocol (TCMP)• TCMP enhances UDP• Scalable
• UDP Multicast• Membership Management• Multicast is not required
• UDP used for• Very fast and scalable• TCMP guarantees packet order and delivery• TCP/IP connections do not need to be
maintained
Ease of Integration, Ease of Management
• Configuration Management
• Simple Cache Api
• Weblogic Console / EM Console Integration
Distributed Caching: Service Catalog Data
SCMEAPP SERVER 1
Client
Client
APP SERVER 2
Client
Client
APP SERVER 3
Client
Client
Distributed Caching: Service Catalog Data
SCME
APP SERVER 2
APP SERVER 1Client
APP SERVER 3
Client
Cac
heC
ache
Cac
heClient
Client
Client
Client
Distributed Caching: Service Catalog Data
SCME
APP SERVER 2
APP SERVER 1Client
APP SERVER 3
Client
Client
Client
Client
Client
MASTER SERVER
Our New Catalog System, CPCM
• Module that contains complete list of products like tariffs, tariff options, services, packets, campaigns etc.1 – Catalog Management
• Price elements attached to the offers2 – Price Management
• Business rules associated with the products3 – Rule Management
• A management module responsible for technical resources installed with products 4 – Resource Management
• Product specifications5 – Profile Management
• Historic data about products and requests6 – Version Management
CPCM Architecture
CPCM Core Application
Hibernate Second Level
Cache
Weblogic Application Servers
Maps cached manualy
Coherence*Web
• HTTP session-management module (built-in feature of Coherence)
• Supports wide range of application servers• Does not require any changes to the application• Allows session state to be managed in the various
caching topologies• Allows storage of session data outside of Java EE
application server• Heterogeneous applications running on mixed
hardware/OS/application servers can share common user session data.
Turkcell CRM Domain Topology
Turkcell CRM Domain Topology – Web Apps
Coherence*Web is easy to use
• Modify web.xml and weblogic.xml
• Deploy coherence-web-spi.war
• Configure Coherence Cluster
Use Coherence*Web When
•You don’t want to loose sessions while restarting/maintaining your application
•Your application 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 existing Coherence cluster
•You want to share session state across EAR files and application servers
GALATAOracle CEP
Processing big amount of data
Continuous data flow
Latency in miliseconds
Different Data Sources
User-defined windows for evaluation
Complex Event Patterns
GALATA
• 800,000 events per second
• 50 simultaneous campaign/offer capability
• Responsiveness under 1 second
• With scalable architecture, ready to expand on 0-day
GALATA
+1 +1 +1
+5+5 +5
+20+20+20+20
Turkcell SMS Proxy - Columbus
SMS & MMS Support
MO & MTForwarding
DifferentProcotols
DeliveryReports
Charging
EncryptedMessages
Bunch ofB. Rules
Turkcell SMS Proxy - Columbus
Columbus Topology
Load Balancer
Columbus Coherence Usage
• Minimize database access• Calculate distributed TPS• Quickly merge incoming messages• Match delivery reports across cluster
Columbus Distributed TPS
• Flexible licence control• Balance the load on SMSC• Reliable traffic for SMSC• Minimize network traffic – if necessary• Must be very fast
Columbus Distributed TPS
+1
+1
Columbus Distributed TPS
Columbus Distributed TPS
• Create a NamedCache• Put initial values• Increment / decrement when needed• Check current value
KEY INITIAL VALUEMT TPS 0MO TPS 0
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);}
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; }
// ...
}
Columbus – Merging Messages
• Treat different messages as one• Data may not be available on one server• Should be processed as it is available
Columbus – Merging Messages
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 VALUEMessageRef#1 Part#1 -> Part#2 -> ...MessageRef#2 Part#4 -> ...
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}
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; }
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; }
Columbus – Merging Messages
public boolean isFirstPiece() { return firstPiece; }
public List<ConcatInfo> getAllPieces() { return allPieces; }
@Override public void readExternal(PofReader reader) throws IOException { concatPiece = (ConcatInfo) reader.readObject(0); firstPiece = reader.readBoolean(1); allPieces = (List<ConcatInfo>) reader.readCollection(2, new ArrayList<ConcatInfo>()); }
@Override public void writeExternal(PofWriter writer) throws IOException { writer.writeObject(0, concatPiece); writer.writeBoolean(1, firstPiece); writer.writeCollection(2, allPieces); }}
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
Columbus – Matching Delivery Reports
1000
1101
001
10001101001
Columbus – Matching Delivery Reports
Message ID Message
#M1 Message#1
#M2 Message#2
#M3 Message#3
Confirmation ID Message ID
#C1 Message#2
#C2 Message#3
#C3 Message#1
Thank You
[email protected] (@denizsecilir)[email protected] (@yusufsoysal)