Slide 1

Slide 1 text

DevFest Tugdual Grall Technical Evangelist [email protected] @tgrall

Slide 2

Slide 2 text

Proud to be Polyglot! Tugdual Grall Technical Evangelist [email protected] @tgrall

Slide 3

Slide 3 text

• Modern Applications Must Manage any type of data Scale Be fault tolerant Adapt to change Modern Applications

Slide 4

Slide 4 text

• Mono-Technology • Single “language/architecture” • Single Database : RDBMS • One size fits all approach Current Architecture JSP/JSF   Services   Messaging   JTA   DAO/JPA

Slide 5

Slide 5 text

Is it good for me? • Many files • XML, Sources, .. • Does Hibernate/JPA is good for all? • Impedance mismatch • Need to scale • from 0 to 50millions users in 6 weeks • How to add new features easily? • changing code, updating data structure, ... • and all this for yesterday!

Slide 6

Slide 6 text

One size does NOT fit all!

Slide 7

Slide 7 text

Look at our data….

Slide 8

Slide 8 text

Big Data

Slide 9

Slide 9 text

Big Users http://www.theconnectivist.com/    &  Cisco

Slide 10

Slide 10 text

Stay up! .  .  . Application Scale out Add more “Web” servers RDBMS Scale Up Get bigger server RDBMS App  Server

Slide 11

Slide 11 text

Scaling out RDBMS .  .  . App  Server .  .  . Memcached .  .  . MySQL • Run Many SQL Servers • Data could be sharded • Done by the application code • Caching Layer

Slide 12

Slide 12 text

NoSQL to Scale out! .  .  . Application Scale out Add more “Web” servers NoSQL Scale Out Add more servers NoSQL App  Server .  .  .

Slide 13

Slide 13 text

Operational vs Analytics Databases Warehouse, Analytics Applications, Interactions

Slide 14

Slide 14 text

Polyglot Persistence Big  Data/Analysis Document RDBMS • Log  Capture   • Recommendations   • Predictions   • Ad  Campaign • Products   • User  Profiles   • Game  Actions   • Sessions   • Shopping  Cart • Financial  Data   • Reporting

Slide 15

Slide 15 text

• 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 • Note: This is something you already do ! – Operational RDBMS and Data Warehouse Developer New Skills

Slide 16

Slide 16 text

• Wrap data call in Services – loosely coupled Data Service Layer .  .  . App  Server

Slide 17

Slide 17 text

Use Case : Personalization WebSite  /  Application Personalization Database Data Processing Logs Logs Application Data

Slide 18

Slide 18 text

Use Case : Mobile / API PIM Database • Legacy Application • Product Information NoSQL • REST API • Product Data • Additional Metadata

Slide 19

Slide 19 text

Now  What?

Slide 20

Slide 20 text

Why multiple languages? • Sometimes we have no choice – HTML/CSS/JavaScript + Server Side – Mobile Native Applications • Java/.Net are slow movers – 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, ...

Slide 21

Slide 21 text

• Realtime interaction with WebSockets : – Wait for Java EE 7 to supported by your IT? – Hack your app server and application with Continuation ? – Use Node.js and Socket.io ? • Data Collection and Treatment? – Find a library? – Create your library? – Use Java 8 and Lambdas? – Use Scala? Examples

Slide 22

Slide 22 text

• Simple CRUD Application – Use the JavaEE stack with JPA and JSF? – Use Spring ? – Use tools like Play!, Grails, Rails, MEAN ? Examples

Slide 23

Slide 23 text

• Maturity/Supportability • Features Set • Learning Curve • Productivity How to chose?

Slide 24

Slide 24 text

• Build a new database – Save and retrieve data on disk – Cache the data on RAM – Build a query engine – Build replication and sharding – Build a Monitoring engine & console – Build a Backup/Restore Solution Polyglot Programming in Action

Slide 25

Slide 25 text

• Data access, caching, and replication – C/C++ is the fastest way to interact with I/O – Leverage existing Caching layer & I/O – memory-mapped file • Query & Indexing – Leverage C/C++, and expose native JS engine • Management – Web Console : Java & HTML/CSS – Agent : GoLang Polyglot Programming in Action

Slide 26

Slide 26 text

MongoDB & MMS

Slide 27

Slide 27 text

Use Case : Second Screen Experience .  .  . Node.js  +  Socket  IO Play!  ApplicaIon   Python  Scripts

Slide 28

Slide 28 text

Demonstration Sentiment  Analysis

Slide 29

Slide 29 text

Conclusion • Use the good tool for the good task – Do not try to “hack” something when you have a simpler 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 • What about maintenance? – Do you think it is easier to maintain complex code?

Slide 30

Slide 30 text

Tugdual Grall Technical Evangelist [email protected] @tgrall Questions?