4finance microservice pilot in poland

111
Microservices PILOT

Upload: marcin-grzejszczak

Post on 01-Dec-2014

738 views

Category:

Technology


5 download

DESCRIPTION

Link to the youtube video - https://www.youtube.com/watch?v=f_fGwa2-rMk Link to micro-infra-spring @Github https://github.com/4finance/micro-infra-spring Link to slides - https://docs.google.com/presentation/d/1alWCqeNK2KT-bjidlGZ_tvoN5hYQT0VBhbMcrOzkGyU/edit?usp=sharing You are more than welcome to use our libs, submit issues and create PRs :)

TRANSCRIPT

Page 1: 4finance microservice pilot in Poland

Microservices

PILOT

Page 2: 4finance microservice pilot in Poland

Agendaproblems being solvedhow to use it

Page 3: 4finance microservice pilot in Poland

Problems of a microservice

Page 4: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 5: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 7: 4finance microservice pilot in Poland

Who can I talk to?you just have to:

create a microservice metadata file (i.e. microservice.json)

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

src/main/resources/microservice.json

Page 8: 4finance microservice pilot in Poland

Who can I talk to?you just have to:

add 4finance micro-infra-spring-base dependency to your project

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring-base:0.5.2'

}

Page 9: 4finance microservice pilot in Poland

Who can I talk to?you just have to:

add service discovery module

@Configuration

@Import([ServiceDiscoveryConfiguration])

class MyConfiguration {

}

Page 10: 4finance microservice pilot in Poland

Microservice metadata file

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

src/main/resources/microservice.json

Page 11: 4finance microservice pilot in Poland

Microservice metadata file

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

Microservice context (realm)

Page 12: 4finance microservice pilot in Poland

Microservice metadata file

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

name of services I talk with

Page 13: 4finance microservice pilot in Poland

Microservice metadata file

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

paths to services I talk within context (realm)

Page 14: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 15: 4finance microservice pilot in Poland

Where are my collaborators?{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

COLLABORATOR’S PATH IN ZOOKEEPER

pl/com/ofg/payments/pl/bluecash/bluecash-vivus-pl

Page 16: 4finance microservice pilot in Poland

Where are my collaborators?

PLpl/com/ofg/loans/payment-processor

pl/com/ofg/loans/risk-analyzer

LTlt/com/ofg/loans/payment-processor

lt/com/ofg/loans/risk-analyzer

Page 17: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 18: 4finance microservice pilot in Poland

How can I contact others?if you want to call your collaborator (e.g. ‘bluecash-pl’) just:

add micro-infra-spring-base dependency to your project

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring-base:0.5.2'

}

Page 19: 4finance microservice pilot in Poland

How can I contact others?if you want to call your collaborator (e.g. ‘bluecash-pl’) just:

add Service discovery and Abstraction over RestTemplate modules

@Configuration

@Import([ServiceDiscoveryConfiguration, ServiceRestClientConfiguration])

class MyConfiguration {

}

Page 20: 4finance microservice pilot in Poland

How can I contact others?if you want to call your collaborator (e.g. ‘bluecash-pl’) just:

use 4Finance ServiceRestClient bean

Page 21: 4finance microservice pilot in Poland

How can I contact others?serviceRestClient.forService('bluecash-pl')

.post()

.onUrl('/api/whatever/123')

.body('''{"some":"json"}''')

.withHeaders()

.contentTypeJson()

.andExecuteFor()

.anObject()

.ofType(String)

COLLABORATOR’S ALIAS FROM MICROSERVICE.

JSON

Page 22: 4finance microservice pilot in Poland

How can I contact others?serviceRestClient.forService('bluecash-pl')

.post()

.onUrl('/api/whatever/123')

.body('''{"some":"json"}''')

.withHeaders()

.contentTypeJson()

.andExecuteFor()

.anObject()

.ofType(String)

HTTP METHOD

Page 23: 4finance microservice pilot in Poland

How can I contact others?serviceRestClient.forService('bluecash-pl')

.post()

.onUrl('/api/whatever/123')

.body('''{"some":"json"}''')

.withHeaders()

.contentTypeJson()

