SlideShare a Scribd company logo
1 of 45
EVENT BUS AS
BACKBONE FOR
DECOUPLED
MICROSERVICE
CHOREOGRAPHY
Lucas Jellema (CTO AMIS & Oracle Developer Champion)
November 2017 - JFall, Ede, The Netherlands
AGENDA
• Introduction of microservices - objectives, traits, implementation
• The making of a microservice (demo)
• The microservices platform - generic capabilities
• Using events for decoupled interaction and workflow choreography
• Introduction of Apache Kafka for implementing the Event Bus
• Microservices and Event Bus in a hybrid world – cross on-premises and clouds
• Implementing a multi-microservice workflow with event based choreography
• Design, architecture, implementation and live demo
• Music maestro – demonstrating event based workflow choreography by
microservices
SOURCE CODE
• https://github.com/lucasjellema/event-bus-microservices-backbone-jfall2017
• Node & Java -sources
• Kafka Producer & Consumer
• Docker build files
• Kubernetes YAML
MICROSERVICE OBJECTIVES
(BECAUSE OF ENTERPRISE OBJECTIVES)
• Flexible, agile (Dev)
• Functionality evolves rapidly with little effort
• Easy quick rollout
• Low impact
• Manageable Non Functionally (Ops)
• Scalable – handle flexible workload (horizontal scaleout)
• Available – deal with failing nodes
• Comprehendable
• Dependencies, Impact, Implementation, deployment, operations
• Ownership (culture, organization, process)
• One team can do functional and technical evolution and deployment continuously
and independently
How do we get
from a Monolith
to Microservices?
MICROSERVICES HOW
• Extremely decoupled
(from other, non owned microservices | IT components & from itself)
• Functionally
• Non functionally – platform
• Stateless (especially session-state less)
• Stand alone
• Deployable, manageable, scalable
• Container
• DevOps team
• “You build it, you run it, you fix | evolve it”
STANDING ON SHOULDERS OF GIANTS
• Monolith++
• API
• Scale out
• Automated CI/CD
• SOA++
• Stateless
• HTTP native (REST)
• Multiple tiers & platform components included
• Deployable
MICROSERVICES HOW
• Public APIs in standardized protocols
• Deployable on enterprise standardized microservices platform
• Omnia mea porto mecum - no external dependencies…
• …except:
• Calls to public APIs (exposed for example by microservices)
• Usage of platform facilities
• Generically available via contract
• Injected via parameters
• No sharing of data or other private resources across microservices
• Stateless and Horizontally scalable
• No session state, no client stickyness
• Potentially: micro-silo with multiple tiers (including UI)
• Any implementation technology
• that can run on the platform
MICROSERVICES PLATFORM
• Receives microservice deployment
• Handles scale out & fail over
• Start/stop microservice instances based on
non functional requirements and live observed behavior
• Supports automated DevOps
• CD, monitoring, throttling, circuit breaker, auditing, …
• Provides Capabilities – generic facilities available to microservices
from the run time platform
• Provided through public APIs whenever possible
• Injected meta-data at run time
• implemented by generic/platform level microservices
Microservices Platform
API
deploy, inject
dependencies, start,
watch, restart, stop,
scale
API API
API Gateway
Authenticate
Logging
Cache
THE MAKING OF A MICROSERVICE
Dockerfile Pod.yaml
Service.yaml
Volume
(Storage)
Config&Depency
Injection
MICROSERVICE BUSINESS FUNCTIONALITY:
TWEET VALIDATION
MICROSERVICE BUSINESS FUNCTIONALITY:
TWEET VALIDATION
INVOKE MICROSERVICE API
SHARED PLATFORM CAPABILITY
• Microservices are isolated
• Not aware of each other (except through public APIs)
• Not sharing private resources
• Ideally each microservice brings its own platform
• To prevent run time environment from being out of synch and creating dependency/impact between
multiple platform users
• However: At some level, sharing is inevitable Storage, Compute, power supply, building
• In practice: having full blown RDBMS or Java EE server or Kafka cluster as part of a
microservice may be unfeasible
• Even if Docker images are light weight from layering – the run time resource usage is probably not
• One approach: forbid use of heavy platforms
• Alternative approach: provide generic ‘heavy duty’ platform capabilities, available for
use in any microservice in a standardized way
• If you need it, you can make use of your own private Oracle Database 12c Schema (or PDB) with
the following features available to you … ; recovery can be performed in the following ways and
under these conditions.
MICROSERVICES CROSS PLATFORM
CAPABILITIES
• Authentication
• Persistent Storage
• Cache
• Load balancing/API Gateway
• Service Discovery/Lookup
• Monitoring
• Functional/Business KPIs
• Non Functional Platform/Container & Infra
• Audit, Usage tracking, Billing
• Notifications and alerting
• Logging
• Relational Database Capability
Microservices Platform
API
API
UI
API UI
Logging
Cache
Authentication
Notification
Usage
Tracking
EXAMPLE SYSTEM ARCHITECTURE
Microservices Platform
API
API
Logging
Cache
API API
UI
HTML 5
Web
Component
REST/
JSON
Authentication
API UI
Java /
Spring
Boot
NodeJS &
Express &
MongoDB Redis
Widgets
REST/
JSON
Storage
Python &
MySQL
REST/
JSON
WebLogic
& Oracle
Database
Legacy
Application
API UI
Strangler
NodeJS &
Express
Notification
Usage
Tracking
TRENDS, CHALLENGES, COMMON
• Use of containers and container management
• Docker Containers – layered, packaged & shippable, registry
• Docker Container Management: Composer, Mesos, Swarm or Kubernetes
• Application Container platform such as Google App Engine, Azure App Service,
Oracle Application Container Cloud, AWS Beanstalk
• Serverless computing – AWS Lambda, Oracle Fn, Azure Functions
• Use of cache for [state of] longer running conversations
• Transaction, session, workflow, business process
• New ways to consider data
• Every microservice owns the data it requires – data denormalization and
duplication of data across microservices is a logical consequence
• Command Query Responsibility Segregation (CQRS) and Event Sourcing
• Orchestration | Choreography across microservices
EVENTS
Producers
Consumers
MICROSERVICES AND EVENTS
• Report business events [without knowing to whom and without expecting a response]
• Allowing interested microservices to respond – for example trigger serverless functions
• Provide response to stateless caller – with conversation key
• Choreograph cross-microservice workflow | process
• Inform workflow | process orchestrator | job scheduler about activity status
• Enable distributed transaction – commit and rollback/compensate
• Make data events available for event sourcing
• Allowing microservices to maintain their own [derived] data set
• Synchronize cache refresh
• Informing any microservice caching data about the need to refresh specific records
• Hand systems events & metrics to monitoring service
• Extreme decoupling – microservice choreography
• Microservice never call each other, not even through public API;
all interactions are through events
MICROSERVICE WORKFLOW
CHOREOGRAPHY
• Multi step process
• Each step in different microservice
• Multiple approaches
• Orchestrator – running the process by invoking the required microservices
subsequently, responding either to synch response, asynch callback or event
• Choreography – allow the required microservices to react to relevant events
• Act when it is your turn (as determined by routing slip?)
• Share state through cache with claim check in routing slip
• When done, publish updated routing slip
• Possibly implement compensation handler
REQUIREMENTS FOR EVENT CAPABILITY
IN MICROSERVICES PLATFORM
• Provide decoupling between publisher and consumer
• Generally accessible for all microservices
• Across the platform
• Using standardized protocols and formats for communications and event payload (http, JSON)
• Scalable (handle high loads)
• Available (allow speedy event publication)
• Reliable (do not lose events, at least once delivery)
• Event Ordering (deliver events in the order of publication)
• Allow multiple, parallel consumers (each event to exactly only one of them)
• Retain Event History
• Event Catalog – which events are published, what do they mean and what is their
payload
• Harvested from microservices
INTRODUCING APACHE KAFKA
• ..- 2010 – creation at Linkedin
• Message Bus | Event Broker
• High volume, low latency, highly reliable, cross technology
• Scalable, distributed, strict message ordering, ….
• 2011/2012 – open source under the Apache Incubator/ Top Project
• Kafka is used by many large corporations:
• Walmart, Cisco, Netflix, PayPal, LinkedIn, eBay, Spotify, Uber, Sift Science
• And embraced by many software vendors & cloud providers
• Client libraries available for NodeJS, Java, C++, Python, Ruby, PHP and many more
• Confluent offers commercial support and extensions
• Kafka Streams, KSQL, Kafka Connect
KAFKA TERMINOLOGY
• Topic
• partition
• Message
• == ByteArray
• Broker
• replicated
• Producer
• Consumer
• Working together
in Consumer Groups
Producer Consumer
Topic
Broker
Key
Value
Time
Message
Producers
Consumers
Topic
Broker
tcp
tcp
EXTENDED API OF MICROSERVICE
• Deployment API
• Injectable dependencies – reference to cache, logging, storage URL, …
• Configurable meta-data – run time parameters, log level, credential (key)
• Interaction API
• REST Resources & Operations – query and URL parameters, message
formats
• Events Consumed – alternative way to call | activate a microservice
• Reference to entry in Event Catalog
• May include reference to shared Cache Resource
• Events Produced – alternative output from microservice
• Event can be an asynchronous response to a stateless consumer
API
EVENT BRIDGE TO CONNECT CLOUD &
ON PREMISES EVENT BUS
• An event bus based on Apache Kafka can run on premises and in the cloud
• Various cloud vendors offer such an Apache Kafka service
• For example Oracle Event Hub
• In a hybrid landscape – both on premises and in-the-cloud microservices – two
event buses can be used with a bridge between the two
• Or more if multiple clouds are part of the landscape
EventHub CS
On premises
Event Bus
EventHub CS
EVENT BRIDGE TO CONNECT CLOUD &
ON PREMISES EVENT BUS
Microservices Platform
API
EventHub CS
On premises
EventBridge
API
API
API
API
API
API
API
API
Event Bus
API
EventBridgeEventBridge
DESIRED WORKFLOW
Tweet about
JFall
Validate
Tweet
No simple retweet, no
black listed words used,
no known robot tweeter
or otherwise excluded
authors, no undesirable
location
Enrich Tweet
Details about author, location,
hashtags, acronyms and
abbreviations used in tweet
Add Tweet to
TweetBoard
Add the tweet to the top
of the TweetBoard – a
list of recent, relevant
tweets
Publish
TweetBoard
Publish the TweetBoard
through API and UI
(HTML web document)
done
MICROSERVICES TO MAP THE WORKFLOW TO
Microservices Platform
API
Event Bus
REST/
JSON
APIUI
Cache
Oracle
Coherence
EventHub
Apache
Kafka
NodeJS &
Express in
ACCS
On premises
Tweet
Board
Validate
Tweet API
Java SE
REST/
JSON Enrich
Tweet
Java SE/
Node.js
Cache
CONFIGURE THE IFTTT RECIPE
CONFIGURE THE IFTTT RECIPE
#jfall
API
Tweet
Receiver
CHOREOGRAPHED WORKFLOW
#hashtag
Microservices Platform
API
API
API
EventBridge
Event Bus
APIUI
On premises
TweetBoard
Validate
Tweet
Tweet
Receiver
API
Enrich
Tweet
Workflow
Launcher
Cache
Cache
Oracle
Coherence
EventHub
Apache
Kafka
ROUTING SLIP PUBLISHED BY WORKFLOW LAUNCHER
Validate
Tweet
Enrich Tweet
Add Tweet to
TweetBoard
Publish
TweetBoard
If NOK, then done
ROUTING SLIP FOR COMPLETED WORKFLOW
CHOREOGRAPHED WORKFLOW
#hashtag
Microservices Platform
API
API
Event Bus
REST/
JSON
NodeJS &
Express in
ACCS
APIUI
NodeJS &
Express in
ACCS
On premises
TweetBoard
Validate
Tweet
Tweet
ReceiverREST/
JSON
Workflow
Launcher
NodeJS &
Express
Cache
API
Enrich
Tweet
APIEventBridge
API
Cache
Oracle
Coherence
EventHub
Apache
Kafka
WORKFLOW IN ACTION
WORKFLOW IN ACTION
Event Bus
MICROSERVICE CHOREOGRAPHY TOPOLOGY
EventBridge
Workflow
Launcher
Tweet
Validator
Tweet
Enricher
Tweet
Board
EventHub
TweetReceiver
App Container Cloud
Cache Cache
Inspector
LogMonitor
EXTENDING THE WORKFLOW CHOREOGRAPHY –
WITH TRANSLATION OF THE TWEET
Validate
Tweet
Enrich Tweet
Add Tweet to
TweetBoard
Publish
TweetBoard
If NOK, then done
Translate
Tweet
EXTENDING THE WORKFLOW CHOREOGRAPHY –
WITH TRANSLATION OF THE TWEET
• Implement microservice
for
• Translating tweets
• Participating in Workflow
• Deploy microservice - with access to Event Bus & Cache
• Extend Workflow Template
• Add new ‘translation’ step – dependency on Enrich Tweet
• Change current ‘tweetboard’ step – modify dependency to Translation
Validate
Tweet
Enrich
Tweet
Add Tweet to
TweetBoard
Publish
TweetBoard
If NOK, then done
Translate
Tweet
CHOREOGRAPHED WORKFLOW
#hashtag
Microservices Platform
API
API
Event Bus
APIUI
On premises
TweetBoard
Validate
Tweet
Tweet
Receiver
Workflow
Launcher
Cache
API
Enrich
Tweet
APIEventBridge
API
Cache
Oracle
Coherence
EventHub
Apache
Kafka
API
Translate
Tweet
API
MODIFIED WORKFLOW TEMPLATE
API
Translate
Tweet
API
APIUI
TweetBoard
RESULT ON TWEET BOARD INCLUDING
TRANSLATION
MAIN TECHNICAL CHALLENGES
• Network
• Dockerize NodeJS applications
• Run Docker container images in Kubernetes cluster
• Pass environment variables and disk volumes
• Expose services through ports
• Create Replica Sets to manage availability & scaling
• Link NodeJS applications in Kubernetes to Kafka Cluster in VirtualBox
• Producing to and consuming from Topic
• Kafka host needs to be in /etc/hosts file in Node.JS Docker Container
• Leverage in-cloud cache from Kubernetes Pod members
• Share workflow instance state across microservices
• Instead: use local cache (Redis) in Kubernetes
• Create two-way (n-way) EventBridge between local microservices and cloud(s)
SUMMARY
• Microservices are about rapid rollout of scalable, available functionality
• (session) Stateless, Continuous deployment, horizontal scale out
• One team is owner of a microservice and can evolve and deploy independently
• Microservice is understandable and manageable
• Microservices contain everything that is special for their implementation
• External dependencies only on generic platform capabilities and public APIs
• Microservices expose a public API
• REST resources & operations and events (consumed and produced)
• Decoupled, Event-based interaction is crucial for microservices
• Cache synchronization, Monitoring, CQRS, Event Sourcing, Choreographed workflows
• The microservices platform should provide an Event Bus capability
• Apache Kafka is a proven, popular Event Bus implementation – available on premises
and in the cloud (for example through Oracle Event Hub)
• Blog: technology.amis.nl
• Email: lucas.jellema@amis.nl
• : lucasjellema
• : lucas-jellema
• : www.amis.nl, info@amis.nl
+31 306016000
Edisonbaan 15,
Nieuwegein
OPEN SOURCE SURVEY
Participate
and receive a [board] game
at stand D9 – Ground Floor
Source Code:
https://github.com/lucasjellema/event-bus-microservices-backbone-jfall2017

