Microservices with 
 Node.js and RabbitMQ Paulius Uza, CTO @ BDSwiss 17 December 2015
- Financial Institution - 500K+ retail customers worldwide - Financial product for retail customers - Customer facing web services handle 50M+ requests per month
Infrastructure Postgres Mongo Redis AWSHeroku ProductCRM
- Financial Institution - 500K+ retail customers worldwide - Financial product for retail customers - Customer facing web services handle 50M+ requests per month - Multiple financial products, multiple regions
Infrastructure Postgres Mongo Redis AWSHerokuProduct 1 CRM 1 CRM 2 Product 2
5 minutes later… From: sales@problem.com To: developers@problem.com Hey, good work on the new product launch. How can we lookup the customer’s information for all products from one CRM?
5 minutes later… From: sales@problem.com To: developers@problem.com Hey, good work on the new product launch. How can we lookup the customer’s information for all products from one CRM?
Infrastructure Postgres Mongo Redis AWSHerokuProduct 1 CRM 1 CRM 2 Product 2
Infrastructure Postgres Mongo Redis AWSHerokuProduct 1 CRM 1 CRM 2 Product 2
Infrastructure Postgres Mongo Redis AWSHerokuProduct 1 CRM 1 CRM 2 Product 2 CRM # Product #
Requirements - Enable new business capabilities - Keep products de-coupled - Horizontal scalability everywhere - Plug & Play, self-healing infrastructure - Keep the maintenance of the infrastructure to bare minimum
Solution: Data Layer message queue based communication layer for microservices
Before Postgres Mongo Redis AWSHerokuProduct 1 CRM 1 CRM 2 Product 2
After Postgres Mongo Redis AWSHerokuProduct 1 CRM 1 CRM 2 Product 2 RABBIT MQ Master CRM
Demo Time
How to use it? - Use message queues as a transport between micro-services (e.g. RabbitMQ) - Include Data Layer into your micro-services as add-on to create interconnections BONUS: ETCD - Use ETCD for dynamic and distributed configuration of the microservices infrastructure - Use ETCD configuration to publish on and subscribe to message queues and exchanges - Cloud ETCD available at www.compose.io/etcd
Data Layer is now Open Source github.com/bdswiss/data-layer-rabbitmq License MIT
Thanks!
 Paulius Uza, CTO @ BDSwiss Special thanks to Christos Alatzidis and Jonathan Panagiotidis https://github.com/bdswiss https://angel.co/pauliusuza https://twitter.com/pauliusuza

Microservices with Node.js and RabbitMQ