Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Building reactive applications with Node.js and Red Hat JBoss Data Grid Galder Zamarreño Arrizabalaga Divya Mehra

Slide 3

Slide 3 text

Galder Zamarreño Arrizabalaga • Senior Software Engineer @ Red Hat • Infinispan / JBoss Data Grid co-founder • JSR-107 expert group member • Keen interest in functional programming

Slide 4

Slide 4 text

Divya Mehra • Principal Product Manager @ Red Hat • Responsible for Red Hat JBoss Data Grid roadmap

Slide 5

Slide 5 text

Agenda • Introduction to Red Hat JBoss Data Grid • Building a reactive application with Node.js and Red Hat JBoss Data Grid

Slide 6

Slide 6 text

Introduction to Red Hat JBoss Data Grid

Slide 7

Slide 7 text

Red Hat JBoss Data Grid

Slide 8

Slide 8 text

Why in-memory data management? • Large volume, velocity, and variability of raw data • Enterprises that can extract meaningful, actionable information faster have competitive advantage • Increase revenues • Reduce risks

Slide 9

Slide 9 text

E-commerce website Challenge: Maintain page load times, while computing relevant purchase recommendations from data from different sources: • Mobile device → location • Social graph →what friends are buying or recommending • 3rd party sellers or partner sites -> current promotions • User’s purchase or click-through history -> behavioral targeting Relevant recommendation can increase conversion by 25% However, each 1-second increase in page load time → up 10% drop in overall revenue Can your data platform scale out to large volumes of often-changing data without affecting application performance?

Slide 10

Slide 10 text

SaaS Application Provider Challenge: Users of SaaS application should be unaffected by spikes in demand, node failure, and system upgrades of the data platform. Loss of availability and performance will affect SaaS app provider’s SLA to its customers • Revenue loss • Reputation impact Does your data platform support high availability, elasticity, and rolling upgrades, necessary for a cloud-native architecture?

Slide 11

Slide 11 text

Telecom service provider Challenge: Real-time billing and usage information for thousands of concurrent users • A customer sends a text, uses data, or makes a call • Transaction is recorded in the data platform, and the customer’s total usage and bill is updated immediately triggered by creation of this new entry. Can your business logic react to changes in the data in real-time and at scale?

Slide 12

Slide 12 text

JBoss Data Grid - 4-IN-1 package

Slide 13

Slide 13 text

Leader in Forrester Wave™: In-Memory Data Grids, Q3 2015 Ahead in both evaluation dimensions vs. open source competitors 1.Current offering 2.Strategy and vision Download free from: https://engage.redhat.com/ forrester-data-grid- s-201509240128

Slide 14

Slide 14 text

Reactive apps with Node.js and JBoss Data Grid 7

Slide 15

Slide 15 text

Architecture HTTP TCP/IP

Slide 16

Slide 16 text

Elm • Functional language for Web • Compiles to Javascript • No runtime errors in practice • Statically typed, friendly errors • Help build well-architected code • Easy to learn! Easy to use!

Slide 17

Slide 17 text

Event Manager Microservice • Node.js middleware • Based on Express.js • Listens for HTTP on port 3000 • Uses JDG 7 Node.js client • Requires Node 0.10 or higher

Slide 18

Slide 18 text

JDG Persistence • Runs a JDG 7 server domain • Formed of 3 nodes • Each element stored in 2 nodes • Redundancy via partial replication • Redundancy for failover

Slide 19

Slide 19 text

Event Iteration (1) GET /events

Slide 20

Slide 20 text

Event Iteration (2) GET /events iterate event 1 event 2 …

Slide 21

Slide 21 text

Event Iteration (3) GET /events iterate event 1 event 2 … JSON event[]

Slide 22

Slide 22 text

Demo Event Iteration

Slide 23

Slide 23 text

Event Insert (1) POST /events

Slide 24

Slide 24 text

Event Insert (2) POST /events putIfAbsent

Slide 25

Slide 25 text

Event Insert (3) POST /events putIfAbsent true/false created event

Slide 26

Slide 26 text

Event Insert (4) POST /events putIfAbsent true/false created event JSON true/false WS: JSON event WS: JSON event

Slide 27

Slide 27 text

Demo Event Insert

Slide 28

Slide 28 text

Event Search (1) GET /search ?q=query

Slide 29

Slide 29 text

Event Search (2) execute GET /search ?q=query

Slide 30

Slide 30 text

Event Search (3) execute results JSON results GET /search ?q=query

Slide 31

Slide 31 text

Demo Event Search

Slide 32

Slide 32 text

github.com/galderz/infinispan-events/tree/june16

Slide 33

Slide 33 text

Credits Window by Oleg Frolov from the Noun Project Server Error by Montu Yadav from the Noun Project Databases by Oliviu Stoian from the Noun Project