More Related Content

What's hot

Microcontainers and Tools for Hardcore Container Debugging
Microcontainers and Tools for Hardcore Container DebuggingMicrocontainers and Tools for Hardcore Container Debugging
Microcontainers and Tools for Hardcore Container DebuggingOracle Developers
 
Containers and microservices for realists
Containers and microservices for realistsContainers and microservices for realists
Containers and microservices for realistsKarthik Gaekwad
 
Getting Started, Low Hanging Fruit: Our First Experiences with Oracle Managem...
Getting Started, Low Hanging Fruit: Our First Experiences with Oracle Managem...Getting Started, Low Hanging Fruit: Our First Experiences with Oracle Managem...
Getting Started, Low Hanging Fruit: Our First Experiences with Oracle Managem...Lucas Jellema
 
Oracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy featuresOracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy featuresMichel Schildmeijer
 
Alibaba Cloud Conference 2016 - Docker Enterprise
Alibaba Cloud Conference   2016 - Docker EnterpriseAlibaba Cloud Conference   2016 - Docker Enterprise
Alibaba Cloud Conference 2016 - Docker EnterpriseJohn Willis
 
State of serverless
State of serverlessState of serverless
State of serverlessAnurag Saran
 
JavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemJavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemGilad Garon
 
Jelastic DevOps Platform Product Overview for ISVs
Jelastic DevOps Platform Product Overview for ISVsJelastic DevOps Platform Product Overview for ISVs
Jelastic DevOps Platform Product Overview for ISVsJelastic Multi-Cloud PaaS
 
