Slide 1

Slide 1 text

Microservices(.js) Building large systems the easier way Gergely Nemeth @nthgergo

Slide 2

Slide 2 text

$ whoami Work - RisingStack Twitter - @nthgergo GitHub - gergelyke Stuff I write - http://blog.risingstack.com

Slide 3

Slide 3 text

“an approach to developing a single application as a suite of small services” Microservices

Slide 4

Slide 4 text

Microservices Some “small” implementers: Amazon, Netflix, The Guardian

Slide 5

Slide 5 text

BUT WHY!? Microservices

Slide 6

Slide 6 text

● built as a single unit ● handle HTTP requests, execute domain logic, retrieve and update data from the database, and select and populate HTML views to be sent to the browser, handles authentication - in short: does everything ● any changes to the system involve building and deploying a new version of the server-side application The Monolithic Way

Slide 7

Slide 7 text

What about scaling? The Monolithic Way

Slide 8

Slide 8 text

You are going to have a BAD time. The Monolithic Way

Slide 9

Slide 9 text

“Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.” -- Melvin Conway, 1967 The Monolithic Way

Slide 10

Slide 10 text

The Monolithic Way

Slide 11

Slide 11 text

Back to Microservices Cross-functional teams

Slide 12

Slide 12 text

Microservices Advantages Small code base

Slide 13

Slide 13 text

Microservices Advantages Easy to scale

Slide 14

Slide 14 text

Microservices Advantages Easy to throw away

Slide 15

Slide 15 text

Microservices Advantages System resilience

Slide 16

Slide 16 text

Microservices Advantages Easy to deploy You build it, you run it.

Slide 17

Slide 17 text

Microservices Ok. How?

Slide 18

Slide 18 text

Microservices Communication HTTP REST interfaces for communication

Slide 19

Slide 19 text

Microservices Communication Or messaging over a lightweight message bus (RabbitMQ, ZeroMQ, .. )

Slide 20

Slide 20 text

Microservices Communication Yes, microservices can be written in different languages!

Slide 21

Slide 21 text

Microservices Decentralized Data Management

Slide 22

Slide 22 text

Microservices Automation When you own 10s of services, you do not want to deploy manually :)

Slide 23

Slide 23 text

Microservices Automation Use Continuous Delivery: ● automated tests ● automated deployments

Slide 24

Slide 24 text

Microservices Design for Failure Monitor & Log everything

Slide 25

Slide 25 text

Microservices Design for Failure Alerting

Slide 26

Slide 26 text

Microservices How to get started if you have a monolithic architecture? Evolutionary Design

Slide 27

Slide 27 text

Microservices Evolutionary Design The monolith still is the core of the website

Slide 28

Slide 28 text

Microservices Evolutionary Design Add new features by building microservices

Slide 29

Slide 29 text

Okok, but what is the catch? Microservices

Slide 30

Slide 30 text

Your stack traces are gone Microservices

Slide 31

Slide 31 text

Deploying breaking changes? Microservices

Slide 32

Slide 32 text

Service discovery Microservices

Slide 33

Slide 33 text

● Small code base ● Easy to scale ● Easy to throw away ● Easy to deploy ● System resilience ● Possibility to use different tech stacks Summary

Slide 34

Slide 34 text

Yes, we are hiring ;) RisingStack

Slide 35

Slide 35 text

$ ./thanks.sh