The document discusses the benefits of using a polyglot approach to application development. It argues that a single technology or programming language is no longer suitable for modern applications given the variety of data types, need for scalability, and rapid pace of change. The document provides examples of when different programming languages may be better suited to different tasks, such as using Node.js for real-time interactions, Scala for data processing, and JavaScript for querying. It advocates choosing the right tool based on factors like maturity, features, learning curve, and productivity.
3. Modern Applications
• Modern Applications Must
Manage any type of data
Scale
Be fault
tolerant
Adapt to change
Wednesday, November 6, 13
4. Standard Architecture
• Mono-Technology
Same “language/architecture”
Single Database : RDBMS
• One size fits all approach
Wednesday, November 6, 13
JSP/JSF
Services
Messaging
JTA
DAO/JPA
5. Is it good for me?
• Many files
- XML, Sources, ..
• Hibernate/JPA is good for all?
- Impedance mismatch
• Need to scale
- from 0 to 50millions users in
6 weeks (real life)
- can I do that easily with such
architecture?
Wednesday, November 6, 13
• How to add new features
easily?
- code, schema change, ...
- and all this for yesterday!
• Lot of code
8. Big
Data
High Data Variety and Velocity
Trillions
of
Gigabytes
(Ze:abytes)
2.00
1.50
Unstructured
and
Semi-‐
Structured
Data
1.00
Text,
Log
Files,
Click
Streams,
Blogs,
Tweets,
Audio,
Video,
etc.
0.50
0
Structured
Data
2006
2009
Source:
IDC
Wednesday, November 6, 13
More
Flexible
Data
Model
Required
2012
9. 50
Million
Users
in
50
Days
Draw
Something
by
OMGPOP
Daily
Ac)ve
Users
(millions)
16
14
12
10
8
6
4
2
2/6
8
Wednesday, November 6, 13
10
12
14
16
18
20
22
24
26
28
3/1
3
5
7
9
11
13
15
17
19
21
10. How do you take this growth?
ApplicaXon
Scales
Out
Just
add
more
commodity
web
servers
System
Cost
ApplicaMon
Performance
Web/App
Server
Tier
Users
RDBMS
Scales
Up
Get
a
bigger,
more
complex
server
System
Cost
ApplicaMon
Performance
Won’t
scale
beyond
this
point
RelaXonal
Database
Users
Wednesday, November 6, 13
11. NoSQL Technology Scales Out
ApplicaXon
Scales
Out
Just
add
more
commodity
web
servers
System
Cost
ApplicaMon
Performance
Web/App
Server
Tier
Users
NoSQL
Database
Scales
Out
Cost
and
performance
mirrors
app
Xer
System
Cost
ApplicaMon
Performance
NoSQL
Distributed
Data
Store
Users
Wednesday, November 6, 13
12. OperaMonal
vs.
AnalyMc
Databases
Real-‐Xme,
InteracXve
Databases
AnalyXc
Databases
NoSQL
Fast
access
to
data
Couchbase
MongoDB
Wednesday, November 6, 13
Get
insights
from
data
Cloudera
Hortonworks
Mapr
13. Polyglot Persistence
Big
Data/Analysis
•
Log
Capture
•
RecommendaMons
•
AdCampaign
Wednesday, November 6, 13
Document
&
K/V
•
Products
•
User
Profiles
•
Game
AcMons
•
Sessions
•
Shopping
Cart
RDBMS
•
Financial
Data
•
ReporMng
Indexing
•Full
Text
Search
•Ad
hoc
queries
14. Developer New Skills
• Understand the pros/cons of each solutions
Programming API
How to access the data? (API, Query Languages)
• Learn how to design data-model
De-normalizing and duplicate data is not a problem
• Integrate each solution to your application
Wednesday, November 6, 13
15. Data Service Layer
• Wrap datastore in Services
- Loosely coupled
Data
Service
Wednesday, November 6, 13
16. Use Case : Content Driven Site
Wednesday, November 6, 13
17. Use Case: Mobile Services
Web/App
Server
Tier
Web/App
Server
Tier
Rabbit
MQ
PIM
Database
-‐
Legacy
ApplicaXon
-‐
Product
InformaXon
Wednesday, November 6, 13
NoSQL
-‐
Product
Data
-‐
AddiXonal
Metada
19. Why multiple languages?
• Sometimes we have no choice
HTML/CSS/JavaScript + Server Side
Mobile Native Applications
• Java/.Net have not evolved that must these past years
Java EE 5.0 is still mainstream (2006)
• Many languages and frameworks
Scala, Clojure, Groovy, Dart, Go, Ruby, Python, F#, Erlang
Node.js, Rails, Play!, Grails, ...
Wednesday, November 6, 13
20. Examples
• Realtime interaction with WebSockets
- Wait for Java EE 7 to be out?
- Hack your app server and application with Continuation ?
- Use Node.js and Socket.io ?
• Data Collection and Treatment?
- Find a library?
- Create your library?
- Wait for Java 8 and Lambdas?
- Use Scala? ... or other
Wednesday, November 6, 13
21. Examples
• Simple CRUD Application
Use the JavaEE stack with JPA and JSF?
Use Spring ?
Use tools like Play!, Grails, Rails ?
Wednesday, November 6, 13
22. How to chose?
• Maturity/Supportability
• Features Set
• Learning Curve
• Productivity
Wednesday, November 6, 13
23. Polyglot Programming in Action
• Build a distributed database
Manage distributed
processes
Save and retrieve data on
disk
Cache the data on RAM
Build a query engine
Wednesday, November 6, 13
24. Polyglot Programming in Action
• Manage Distributed Process
Erlang and OTP (Open Telecom Platform) has been built for that
Taking this will bootstrap a project quickly instead of implementing in
another language
• Data access and Caching
C/C++ is the best/fastest way to interact with I/O
Leverage existing Caching layer, for example Memcached written in C
• Query & Indexing
Easy to code for developer : Let’s use JavaScript
Wednesday, November 6, 13
25. Couchbase Server
Query
Engine
Query
API
11210
/
11211
8091
Admin
Console
Data
access
ports
hbp
Object-‐managed
Cache
Data
Manager
Wriben
in
C/C++
REST
management
API/Web
UI
Cluster
Manager
ReplicaMon,
ebalance,
Wriben
Sitate
RErlang
n
Manager
Shard
Erlang
/OTP
8092
Storage
Engine
Data
Manager
Wednesday, November 6, 13
Cluster
Manager
26. Use Case: Second Screen Gaming
AdministraXon
Java/Play
ApplicaXon
Python
scrips
Wednesday, November 6, 13
Users
Node.js
+
Socket
IO
27. Conclusion
• Use the good tool for the good task
Do not try to “hack” something when you have a shorter solution
Think about your users first... so deliver and get feedback
• Learning is part of our job !
And this will help you and your project
• Operations / DevOps
Think about it from day one... as a developer
• What about maintenance?
Do you think it is easier to maintain complex code?
Wednesday, November 6, 13