Handson Oracle Management Cloud with Application Performance Monitoring and L...
Handson Oracle Management Cloud with Application Performance Monitoring and L...Handson Oracle Management Cloud with Application Performance Monitoring and L...
Handson Oracle Management Cloud with Application Performance Monitoring and L...Lucas Jellema
 
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...Animesh Singh
 
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and Future
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and FutureReview Oracle OpenWorld 2015 - Overview, Main themes, Announcements and Future
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and FutureLucas Jellema
 
Flying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native ApplicationsFlying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native ApplicationsJacek Bukowski
 
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?PROIDEA
 
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service ProvidersJelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service ProvidersJelastic Multi-Cloud PaaS
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Introducing the WSO2 Elastic Load Balancer
Introducing the WSO2 Elastic Load BalancerIntroducing the WSO2 Elastic Load Balancer
Introducing the WSO2 Elastic Load BalancerWSO2
 

What's hot (20)

Microcontainers and Tools for Hardcore Container Debugging
Microcontainers and Tools for Hardcore Container DebuggingMicrocontainers and Tools for Hardcore Container Debugging
Microcontainers and Tools for Hardcore Container Debugging
 
Containers and microservices for realists
Containers and microservices for realistsContainers and microservices for realists
Containers and microservices for realists
 
Jelastic Cluster Admin Panel Overview
Jelastic Cluster Admin Panel OverviewJelastic Cluster Admin Panel Overview
Jelastic Cluster Admin Panel Overview
 