.andExecuteFor()

.anObject()

.ofType(String)

URL ON COLLABORATOR TO CALL

Page 24: 4finance microservice pilot in Poland

How can I contact others?serviceRestClient.forService('bluecash-pl')

.post()

.onUrl('/api/whatever/123')

.body('''{"some":"json"}''')

.withHeaders()

.contentTypeJson()

.andExecuteFor()

.anObject()

.ofType(String)

BODY TO SEND

Page 25: 4finance microservice pilot in Poland

How can I contact others?serviceRestClient.forService('bluecash-pl')

.post()

.onUrl('/api/whatever/123')

.body('''{"some":"json"}''')

.withHeaders()

.contentTypeJson()

.andExecuteFor()

.anObject()

.ofType(String)

HEADERS TO SEND

Page 26: 4finance microservice pilot in Poland

How can I contact others?serviceRestClient.forService('bluecash-pl')

.post()

.onUrl('/api/whatever/123')

.body('''{"some":"json"}''')

.withHeaders()

.contentTypeJson()

.andExecuteFor()

.anObject()

.ofType(String)

RETURN A RESPONSE OF A GIVEN TYPE

Page 27: 4finance microservice pilot in Poland

How can I contact others?serviceRestClient.forService('bluecash-pl')

.post()

.onUrl('/api/whatever/123')

.body('''{"some":"json"}''')

.withHeaders()

.contentTypeJson()

.andExecuteFor()

.anObject()

.ofType(String)

Page 28: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 30: 4finance microservice pilot in Poland

How can others contact me?you just have to:

create a microservice metadata file (i.e. microservice.json)

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

src/main/resources/microservice.json

Page 31: 4finance microservice pilot in Poland

How can others contact me?you just have to:

add 4finance micro-infra-spring-base dependency to your project

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring-base:0.5.2'

}

Page 32: 4finance microservice pilot in Poland

How can others contact me?you just have to:

add service discovery module

@Configuration

@Import([ServiceDiscoveryConfiguration])

class MyConfiguration {

}

Page 33: 4finance microservice pilot in Poland

How can others contact me?

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

Page 34: 4finance microservice pilot in Poland

How can others contact me?

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

Microservice context (realm)

Page 35: 4finance microservice pilot in Poland

How can others contact me?

{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

my path in context (realm)

Page 36: 4finance microservice pilot in Poland

How can others contact me?{

"pl": {

"this": "com/ofg/loans/pl/backoffice-vivus-pl",

"dependencies": {

"bluecash-pl": "com/ofg/payments/pl/bluecash/bluecash-vivus-pl"

}

}

}

MY PATH

pl/com/ofg/loans/pl/backoffice-vivus-pl

Page 37: 4finance microservice pilot in Poland

How can others contact me?when microservice boots up it registers itself in Zookeeper under specified path

you can register multiple instances under same path

Zookeeper supports load balancing (Round Robin, Random and Sticky)

Page 38: 4finance microservice pilot in Poland

How can others contact me?

/pl/com/ofg/loans/pl/backoffice-vivus-pl

instance id (you can have multiple ones)

Page 39: 4finance microservice pilot in Poland

How can others contact me?

Data as String:{ "name": "com/ofg/loans/pl/backoffice-vivus-pl", "id": "15628f76-753e-4a25-83de-de132293a58d", "address": "192.168.0.1", "port": 8080, "sslPort": null, "payload": null, "registrationTimeUTC": 1410343209917, "serviceType": "DYNAMIC", "uriSpec": { ... }}

Instance entry in Zookeeper:

Page 40: 4finance microservice pilot in Poland

How can others contact me?

Data as String:{ "name": "com/ofg/loans/pl/backoffice-vivus-pl", "id": "15628f76-753e-4a25-83de-de132293a58d", "address": "192.168.0.1", "port": 8080, "sslPort": null, "payload": null, "registrationTimeUTC": 1410343209917, "serviceType": "DYNAMIC", "uriSpec": { ... }}

Instance entry in Zookeeper:THE PATH

WHERE MICROSERVICE

REGISTERS ITSELF IN GIVEN

REALM

Page 41: 4finance microservice pilot in Poland

How can others contact me?

Data as String:{ "name": "com/ofg/loans/pl/backoffice-vivus-pl", "id": "15628f76-753e-4a25-83de-de132293a58d", "address": "192.168.0.1", "port": 8080, "sslPort": null, "payload": null, "registrationTimeUTC": 1410343209917, "serviceType": "DYNAMIC", "uriSpec": { ... }}

Instance entry in Zookeeper:

MICROSERVICE REGISTERS

ITSELF IN ZOOKEPER

WITH ADDRESS AND PORT

Page 42: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 44: 4finance microservice pilot in Poland

What’s my API?you just have to add dependencies to your project:

micro-infra-spring-swaggermicro-infra-spring-swagger-ui

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring-swagger:0.5.2'

compile 'com.ofg:micro-infra-spring-swagger-ui:0.5.2'

}

