+ All Categories
Home > Technology > Microservices With SenecaJS

Microservices With SenecaJS

Date post: 19-Jan-2017
Category:
Upload: designveloper
View: 444 times
Download: 5 times
Share this document with a friend
21
6/15/22 1 CLICK TO EDIT MASTER TITLE STYLE Security Classification: MICROSERVICES WITH SENECAJS Trung Dang
Transcript
Page 1: Microservices With SenecaJS

9/7/2016 1

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: Internal

MICROSERVICES WITH SENECAJSTrung Dang

Page 2: Microservices With SenecaJS

9/7/2016 2

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Agenda What is microservices? Factors affect when building up the system with

microservices Introducing SenecaJS SenecaJS with RabbitMQ Integrate with Consul, RabbitMQ Talk is cheap – Show me the code ------ DEMO TIME Q/A

Page 3: Microservices With SenecaJS

9/7/2016 3

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: Internal

What is Microservices?

Page 4: Microservices With SenecaJS

9/7/2016 4

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Monolithic Application Model

1. How to scale this application to serve more customer requests?

2. The Payments Module is taking very long time to process the requests. Is there any solution with cheap cost?

Page 5: Microservices With SenecaJS

9/7/2016 5

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Page 6: Microservices With SenecaJS

9/7/2016 6

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Introducing Microservices ArchitectureThe Benefits of Microservices• Faster and simpler deployments and rollbacks• Elimination of long-term commitment to a

single technology stack• Improved fault isolation• Independently scalable services• Technology diversity• Ability to write new features as plugins

The Drawbacks of Microservices• Increased network communication• Serialization between microservices• Additional complexity in testing a distributed

system• Increased complexity in deployment

Page 7: Microservices With SenecaJS

9/7/2016 7

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Scaling an application – The Art Of Scalability

Page 8: Microservices With SenecaJS

9/7/2016 8

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Page 9: Microservices With SenecaJS

9/7/2016 9

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Main factors need to review when building up microservices system? API Gateway OR Direct Client to Microservice Communication Stateless / Stateful Invoking / Consuming service’s action Serialization between microservices Service Discovery Transaction Eventual consistency CI / CD, configuration deployment Service Health check

Page 10: Microservices With SenecaJS

9/7/2016 10

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: Internal

Introducing SenecaJS

Page 11: Microservices With SenecaJS

9/7/2016 11

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Page 12: Microservices With SenecaJS

9/7/2016 12

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Who’s using it

Page 13: Microservices With SenecaJS

9/7/2016 13

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

SenecaJS Philosophy

• Pattern Matching: instead of fragile service discovery, you just let the world know what sort of messages you are about.

• Transport Independence: you can send messages between services in many ways, all hidden from your business logic.

Page 14: Microservices With SenecaJS

9/7/2016 14

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

SenecaJS – First microservicevar seneca = require('seneca')()

seneca.add('role:math,cmd:sum', (msg, reply) => { reply(null, { answer: (msg.left + msg.right) }) })

seneca.act({ role: 'math', cmd: 'sum', left: 1, right: 2 }, (err, result) => {

if (err) return console.error(err) console.log(result) })

Page 15: Microservices With SenecaJS

9/7/2016 15

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

SenecaJS with AMQP Transport

• seneca-amqp-transporthttps://github.com/seneca-contrib/seneca-amqp-transport• It is a plugin to allow seneca listeners and clients to communicate

over AMQP• Currently support AMQP 0.9.1• For AMQP 1.0, please use seneca-servicebus-transport• It use customized RPC (Remote Procedure Call) to implement the

transportation.

Page 16: Microservices With SenecaJS

9/7/2016 16

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

SenecaJS with AMQP Transport – Show me the codevar seneca = require('seneca')() .use('seneca-amqp-transport') .add('role:create,foo:1', function (args, done) { console.log(“Server: with i = " + args.zed); done(null, { zed: args.zed, bar: args.zed + 1}) }) .listen({

type: 'amqp', pin: ‘module:test', url: 'amqp://trungdt:[email protected]:5672’ });

var client = seneca .client({ type: 'amqp', pin: ‘module:test’ url: 'amqp://trungdt:[email protected]:5672’ });

for (var i = 0; i < 10; i++) { client.act('role:create,foo:1,zed:' + i , function (err, ret) { console.log(‘Client: with i = ‘ + ret.zed); });}

Page 17: Microservices With SenecaJS

9/7/2016 17

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

SenecaJS with AMQP Transport – How it works

Routing by topic: module:test Consumer Queue

Individual Queue created by each Client

Page 18: Microservices With SenecaJS

9/7/2016 18

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Microservices using SenecaJS, RabbitMQ, Consul, SequelizeJS and FeathersJS

servicebase

Database Models

Service Logic

Service BNGI

NX

– Lo

ad B

alan

cer

Gate

way

API

1Ga

tew

ay A

PI 2

Rabb

itMQ

Configuration Storage & Health Checker

Post

gres

ql

Docker

servicebase

Database Models

Service Logic

Service A

Page 19: Microservices With SenecaJS

9/7/2016 19

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: InternalSecurity Classification: Internal

Introducing package servicebase

https://bitbucket.org/trungdang_apium/microservices_servicebase

Features :• Listener / Client mode, with AMQP Transport or HTTP Transport• Promisify all functions• Use Consul as Configuration Storage & Service Health Checher• Support multiple database adapters (Sequelize). Postgresql & Sqlite are build-in support• Loggly logs monitoring• Support Authorization when consuming the service’s action• Error handler: no more terminating your service because of TIMEOUT or fatal$ error• Including unit-test helper• Including typed-definitions file

Page 20: Microservices With SenecaJS

9/7/2016 20

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: Internal

Show Me Your Code

Page 21: Microservices With SenecaJS

9/7/2016 21

CLICK TO EDIT MASTER TITLE STYLE

Security Classification: Internal

Q&AThank you very much


Recommended