Getting Started, Low Hanging Fruit: Our First Experiences with Oracle Managem...
Getting Started, Low Hanging Fruit: Our First Experiences with Oracle Managem...Getting Started, Low Hanging Fruit: Our First Experiences with Oracle Managem...
Getting Started, Low Hanging Fruit: Our First Experiences with Oracle Managem...
 
Oracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy featuresOracle WebLogic 12c New Multitenancy features
Oracle WebLogic 12c New Multitenancy features
 
Alibaba Cloud Conference 2016 - Docker Enterprise
Alibaba Cloud Conference   2016 - Docker EnterpriseAlibaba Cloud Conference   2016 - Docker Enterprise
Alibaba Cloud Conference 2016 - Docker Enterprise
 
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
 
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
 
State of serverless
State of serverlessState of serverless
State of serverless
 
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
 
JavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemJavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control system
 
Jelastic DevOps Platform Product Overview for ISVs
Jelastic DevOps Platform Product Overview for ISVsJelastic DevOps Platform Product Overview for ISVs
Jelastic DevOps Platform Product Overview for ISVs
 
Handson Oracle Management Cloud with Application Performance Monitoring and L...
Handson Oracle Management Cloud with Application Performance Monitoring and L...Handson Oracle Management Cloud with Application Performance Monitoring and L...
Handson Oracle Management Cloud with Application Performance Monitoring and L...
 
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
 
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and Future
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and FutureReview Oracle OpenWorld 2015 - Overview, Main themes, Announcements and Future
Review Oracle OpenWorld 2015 - Overview, Main themes, Announcements and Future
 
Flying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native ApplicationsFlying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native Applications
 
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
 
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service ProvidersJelastic - DevOps PaaS Business with Docker Support for Service Providers
Jelastic - DevOps PaaS Business with Docker Support for Service Providers
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Introducing the WSO2 Elastic Load Balancer
Introducing the WSO2 Elastic Load BalancerIntroducing the WSO2 Elastic Load Balancer
Introducing the WSO2 Elastic Load Balancer
 

Viewers also liked

RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedis Labs
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop AtlantaJeremy Davis
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for MicroservicesChris Richardson
 
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration MicroservicesWSO2
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterJulien Dubois
 

Viewers also liked (7)

Netflix conductor
Netflix conductorNetflix conductor
Netflix conductor
 
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
 
Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017Dynomite @ RedisConf 2017
Dynomite @ RedisConf 2017
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop Atlanta
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
 
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipster
 

Similar to Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)

Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...
Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...
Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...Lucas Jellema
 
Business and IT agility through DevOps and microservice architecture powered ...
Business and IT agility through DevOps and microservice architecture powered ...Business and IT agility through DevOps and microservice architecture powered ...
Business and IT agility through DevOps and microservice architecture powered ...Lucas Jellema
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewboxLino Telera
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service FabricDavide Benvegnù
 
The Application Server Platform of the Future - Container & Cloud Native and ...
The Application Server Platform of the Future - Container & Cloud Native and ...The Application Server Platform of the Future - Container & Cloud Native and ...
The Application Server Platform of the Future - Container & Cloud Native and ...Lucas Jellema
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...confluent
 
Kubernetes Infra 2.0
Kubernetes Infra 2.0Kubernetes Infra 2.0
Kubernetes Infra 2.0Deepak Sood
 