Page 45: 4finance microservice pilot in Poland

What’s my API?from micro-infra-spring-swagger:

add Swagger module to Spring’s context

@Configuration

@Import([SwaggerConfiguration])

class MyConfiguration {

}

Page 46: 4finance microservice pilot in Poland

thanks to micro-infra-spring-swagger-ui:

swagger-ui will be present under /src/main/resources/static/swagger/

What’s my API?

Page 47: 4finance microservice pilot in Poland

and now your microservice publishes its API by itself!

What’s my API?

Page 48: 4finance microservice pilot in Poland

What’s my API?

Page 49: 4finance microservice pilot in Poland

What’s my API?

RESTCONTROLLERS

Page 50: 4finance microservice pilot in Poland

What’s my API?

METHOD TYPES

Page 51: 4finance microservice pilot in Poland

What’s my API?

METHOD URLS METHOD NAMES

Page 52: 4finance microservice pilot in Poland

What’s my API? - Try me out!

Page 53: 4finance microservice pilot in Poland

What’s my API? - Try me out!

ENTER PARAMETERS

SEND A REQUEST

Page 54: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 55: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Question:

How many lines of logs were produced on production by PL Cola during 1 hour?

Page 56: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Answer:

73 000 lines of logs

Page 57: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?

You are not going to grep that, are you?

Page 61: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?correlation ID:

a header value in a requestin each microservice this header is the same for the same business actionyou can see a flow of messages between microservices in a chronological order

Page 62: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?

COLA

REQUEST

No correlationId

CorrelationId set to X

CorrelationId set to X

RESPONSE

FIRST SERVICE

REQUEST

CorrelationId set to X

CorrelationId set to X

RESPONSE

ANOTHER SERVICE

REQUEST

CorrelationId set to XCorrelationId

set to X

RESPONSECorrelationId set to X

YET ANOTHER SERVICE

REQUEST

CorrelationId set to XCorrelationId

set to X

RESPONSE

Page 63: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?you just have to:

add 4finance micro-infra-spring-base dependency to your project

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring-base:0.5.2'

}

Page 64: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?you just have to:

add CorrelationId module to Spring’s context

@Configuration

@Import([CorrelationIdConfiguration])

class MyConfiguration {

}

Page 65: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Application logs in a specified format:

"%d{yyyy-MM-dd HH:mm:ss.SSSZ, Europe/Warsaw} |

%-5level |

%X{correlationId} |

%thread |

%logger{1} |

%m%n"

Page 66: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Log example:

2014-09-10 14:34:40.448+0200 |

INFO |

538898f2-543f-48a3-ad9e-3d2961b2b73d |

qtp326276239-140 |

c.o.c.v.w.a.AbstractBackofficeApplication |

Initializing new backoffice application

Page 67: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Log example:

2014-09-10 14:34:40.448+0200 |

INFO |

538898f2-543f-48a3-ad9e-3d2961b2b73d |

qtp326276239-140 |

c.o.c.v.w.a.AbstractBackofficeApplication |

Initializing new backoffice application

TIMESTAMP IN ISO8601 FORMAT

Page 68: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Log example:

2014-09-10 14:34:40.448+0200 |

INFO |

538898f2-543f-48a3-ad9e-3d2961b2b73d |

