building resilient microservices with apache qpid … · 2017-12-14 · building resilient...

22
BUILDING RESILIENT MICROSERVICES with APACHE QPID PROTON Richard Li Rafael Schloming datawire.io

Upload: others

Post on 26-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

BUILDING RESILIENT MICROSERVICES with APACHE QPID PROTON

Richard LiRafael Schloming datawire.io

Page 2: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

• MICROSERVICES • DESIGNING MICROSERVICES • DEMO • WRAP UP

Page 3: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

• Release any time • You’re responsible for

reliability, availability, scalability, security

• You’re also responsible for monitoring, billing, user admin, …

Page 4: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Idiot proof deploy Homogenous tech stack

Minimize upgrade frequency

Synchronized release

Easy for vendor to debugACID; 1 simultaneous

release

Page 5: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Ship as fast as possible Continuous delivery

Lots of functional breadth

Design/build in parts

Reliability, availability, security, scale

Resilient system design

Page 6: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Microservices.

Continuous delivery

Design/build in parts

Resilient system design

Page 7: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Componentization via Services

Organized around Business Capabilities

Products not Projects

Smart endpoints and dumb pipes

Decentralized Governance

Decentralized Data Management

Infrastructure Automation

Design for failure

Evolutionary Design

http://martinfowler.com/articles/microservices.html

Page 8: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

DESIGNING MICROSERVICES

Page 9: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Monolith

1. Send a tweet.

2. Get followers. 3. Publish tweet.

App server

Page 10: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Three App Servers

1. Send a tweet.

2. Get followers.

3. Publish tweet.

App server

Page 11: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

App Servers + Asynchronous Queue

1. Send a tweet.

2. Queue tweet for sending.

3. Process new tweets.

4. Get followers.

5. Publish tweet.

Not a typical app server

Page 12: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

App Servers + Asynchronous Queue

1. Send a tweet.

2. Queue tweet for sending.

3. Process new tweets.

4. Get followers.

5. Publish tweet.

Not a typical app server

Recommend followers

Page 13: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Fully Asynchronous

1. Send a tweet.

2. Queue tweet for sending.

3. Process Tweet

4. Publish tweet.

Publish changes to followers

Recommend new people to follow

Page 14: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

MESSAGING

Page 15: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

HTTP

LB LB LB

Page 16: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Asynchronous Messaging

Q T

Page 17: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Asynchronous Message Broker

Broker

Page 18: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

DEMO

Page 19: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

Smart endpoints with Proton

Q T

“Barkers”

Outbox

Business Logic

Inbox

Clients

Page 20: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

• Native AMQP 1.0 protocol engine

• Core engine implemented in C • Language bindings in Python,

JavaScript, Ruby, PHP, Perl, Java, Go, C++

Practical Proton Details

• Part of Apache Qpid • Used by a number of Qpid

projects, including the C++ brokers, JMS Client, Qpid Dispatcher

• Also used by ActiveMQ, HornetQ, Microsoft Azure, IBM MQLite, and many organizations

http://qpid.apache.org/proton

Page 21: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

SUMMARY

• Microservices are a natural paradigm for cloud-delivered software

• Microservices need to be loosely coupled • Asynchronous messaging is the key to loose coupling • Proton provides a simple, powerful async messaging

engine

Page 22: BUILDING RESILIENT MICROSERVICES with APACHE QPID … · 2017-12-14 · BUILDING RESILIENT MICROSERVICES ... Resilient system design. Microservices. Continuous delivery Design/build

THANK YOU!

[email protected] [email protected]

http://qpid.apache.org/proton