Microservices in the Enterprise
Microservices in the Enterprise Microservices in the Enterprise
Microservices in the Enterprise Jesus Rodriguez
 
Mobility and federation of Cloud computing
Mobility and federation of Cloud computingMobility and federation of Cloud computing
Mobility and federation of Cloud computingDavid Wallom
 
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...Lucas Jellema
 
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...Sagara Gunathunga
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...confluent
 
WSO2 Workshop Sydney 2016 - Microservices
WSO2 Workshop Sydney 2016 - MicroservicesWSO2 Workshop Sydney 2016 - Microservices
WSO2 Workshop Sydney 2016 - MicroservicesDassana Wijesekara
 
Going Serverless with OpenWhisk
Going Serverless with OpenWhiskGoing Serverless with OpenWhisk
Going Serverless with OpenWhiskAlex Glikson
 
12 Factor App Methodology
12 Factor App Methodology12 Factor App Methodology
12 Factor App Methodologylaeshin park
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerWeb à Québec
 

Similar to Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017) (20)

Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...
Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...
Event Bus as Backbone for Decoupled Microservice Choreography - Lecture and W...
 
Business and IT agility through DevOps and microservice architecture powered ...
Business and IT agility through DevOps and microservice architecture powered ...Business and IT agility through DevOps and microservice architecture powered ...
Business and IT agility through DevOps and microservice architecture powered ...
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 
The Application Server Platform of the Future - Container & Cloud Native and ...
The Application Server Platform of the Future - Container & Cloud Native and ...The Application Server Platform of the Future - Container & Cloud Native and ...
The Application Server Platform of the Future - Container & Cloud Native and ...
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
 
Kubernetes Infra 2.0
Kubernetes Infra 2.0Kubernetes Infra 2.0
Kubernetes Infra 2.0
 
Microservices in the Enterprise
Microservices in the Enterprise Microservices in the Enterprise
Microservices in the Enterprise
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Mobility and federation of Cloud computing
Mobility and federation of Cloud computingMobility and federation of Cloud computing
Mobility and federation of Cloud computing
 
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
Dutch Oracle Architects Platform - Reviewing Oracle OpenWorld 2017 and New Tr...
 
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
Building Services with WSO2 Application Server and WSO2 Microservices Framewo...
 
Cloud Native Application Development
Cloud Native Application DevelopmentCloud Native Application Development
Cloud Native Application Development
 
Microservices deck
Microservices deckMicroservices deck
Microservices deck
 
Un-clouding the cloud
Un-clouding the cloudUn-clouding the cloud
Un-clouding the cloud
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with K...
 
WSO2 Workshop Sydney 2016 - Microservices
WSO2 Workshop Sydney 2016 - MicroservicesWSO2 Workshop Sydney 2016 - Microservices
WSO2 Workshop Sydney 2016 - Microservices
 
Going Serverless with OpenWhisk
Going Serverless with OpenWhiskGoing Serverless with OpenWhisk
Going Serverless with OpenWhisk
 
12 Factor App Methodology
12 Factor App Methodology12 Factor App Methodology
12 Factor App Methodology
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
 

More from Lucas Jellema

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Lucas Jellema
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Lucas Jellema
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lucas Jellema
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Lucas Jellema
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...Lucas Jellema
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Lucas Jellema
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Lucas Jellema
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Lucas Jellema
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...Lucas Jellema
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Lucas Jellema
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Lucas Jellema
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...Lucas Jellema
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Lucas Jellema
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Lucas Jellema
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Lucas Jellema
 

More from Lucas Jellema (20)

Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...Introduction to web application development with Vue (for absolute beginners)...
Introduction to web application development with Vue (for absolute beginners)...
 
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 

Recently uploaded

Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 