qtp326276239-140 |

c.o.c.v.w.a.AbstractBackofficeApplication |

Initializing new backoffice application

LOGGING LEVEL

Page 69: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Log example:

2014-09-10 14:34:40.448+0200 |

INFO |

538898f2-543f-48a3-ad9e-3d2961b2b73d |

qtp326276239-140 |

c.o.c.v.w.a.AbstractBackofficeApplication |

Initializing new backoffice application

CORRELATION ID

Page 70: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Log example:

2014-09-10 14:34:40.448+0200 |

INFO |

538898f2-543f-48a3-ad9e-3d2961b2b73d |

qtp326276239-140 |

c.o.c.v.w.a.AbstractBackofficeApplication |

Initializing new backoffice application

THREAD NAME

Page 71: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Log example:

2014-09-10 14:34:40.448+0200 |

INFO |

538898f2-543f-48a3-ad9e-3d2961b2b73d |

qtp326276239-140 |

c.o.c.v.w.a.AbstractBackofficeApplication |

Initializing new backoffice application

CLASS FULLY QUALIFIED NAME (SHORTENED)

Page 72: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?Log example:

2014-09-10 14:34:40.448+0200 |

INFO |

538898f2-543f-48a3-ad9e-3d2961b2b73d |

qtp326276239-140 |

c.o.c.v.w.a.AbstractBackofficeApplication |

Initializing new backoffice applicationLOG MESSAGE

Page 73: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?

Page 74: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?

SAME CORRELATION ID

Page 75: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?

DIFFERENT MICROSERVICES

Page 76: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?you can see collected logs from all services in kibana

Page 77: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?

Page 78: 4finance microservice pilot in Poland

How to be part of a bigger system: logs?with kibana you can:

query your logs

create dashboards with filtered data

collect logs from different services

Page 79: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 81: 4finance microservice pilot in Poland

How do I expose my metrics?you just have to:

add 4finance micro-infra-spring-base dependency to your project

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring-base:0.5.2'

}

Page 82: 4finance microservice pilot in Poland

How do I expose my metrics?you just have to:

add metrics publishing module to Spring’s context

@Configuration

@Import([MetricsConfiguration])

class MyConfiguration {

}

Page 83: 4finance microservice pilot in Poland

How do I expose my metrics?we have a template of metric path in Graphite:

apps.(env).(country).(service-name).(dot-separated-metric)

apps.test.pl.bluecash-adapter.transfer.requests.balance.count

“Bluecash adapter’s” count of “transfer” type requests

Page 84: 4finance microservice pilot in Poland

How do I expose my metrics?you just have to provide (as a property):

# Environment to which you deploy application ('test', 'prod', etc.) - default value: ‘test’

metrics.path.environment=test

# Country for which you deploy your app - default value: ‘pl’

metrics.path.country=pl

# Your app name - default value: ‘service-name’

metrics.path.app=bluecash-adapter

Page 85: 4finance microservice pilot in Poland

How do I expose my metrics?having properties set you just have to update your metrics:

// treat this code more of a pseudocode ;)Counter transferBalanceRequests = metricRegistry.counter(‘transfer.requests.balance’)

void doSomethingUponTransferBalanceRequest() {

// do sth with the request for transfer balance…

// and update the counter metrictransferBalanceRequests.inc()

}

Page 86: 4finance microservice pilot in Poland

Problems of a microservicewho can I talk towhere are my collaboratorshow can I contact othershow can others contact mewhat’s my APIhow to be part of a bigger system: logshow do I expose my metricshow do I view my metrics

Page 87: 4finance microservice pilot in Poland

How do I view my metrics?solved by:

Graphite

Grafana - UI for Graphite

JMX - jconsole, jvisualvm, etc.

Page 88: 4finance microservice pilot in Poland

How do I view my metrics?you can view your metrics in Graphite

you can create dashboards in Grafana

your applictaion metrics are exposed via JMX

Page 89: 4finance microservice pilot in Poland

How do I view my metrics?

Page 90: 4finance microservice pilot in Poland

How do I view my metrics?

Page 91: 4finance microservice pilot in Poland

Ok, so how do I start?

But, but, but… it sounds so complicated!

Page 92: 4finance microservice pilot in Poland

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring-swagger-ui:0.5.2'

}

Don’t want to add separate modules?@Configuration@Import([ServiceDiscoveryConfiguration])

class MyConfiguration {

}

@Configuration

@Import([SwaggerConfiguration])

class MyConfiguration {

}

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring-swagger:0.5.2'

}

@Configuration

@Import([MetricsConfiguration])

class MyConfiguration {

}

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-inf

ra-spring-base:0.5.2'

}

@Configuration

@Import([ServiceDiscoveryConfiguration])

class MyConfiguration {

}

Page 93: 4finance microservice pilot in Poland

Don’t want to add separate modules?

Page 94: 4finance microservice pilot in Poland

Don’t want to add separate modules?

Page 95: 4finance microservice pilot in Poland

Good! We’ll do that for you!!You just have to:

add ONE dependency - 4finance micro-infra-spring to your project

import ONE configuration - WebAppConfiguration

create ONE file - microservice.json

Page 96: 4finance microservice pilot in Poland

One dependency - micro-infra-spring

repositories {

jcenter()

}

dependencies {

compile 'com.ofg:micro-infra-spring:0.5.2'

}

Page 97: 4finance microservice pilot in Poland

One config - WebAppConfiguration@Configuration

@Import(WebAppConfiguration)

class MyConfiguration {

}

If you want you can import only needed pieces or override configuration defaults

Page 98: 4finance microservice pilot in Poland

One file - microservice.json

{

"pl": {

"this": "com/ofg/your/microservice",

"dependencies": {

"collaborator": "com/ofg/microservice/collaborator"

}

}

}

Page 99: 4finance microservice pilot in Poland

Ok, so how do I start?

Question:what should I do to start working on a new microservice?

Page 100: 4finance microservice pilot in Poland

Ok, so how do I start?

Answer:

Clone a repo

Page 101: 4finance microservice pilot in Poland

Ok, so how do I start?

Without UI:https://github.com/4finance/boot-microservice

With UI:https://github.com/4finance/boot-microservice-gui

Page 102: 4finance microservice pilot in Poland

Ok, so how do I start?those repos:

contain completely set up microservice

are written in Groovy

are built with Gradle (set up for 4finance)

are JDK8 compliant

contain an example of a business scenario

Page 103: 4finance microservice pilot in Poland

Ok, so how do I start?our libs:

have Javadocs

Page 104: 4finance microservice pilot in Poland

Ok, so how do I start?our libs:

have ReadMe’s

Page 105: 4finance microservice pilot in Poland

Where are we?what we have managed to achieve:

Microservice setup (correlationId setting, metrics support, rest template abstraction etc.)

CorrelationId setting for Spring Reactor

Page 106: 4finance microservice pilot in Poland

Where are we?Libs on production in:

COLA-VIVUS

WEB-VIVUS

BLUECASH-ADAPTER

MYMOID-ADAPTER

WEB-ZAPLOCOLA-ZAPLOBROKERS

Page 107: 4finance microservice pilot in Poland

Where are we?

Microservice setup (correlationId setting, metrics support, rest template abstraction etc.)

CorrelationId setting for Spring Reactor

CorrelationId setting for Camel

NOW

Fix bugs

Consumer driven contracts (4finance StubRunner)

Circuit breaking (Netflix Hystrix)

Store properties in Zookeeper (Netflix Archaius)

Retry policies for RestTemplate

Resolve issues with circular obligatory dependencies

NEXT

Investigate Riemann and Suro as event servers / data pipelines

New templates for other JVM languages

Sky is the limit

FUTURE

Page 108: 4finance microservice pilot in Poland

Want to contribute?

Page 109: 4finance microservice pilot in Poland

Want to contribute? ISSUES!

Page 110: 4finance microservice pilot in Poland

3 steps to eternal fame1. Ask any of the existing 4Finance organization members

to add you to that organization

2. Pick an issue, fix it and create a pull request

3. Once merged profit from eternal fame

Page 111: 4finance microservice pilot in Poland

Questions?