Slide 1

Slide 1 text

@bogdanned Bogdan Nedelcu 1 Scaling event driven systems: Node.js and GraphQL Principal Software Engineer Node.js Global Summit 05.31.2020

Slide 2

Slide 2 text

@bogdanned Once upon a time there was ... 2

Slide 3

Slide 3 text

@bogdanned … a monolith 3

Slide 4

Slide 4 text

@bogdanned … split into microservices 4

Slide 5

Slide 5 text

@bogdanned … choreographed by events 5

Slide 6

Slide 6 text

@bogdanned Event driven designs are focused on system behaviour rather than structure. 6

Slide 7

Slide 7 text

@bogdanned Node.js ... … an asynchronous event-driven runtime 7

Slide 8

Slide 8 text

@bogdanned How does Node scales? 8

Slide 9

Slide 9 text

@bogdanned Requirements - performant - cost effective - reliable, fail safe 9

Slide 10

Slide 10 text

@bogdanned Node performs well when the amount of CPU work per request is relatively “small”. 10

Slide 11

Slide 11 text

@bogdanned Scale Horizontally 11

Slide 12

Slide 12 text

@bogdanned Running more instances of a non performant app is not cost effective. 12

Slide 13

Slide 13 text

@bogdanned Scale Vertically 13

Slide 14

Slide 14 text

@bogdanned What about … building apps that leverage the hardware more? 14

Slide 15

Slide 15 text

@bogdanned Node inherits the Event Loop model that made Javascript successful in the browser. 15

Slide 16

Slide 16 text

@bogdanned Worker threads 16

Slide 17

Slide 17 text

@bogdanned 17

Slide 18

Slide 18 text

@bogdanned Can I use worker threads for everything? 18

Slide 19

Slide 19 text

@bogdanned Spawning workers is expensive if done frequently. 19

Slide 20

Slide 20 text

@bogdanned How can I use this with GraphQL? 20

Slide 21

Slide 21 text

@bogdanned GraphQL subscriptions: - server: push data to client - clients: listen to real time messages 21

Slide 22

Slide 22 text

@bogdanned 22

Slide 23

Slide 23 text

@bogdanned In the real world ... 23

Slide 24

Slide 24 text

@bogdanned 24

Slide 25

Slide 25 text

@bogdanned Demo 25

Slide 26

Slide 26 text

@bogdanned 26

Slide 27

Slide 27 text

@bogdanned Future work - deployment to cloud - add performance hooks - set up profiling 27

Slide 28

Slide 28 text

@bogdanned Summing Up - node is a perfect fit for event driven systems - worker threads improve performance - easily go fullstack with GraphQL 28

Slide 29

Slide 29 text

@bogdanned thank @you 29

Slide 30

Slide 30 text

@bogdanned Bogdan Nedelcu Entrepreneurial software engineer with a proven track record across large IT projects within the finance and construction industry. 30