Recently uploaded (20)

Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 

Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)

  • 1. EVENT BUS AS BACKBONE FOR DECOUPLED MICROSERVICE CHOREOGRAPHY Lucas Jellema (CTO AMIS & Oracle Developer Champion) November 2017 - JFall, Ede, The Netherlands
  • 2. AGENDA • Introduction of microservices - objectives, traits, implementation • The making of a microservice (demo) • The microservices platform - generic capabilities • Using events for decoupled interaction and workflow choreography • Introduction of Apache Kafka for implementing the Event Bus • Microservices and Event Bus in a hybrid world – cross on-premises and clouds • Implementing a multi-microservice workflow with event based choreography • Design, architecture, implementation and live demo • Music maestro – demonstrating event based workflow choreography by microservices
  • 3. SOURCE CODE • https://github.com/lucasjellema/event-bus-microservices-backbone-jfall2017 • Node & Java -sources • Kafka Producer & Consumer • Docker build files • Kubernetes YAML
  • 4. MICROSERVICE OBJECTIVES (BECAUSE OF ENTERPRISE OBJECTIVES) • Flexible, agile (Dev) • Functionality evolves rapidly with little effort • Easy quick rollout • Low impact • Manageable Non Functionally (Ops) • Scalable – handle flexible workload (horizontal scaleout) • Available – deal with failing nodes • Comprehendable • Dependencies, Impact, Implementation, deployment, operations • Ownership (culture, organization, process) • One team can do functional and technical evolution and deployment continuously and independently How do we get from a Monolith to Microservices?
  • 5. MICROSERVICES HOW • Extremely decoupled (from other, non owned microservices | IT components & from itself) • Functionally • Non functionally – platform • Stateless (especially session-state less) • Stand alone • Deployable, manageable, scalable • Container • DevOps team • “You build it, you run it, you fix | evolve it”
  • 6. STANDING ON SHOULDERS OF GIANTS • Monolith++ • API • Scale out • Automated CI/CD • SOA++ • Stateless • HTTP native (REST) • Multiple tiers & platform components included • Deployable
  • 7. MICROSERVICES HOW • Public APIs in standardized protocols • Deployable on enterprise standardized microservices platform • Omnia mea porto mecum - no external dependencies… • …except: • Calls to public APIs (exposed for example by microservices) • Usage of platform facilities • Generically available via contract • Injected via parameters • No sharing of data or other private resources across microservices • Stateless and Horizontally scalable • No session state, no client stickyness • Potentially: micro-silo with multiple tiers (including UI) • Any implementation technology • that can run on the platform
  • 8. MICROSERVICES PLATFORM • Receives microservice deployment • Handles scale out & fail over • Start/stop microservice instances based on non functional requirements and live observed behavior • Supports automated DevOps • CD, monitoring, throttling, circuit breaker, auditing, … • Provides Capabilities – generic facilities available to microservices from the run time platform • Provided through public APIs whenever possible • Injected meta-data at run time • implemented by generic/platform level microservices Microservices Platform API deploy, inject dependencies, start, watch, restart, stop, scale API API API Gateway Authenticate Logging Cache
  • 9. THE MAKING OF A MICROSERVICE Dockerfile Pod.yaml Service.yaml Volume (Storage) Config&Depency Injection
  • 13. SHARED PLATFORM CAPABILITY • Microservices are isolated • Not aware of each other (except through public APIs) • Not sharing private resources • Ideally each microservice brings its own platform • To prevent run time environment from being out of synch and creating dependency/impact between multiple platform users • However: At some level, sharing is inevitable Storage, Compute, power supply, building • In practice: having full blown RDBMS or Java EE server or Kafka cluster as part of a microservice may be unfeasible • Even if Docker images are light weight from layering – the run time resource usage is probably not • One approach: forbid use of heavy platforms • Alternative approach: provide generic ‘heavy duty’ platform capabilities, available for use in any microservice in a standardized way • If you need it, you can make use of your own private Oracle Database 12c Schema (or PDB) with the following features available to you … ; recovery can be performed in the following ways and under these conditions.
  • 14. MICROSERVICES CROSS PLATFORM CAPABILITIES • Authentication • Persistent Storage • Cache • Load balancing/API Gateway • Service Discovery/Lookup • Monitoring • Functional/Business KPIs • Non Functional Platform/Container & Infra • Audit, Usage tracking, Billing • Notifications and alerting • Logging • Relational Database Capability Microservices Platform API API UI API UI Logging Cache Authentication Notification Usage Tracking
  • 15. EXAMPLE SYSTEM ARCHITECTURE Microservices Platform API API Logging Cache API API UI HTML 5 Web Component REST/ JSON Authentication API UI Java / Spring Boot NodeJS & Express & MongoDB Redis Widgets REST/ JSON Storage Python & MySQL REST/ JSON WebLogic & Oracle Database Legacy Application API UI Strangler NodeJS & Express Notification Usage Tracking
  • 16. TRENDS, CHALLENGES, COMMON • Use of containers and container management • Docker Containers – layered, packaged & shippable, registry • Docker Container Management: Composer, Mesos, Swarm or Kubernetes • Application Container platform such as Google App Engine, Azure App Service, Oracle Application Container Cloud, AWS Beanstalk • Serverless computing – AWS Lambda, Oracle Fn, Azure Functions • Use of cache for [state of] longer running conversations • Transaction, session, workflow, business process • New ways to consider data • Every microservice owns the data it requires – data denormalization and duplication of data across microservices is a logical consequence • Command Query Responsibility Segregation (CQRS) and Event Sourcing • Orchestration | Choreography across microservices
  • 18. MICROSERVICES AND EVENTS • Report business events [without knowing to whom and without expecting a response] • Allowing interested microservices to respond – for example trigger serverless functions • Provide response to stateless caller – with conversation key • Choreograph cross-microservice workflow | process • Inform workflow | process orchestrator | job scheduler about activity status • Enable distributed transaction – commit and rollback/compensate • Make data events available for event sourcing • Allowing microservices to maintain their own [derived] data set • Synchronize cache refresh • Informing any microservice caching data about the need to refresh specific records • Hand systems events & metrics to monitoring service • Extreme decoupling – microservice choreography • Microservice never call each other, not even through public API; all interactions are through events
  • 19. MICROSERVICE WORKFLOW CHOREOGRAPHY • Multi step process • Each step in different microservice • Multiple approaches • Orchestrator – running the process by invoking the required microservices subsequently, responding either to synch response, asynch callback or event • Choreography – allow the required microservices to react to relevant events • Act when it is your turn (as determined by routing slip?) • Share state through cache with claim check in routing slip • When done, publish updated routing slip • Possibly implement compensation handler
  • 20. REQUIREMENTS FOR EVENT CAPABILITY IN MICROSERVICES PLATFORM • Provide decoupling between publisher and consumer • Generally accessible for all microservices • Across the platform • Using standardized protocols and formats for communications and event payload (http, JSON) • Scalable (handle high loads) • Available (allow speedy event publication) • Reliable (do not lose events, at least once delivery) • Event Ordering (deliver events in the order of publication) • Allow multiple, parallel consumers (each event to exactly only one of them) • Retain Event History • Event Catalog – which events are published, what do they mean and what is their payload • Harvested from microservices
  • 21. INTRODUCING APACHE KAFKA • ..- 2010 – creation at Linkedin • Message Bus | Event Broker • High volume, low latency, highly reliable, cross technology • Scalable, distributed, strict message ordering, …. • 2011/2012 – open source under the Apache Incubator/ Top Project • Kafka is used by many large corporations: • Walmart, Cisco, Netflix, PayPal, LinkedIn, eBay, Spotify, Uber, Sift Science • And embraced by many software vendors & cloud providers • Client libraries available for NodeJS, Java, C++, Python, Ruby, PHP and many more • Confluent offers commercial support and extensions • Kafka Streams, KSQL, Kafka Connect
  • 22. KAFKA TERMINOLOGY • Topic • partition • Message • == ByteArray • Broker • replicated • Producer • Consumer • Working together in Consumer Groups Producer Consumer Topic Broker Key Value Time Message
  • 24. EXTENDED API OF MICROSERVICE • Deployment API • Injectable dependencies – reference to cache, logging, storage URL, … • Configurable meta-data – run time parameters, log level, credential (key) • Interaction API • REST Resources & Operations – query and URL parameters, message formats • Events Consumed – alternative way to call | activate a microservice • Reference to entry in Event Catalog • May include reference to shared Cache Resource • Events Produced – alternative output from microservice • Event can be an asynchronous response to a stateless consumer API
  • 25. EVENT BRIDGE TO CONNECT CLOUD & ON PREMISES EVENT BUS • An event bus based on Apache Kafka can run on premises and in the cloud • Various cloud vendors offer such an Apache Kafka service • For example Oracle Event Hub • In a hybrid landscape – both on premises and in-the-cloud microservices – two event buses can be used with a bridge between the two • Or more if multiple clouds are part of the landscape EventHub CS On premises Event Bus EventHub CS
  • 26. EVENT BRIDGE TO CONNECT CLOUD & ON PREMISES EVENT BUS Microservices Platform API EventHub CS On premises EventBridge API API API API API API API API Event Bus API EventBridgeEventBridge
  • 27. DESIRED WORKFLOW Tweet about JFall Validate Tweet No simple retweet, no black listed words used, no known robot tweeter or otherwise excluded authors, no undesirable location Enrich Tweet Details about author, location, hashtags, acronyms and abbreviations used in tweet Add Tweet to TweetBoard Add the tweet to the top of the TweetBoard – a list of recent, relevant tweets Publish TweetBoard Publish the TweetBoard through API and UI (HTML web document) done
  • 28. MICROSERVICES TO MAP THE WORKFLOW TO Microservices Platform API Event Bus REST/ JSON APIUI Cache Oracle Coherence EventHub Apache Kafka NodeJS & Express in ACCS On premises Tweet Board Validate Tweet API Java SE REST/ JSON Enrich Tweet Java SE/ Node.js Cache
  • 30. CONFIGURE THE IFTTT RECIPE #jfall API Tweet Receiver
  • 31. CHOREOGRAPHED WORKFLOW #hashtag Microservices Platform API API API EventBridge Event Bus APIUI On premises TweetBoard Validate Tweet Tweet Receiver API Enrich Tweet Workflow Launcher Cache Cache Oracle Coherence EventHub Apache Kafka
  • 32. ROUTING SLIP PUBLISHED BY WORKFLOW LAUNCHER Validate Tweet Enrich Tweet Add Tweet to TweetBoard Publish TweetBoard If NOK, then done
  • 33. ROUTING SLIP FOR COMPLETED WORKFLOW
  • 34. CHOREOGRAPHED WORKFLOW #hashtag Microservices Platform API API Event Bus REST/ JSON NodeJS & Express in ACCS APIUI NodeJS & Express in ACCS On premises TweetBoard Validate Tweet Tweet ReceiverREST/ JSON Workflow Launcher NodeJS & Express Cache API Enrich Tweet APIEventBridge API Cache Oracle Coherence EventHub Apache Kafka
  • 37. Event Bus MICROSERVICE CHOREOGRAPHY TOPOLOGY EventBridge Workflow Launcher Tweet Validator Tweet Enricher Tweet Board EventHub TweetReceiver App Container Cloud Cache Cache Inspector LogMonitor
  • 38. EXTENDING THE WORKFLOW CHOREOGRAPHY – WITH TRANSLATION OF THE TWEET Validate Tweet Enrich Tweet Add Tweet to TweetBoard Publish TweetBoard If NOK, then done Translate Tweet
  • 39. EXTENDING THE WORKFLOW CHOREOGRAPHY – WITH TRANSLATION OF THE TWEET • Implement microservice for • Translating tweets • Participating in Workflow • Deploy microservice - with access to Event Bus & Cache • Extend Workflow Template • Add new ‘translation’ step – dependency on Enrich Tweet • Change current ‘tweetboard’ step – modify dependency to Translation Validate Tweet Enrich Tweet Add Tweet to TweetBoard Publish TweetBoard If NOK, then done Translate Tweet
  • 40. CHOREOGRAPHED WORKFLOW #hashtag Microservices Platform API API Event Bus APIUI On premises TweetBoard Validate Tweet Tweet Receiver Workflow Launcher Cache API Enrich Tweet APIEventBridge API Cache Oracle Coherence EventHub Apache Kafka API Translate Tweet API
  • 42. RESULT ON TWEET BOARD INCLUDING TRANSLATION
  • 43. MAIN TECHNICAL CHALLENGES • Network • Dockerize NodeJS applications • Run Docker container images in Kubernetes cluster • Pass environment variables and disk volumes • Expose services through ports • Create Replica Sets to manage availability & scaling • Link NodeJS applications in Kubernetes to Kafka Cluster in VirtualBox • Producing to and consuming from Topic • Kafka host needs to be in /etc/hosts file in Node.JS Docker Container • Leverage in-cloud cache from Kubernetes Pod members • Share workflow instance state across microservices • Instead: use local cache (Redis) in Kubernetes • Create two-way (n-way) EventBridge between local microservices and cloud(s)
  • 44. SUMMARY • Microservices are about rapid rollout of scalable, available functionality • (session) Stateless, Continuous deployment, horizontal scale out • One team is owner of a microservice and can evolve and deploy independently • Microservice is understandable and manageable • Microservices contain everything that is special for their implementation • External dependencies only on generic platform capabilities and public APIs • Microservices expose a public API • REST resources & operations and events (consumed and produced) • Decoupled, Event-based interaction is crucial for microservices • Cache synchronization, Monitoring, CQRS, Event Sourcing, Choreographed workflows • The microservices platform should provide an Event Bus capability • Apache Kafka is a proven, popular Event Bus implementation – available on premises and in the cloud (for example through Oracle Event Hub)
  • 45. • Blog: technology.amis.nl • Email: lucas.jellema@amis.nl • : lucasjellema • : lucas-jellema • : www.amis.nl, info@amis.nl +31 306016000 Edisonbaan 15, Nieuwegein OPEN SOURCE SURVEY Participate and receive a [board] game at stand D9 – Ground Floor Source Code: https://github.com/lucasjellema/event-bus-microservices-backbone-jfall2017

