60
1 COMPANY CONFIDENTIAL DO NOT DISTRIBUTE #Perform2015 Daniel Khan Technology Strategist at Dynatrace @dkhan JavaScript Everywhere

JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

  • Upload
    others

  • View
    38

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

1 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Daniel KhanTechnology Strategist at Dynatrace@dkhan

JavaScript Everywhere

Page 2: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

2 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 3: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

3 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

1980 20001995 2005 2010 2015

Stakeholders

Page 4: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

4 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Frontend Middleware Backend

Page 5: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

5 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE5

The FrontendA funny bag of stuff

Page 6: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

6 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 7: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

7 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 8: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

8 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 9: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

9 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Make your choice!

Page 10: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking
Page 11: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

11 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 12: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

12 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 13: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

Event Handling

DOM Manipulation

Data Binding

JavaScript Frameworks provide

Page 14: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

14 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

To every action there is

always opposed an equal

reaction: or the mutual

actions of two bodies upon

each other are always

equal, and directed to

contrary parts.

Sir Isaac Newton

Page 15: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

15 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

A simple jQuery Example#button

jQuery start

Click Event Handler

Ajax Call

Callback

Page 16: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

16 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Add to Cart

sendToServer()

updateDom()

Page 17: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

17 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE17

Why should I care?

Page 18: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

18 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Add to Cart

Page 19: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

19 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 20: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

20 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE20

How to Monitor?UEM

Page 21: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

21 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 22: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

22 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

∆Action ... Reaction

Page 23: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

23 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 24: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

24 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 25: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

25 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 26: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

27 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 27: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

28 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE28

The MiddlewareA crash course to Node.js

Page 28: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking
Page 29: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking
Page 30: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking
Page 31: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

32 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 32: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

33 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 33: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

34 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

So it’s the next Ruby on Rails, right?

Page 34: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking
Page 35: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

36 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Foundation

Page 36: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

37 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 37: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

38 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Who uses it?

Page 38: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

39 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 39: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

40 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Eran Hammer

Page 40: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

41 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 41: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

42 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

A “Hello World” Node.js web “application”

Page 42: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

43 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Node.js is …

… a C++ Program controlled by V8 JavaScript

Page 43: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

44 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 44: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

46 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 45: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

47 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE47

Understanding the Event Loop

Page 46: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

48 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

DatabaseBrowser Java Application

Traditional approach

Page 47: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

49 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

DatabaseBrowser Node.js Application

IO Threads

Nodes approach

Page 48: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

51 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Blocking vs. Non-Blocking

PHP

Node.js

Page 49: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

52 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Node.js is a long running process

Page 50: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

53 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE53

How to Monitor

Page 51: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

54 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 52: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

55 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Complete visibility through all tiers

Frontend Middleware Backend

Page 53: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

56 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE56

Node.js in Ruxit

Page 54: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

57 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 55: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

58 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Page 56: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

59 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE59

Node.js Roadmap• Memory Metrics

• Process Metrics

• Deeper Insights

• CPU Sampling

Page 57: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

60 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE60

Questions?Daniel [email protected]

http://apmblog.dynatrace.com/author/daniel-khan/

@dkhan

Page 58: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

61 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Daniel Khan | [email protected]

@dkhan

Page 59: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

62 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015

Persona Icons – For your use

Recolor these icons as

needed to match

Dynatrace brand

colors. PictureTools/Format/Color

Customer Conversion

Fanatic

for

Digital Business

Owners

Deployment-obsessed

Releasearaptor

for

Development

War Room

Peacemaker

for

Operations

Page 60: JavaScript Everywhereeverywhere... · Browser Node.js Application Database IO Threads Nodes approach. 51 COMPANY CONFIDENTIAL –DO NOT DISTRIBUTE #Perform2015 Blocking vs. Non-Blocking

63 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #Perform2015COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE