the business event bus

37
The Business Event Bus Joris Meijer Dizzit

Upload: joris-meijer

Post on 21-Jan-2018

354 views

Category:

Software


0 download

TRANSCRIPT

TheBusinessEventBus

Joris Meijer

Dizzit

Dizzit &A little about me

-Married,fatherofImke,Felix-LivinginVoorschoten-+/- 8yexp.inSME(php,matlab),>4yexp.inlargeenterprise(Java)- JoinedDizzit december 2015-Scrummaster/developer- InterestedinScrum,Kafka,Docker,Rancher,muchmore

Dizzit &Our starting point

-Enterprisecontext-BEBwillbecomecorearchitecture-100sofconnectingapplications-Versioneddatacontracts

-Movementtowardsdevops-Infrastructureindependence

Dizzit &Application classification

3-2-3

3-2-3

Dizzit &Application classification

3-2-3

3-2-3availability

Dizzit &Application classification

3-2-3

3-2-3integrity

Dizzit &Application classification

3-2-3

3-2-3confidentiality

Dizzit &Design choices

3-2-3

-Multidatacentersetup-Configurationprovider-Schemaregistry-Securesetup-BEBclientlibrary-Dockerize allcomponents

Dizzit &Multi datacenter setup

3-2-3

Best Boxtel

- Active-activesetup-DatacentersinBestandBoxtel-UsingMirrorMaker- Challenge:preventfeedback

Dizzit &Multi datacenter setupActive-active setupChallenge: prevent infinite loop

AMessage x

B

sync

sync

-Preventfeedback

Dizzit &Multi datacenter setupActive-active setupChallenge: prevent infinite loop

AMessage x

B

sync

sync

Message x

-Preventfeedback

Dizzit &Multi datacenter setupActive-active setupChallenge: prevent infinite loop

AMessage x

B

sync

sync

Message xMessage x

-Preventfeedback

Dizzit &Multi datacenter setup

Custom BEB header

Magic Major Minor Info size Info ORIGINAL

MESSAGE

0B EB 00 01 04 00 00 00 01

-CustomBEBheader

Dizzit &Multi datacenter setup

-Custommessagehandler

Dizzit &Configuration provider

-Findaclustertoconnectto-Dynamicconfiguration- Interruptions(maintenance)

-Spreadtheload

Client

Configuration provider

1

2

ClusterX3

Dizzit &Configuration provider

-Findaclustertoconnectto- httpGET:

http://cp.rabobank.nl?clientTopic=distribution-outboundpushmessage- Result:

Dizzit &Configuration provider

-Spreadtheload- httpGET:

http://cp.rabobank.nl?clientTopic=distribution-outboundsmsmessage- Result:

Dizzit &Configuration provider

-Dynamicconfiguration-Allowmaintenance

- httpPOST:http://cp.rabobank.nl/admin/setswitch?switch=clusterA

- result:

Dizzit &BEB client library

-Simplifysetupforconnectingclients-Obtainandrefreshconfigurationfromconfigurationprovider-Supportmultiplestrategies

Dizzit &BEB client library

3-2-3

ConfigurationProviderClient

Kafka JavaLibrary

BEBSerDe

BEBClientLibrary

Producerfactory

Consumerfactory

Dizzit &BEB client library

-Simplifysetupforconnectingclients-Obtainconfigurationfromconfigurationprovider

Dizzit &BEB client library

-Supportmultiplestrategies

Dizzit &BEB client library

-Supportmultiplestrategies

AT_MOST_ONCE vsAT_LEAST_ONCE

Dizzit &BEB client library

-Supportmultiplestrategies

AT_MOST_ONCE vsAT_LEAST_ONCE- Deliverynotguaranteed- Noduplication- Fast

- Deliveryguaranteed- Duplicationscanoccur- Slightly slower

Dizzit &BEB client library

-Supportmultiplestrategies

Dizzit &BEB client library

-Supportmultiplestrategies-Customretrypolicy

Dizzit &BEB client library

-Reloadconfigurationfromconfigurationprovider-Maintenancewindow

Client

Configuration provider

1

2

ClusterX3

Dizzit &Schema registry

-UsesApacheavro-Contractbetweenproducersandconsumers-Backwardscompatible-Morecontroloverschemagovernance- POSTonlyallowedbyBEBdevops team

Dizzit &Schema registry

-SchemaIDispresentineverymessage-Calltoschemaregistryismadepriorto(de)serialization-Examples(DEMO)

Dizzit &Topic catalogue

Dizzit &Secure setup

-Authentication&authorization-MutualSSL- ACLspertopic,perenvironment

Dizzit &Dockerize all components

-Docker imagepercomponent-BasedonConfluentplatform-Externalizedproperties-Docker registry

Dizzit &Dockerize all components

-Docker imagepercomponent-BasedonConfluentplatform-Externalizedproperties-Docker registry-Rancherfordeployment

Dizzit &Enough talking

http://static.tumblr.com/52679116680c197db232c3116ce98537/y07rdrp/1XJmt370e/tumblr_static_demotimeheader2.png

Dizzit &DEMO

AccountEntry

Producer

AlertProducer

DashboardBackend

DashboardFrontend

AccountEntriesAlerts

Dizzit &Future

-BEBinthecloud- Configurablemirrormaker

-Dynamicscaling-Automaticfailover-Easiertopicmanagement-EXACTLY_ONCEstrategy

Dizzit &Questions?