Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Breaking Down the Monolith - Peter Marton, RisingStack

Peter Marton
September 15, 2016

Breaking Down the Monolith - Peter Marton, RisingStack

The story of how we broke our Node.js monolith into 15+ services in just a couple of weeks. The talk will focus on what we have learnt during the journey and what technologies we use. This is the tale of how we did this rather than what microservices are in general.

Peter Marton

September 15, 2016
Tweet

More Decks by Peter Marton

Other Decks in Technology

Transcript

  1. whoami company: CTO, Co-founder of RisingStack work: Trace By RisingStack

    twitter: slashdotpeter blog: https://blog.risingstack.com
  2. What is ? - Node.js performance monitoring tool - Microservice

    debugging tool - Built with Node.js - Built as a monolith in MVP phase
  3. agenda 1. Monolith and Microservices 2. Why we moved to

    microservices? 3. Our experiences with microservices 4. Microservices challenges
  4. agenda 1. Monolith and Microservices 2. Why we moved to

    microservices? 3. Our experiences with microservices 4. Microservices challenges
  5. agenda 1. Monolith and Microservices 2. Why we moved to

    microservices? 3. Our experiences with microservices 4. Microservices challenges
  6. Microservice experiences - Independent and focused teams (pro) - Faster

    innovation (pro) - Easier to scale (pro) - Features fail independently (pro) - Increasing architectural complexity (cons) - Increasing response times (cons) - Harder to test (cons)
  7. agenda 1. Monolith and Microservices 2. Why we moved to

    microservices? 3. Our experiences with microservices 4. Microservices challenges
  8. Distributed tracing - Transaction ID, Correlation ID - Google Dapper

    white paper - Trace by RisingStack (SaaS) - Zipkin
  9. Proxy - Evolutionary design (pro) - Authentication in proxy (pro)

    - Cookie handling at service (cons) - Service formats response for browser (cons)
  10. API Gateway - Everything that’s client(s) specific: - Auth: Cookie

    headers, JWT token etc. - Protocol: http, WebSocket etc. - Response format: JSON, XML etc. - Combine resources: from multiple services
  11. Request signing - Trusted sources (services) on public channel -

    node-http-signature - Built-in in request and super-request npm libs https://github.com/joyent/node-http-signature
  12. Challenges - Fault tolerance - Debugging with distributed tracing -

    Response times - Proxy / API Gateway - Service teams and principles - Documented API(s)