Editor's Notes

  1. Microservices are independent, encapsulated entities that produce meaningful results and business functionality in tentative collaboration. Events and pub/sub are great for allowing such decoupled interaction. Using Apache Kafka as robust, distributed, real-time, high volume event bus, this session demonstrates how microservices implemented in Java, Node, Python and SQL collaborate unknowingly. The microservices respond to social (media) events - courtesy of IFTTT - and publish results to multiple channels. The event bus operates across cloud services and on premises platforms: both the bus and the microservices can run anywhere. presentation summary - intro microservices objectives, focus on decoupled collaboration - demo four mservices in different technologies; no direct dependencies - outline desired choreography, use of events and need of event bus - intro Kafka - demo pub and sub from each mservice to Kafka - link IFTTT to Kafka (for demo: use ngrok to expose local Kafka to IFTTT cloud) - demo end-to-end Social event=>IFTTT=>Kafka=>choreographed mservices=> final result - discuss cloud deployment of event bus + mservices
  2. https://www.martinfowler.com/bliki/StranglerApplication.html https://dzone.com/articles/why-springboot
  3. http://microservices.io/patterns/data/event-driven-architecture.html http://eventuate.io/whyeventdriven.html http://www.kennybastani.com/2017/01/building-event-driven-microservices.html
  4. http://www.dreweaster.com/blog/2016/05/08/the-art-of-microservices-integration-using-service-choreography/ End-to-end autonomy (each microservice leverages event sourcing to maintain the state it needs (even though it does not own it) https://www.slideshare.net/CAinc/hypermediadriven-orchestration-in-microservices-55985377
  5. Workflow initiator responds to NewTweetEvent Workflow Initiator - When tweet is for hashtag oraclecode then create routingslip document with tweet data, store in cache under key and publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload Validate Tweet – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if ValidateTweet should act; if so, validate tweet, update routing slip, retrieve and store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload Enrich Tweet – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if EnrichTweet should act; if so, enrich tweet, update routing slip, retrieve and store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload TweetBoard – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if TweetBoard should act; if so, add tweet to tweet list, update routing slip, retrieve-and-store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload All microservices publish logging about their actions with the conversation identifier as part of the logging
  6. Workflow initiator responds to NewTweetEvent Workflow Initiator - When tweet is for hashtag oraclecode then create routingslip document with tweet data, store in cache under key and publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload Validate Tweet – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if ValidateTweet should act; if so, validate tweet, update routing slip, retrieve and store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload Enrich Tweet – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if EnrichTweet should act; if so, enrich tweet, update routing slip, retrieve and store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload TweetBoard – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if TweetBoard should act; if so, add tweet to tweet list, update routing slip, retrieve-and-store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload All microservices publish logging about their actions with the conversation identifier as part of the logging
  7. Workflow initiator responds to NewTweetEvent Workflow Initiator - When tweet is for hashtag oraclecode then create routingslip document with tweet data, store in cache under key and publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload Validate Tweet – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if ValidateTweet should act; if so, validate tweet, update routing slip, retrieve and store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload Enrich Tweet – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if EnrichTweet should act; if so, enrich tweet, update routing slip, retrieve and store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload TweetBoard – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if TweetBoard should act; if so, add tweet to tweet list, update routing slip, retrieve-and-store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload All microservices publish logging about their actions with the conversation identifier as part of the logging
  8. Workflow initiator responds to NewTweetEvent Workflow Initiator - When tweet is for hashtag oraclecode then create routingslip document with tweet data, store in cache under key and publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload Validate Tweet – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if ValidateTweet should act; if so, validate tweet, update routing slip, retrieve and store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload Enrich Tweet – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if EnrichTweet should act; if so, enrich tweet, update routing slip, retrieve and store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload TweetBoard – when OracleCodeTwitterWorkflow event – fetch workflow state from cache based on event payload, check routingslip to see if TweetBoard should act; if so, add tweet to tweet list, update routing slip, retrieve-and-store in cache; publish workflow event for OracleCodeTwitterWorkflow with cache key for workflow state in payload All microservices publish logging about their actions with the conversation identifier as part of the logging