SlideShare una empresa de Scribd logo
1 de 58
Building and Evolving a Dependency-Graph
Based Microservice Architecture
Lars Francke – Partner and Co-Founder @ OpenCore
Kafka Summit 2019 – 30 September 2019
© 2019 OpenCore GmbH & Co. KG 2
About Me – Lars Francke
• Partner & Co-Founder at OpenCore
• We do Hadoop/Big Data/insert Buzzword consulting
• Based in Germany but doing business world-wide if you need us J
• https://www.opencore.com
• ASF/Big Data/Hadoop since 2008
• Apache Committer & Member: HBase, Hive, ORC, Training (PMC)
• Contact
• lars.francke@opencore.com
• @lars_francke
The Problem
© 2019 OpenCore GmbH & Co. KG 3
© 2019 OpenCore GmbH & Co. KG 4
The problem
No one here knows
the dependencies
between all our
Microservices
anymore!
We drew a picture
but it hasn't been
updated in months
and is now doing
more harm than
good
We're afraid of
stopping this service
because we don't
know who depends
on it
How do these topics differ and
where can I find the latest customer
registrations?
"customer_regs",
"customer_regs1",
"customer_regs_new",
"new_customers",
"customers_lars_test"
We need to migrate
from On-Prem Kafka to
Confluent Cloud but
have no idea where to
begin and what we
need.
© 2019 OpenCore GmbH & Co. KG 5
The problem
Didn't the London
team already build a
service to check zip
codes?
Why has this
dashboard stopped
showing data? Does anyone mind if
I add a field to the
"Customer" object?
Oh no, Governance
wants to know where
in Kafka we store PII
data L
Microservice Architectures
© 2019 OpenCore GmbH & Co. KG 6
Choreography
© 2019 OpenCore GmbH & Co. KG 8
Choreography
Also (often) called
Event-Driven
© 2019 OpenCore GmbH & Co. KG 9
Choreography
• Services coordinate amongst themselves
• No central service
• "Smart endpoints and dumb pipes" – Martin Fowler & James Lewis
• Kafka often used for the "dumb pipes" part (no offense!)
• Lots of flexibility
• Just add a new service, no need to coordinate with others
• Use whatever language you want, whatever data format you want etc.
• Often brittle
• Loose coupling means you might depend on a service without knowing it
• Those dependencies might change and break
• People might depend on your service without you knowing it!
© 2019 OpenCore GmbH & Co. KG 10
Choreography
• Hard to keep track of everything & get an overview
• Harder to verify at build-time
• One can only do the equivalent of a unit test easily, integration testing is harder if
other components are unknown or under control by a different team
• Different teams can work independently
© 2019 OpenCore GmbH & Co. KG 11
Choreography
When I said no central service
What I meant was that we obviously
still do have central services like:
• Schema Registry
• Log collection
• Monitoring
• Etc.
Orchestration
Source:
https://commons.wikimedia.org/wiki/File:Peter_Oundjian_-
_Conductor_of_Toronto_Symphony_Orchestra_2014.jpg
© 2019 OpenCore GmbH & Co. KG 13
Orchestration
• One central "coordinator" that tells everyone what to do
• Like a conductor in an orchestra
• The Enterprise Service Bus (ESB) is an example
• Routing, Transformations, Business rules etc.
• It's easy to get an overview over the whole system
• The central service can even provide a nice UI, showing dependency graphs
• Monitoring is easier
© 2019 OpenCore GmbH & Co. KG 14
Orchestration
• Less flexible
• Adding a new service requires coordination and potentially changing/restarting
existing things
• Less brittle
• Central service can validate the architecture
• The architecture/graph can often be verified at "build"-time
• Works well with CI/CD
• * as Code (Infrastructure, Configuration, …)
• May require coordination between teams
• Less self-service
© 2019 OpenCore GmbH & Co. KG 15
Orchestography
Natural question to ask:
Which is better?
© 2019 OpenCore GmbH & Co. KG 16
Orchestography
© 2019 OpenCore GmbH & Co. KG 17
Orchestography
Both have their uses!
© 2019 OpenCore GmbH & Co. KG 18
Microservices
• Microservices are often used to split up a single monolithic app into
multiple independent services
• There are still independent "business applications" even though some may
share data or even services
• Ideally a single team responsible for a product
• Orchestration is easier within one product (or team) while Choreography is
appealing across product/team borders
© 2019 OpenCore GmbH & Co. KG 19
Orchestography
• Orchestration lends itself more to "workflow" oriented tasks which are split
across multiple processes and/or need to be distributed
• Strict or at least strong dependencies between those tasks
• Can be seen as "one" thing, that could – in theory – also be implemented as one
monolithic process
• Choreography lends itself more to loosely coupled or decoupled services
• These might also have dependencies but often not as strict
© 2019 OpenCore GmbH & Co. KG 20
Orchestography
Application 1
(Orchestrated)
Kafka
(or similar,
for Choreography)
Application 3
(Orchestrated)
Application 4
(Orchestrated)
Application 2
(Orchestrated)
?
© 2019 OpenCore GmbH & Co. KG 21
Example
Naming things is hard
© 2019 OpenCore GmbH & Co. KG 22
© 2019 OpenCore GmbH & Co. KG 23
Cattle vs. Pets
Show of hands
Who here has (had) servers with names like:
Sources: https://www.flickr.com/photos/gageskidmore/7584137078, https://commons.wikimedia.org/wiki/File:Jean-Luc_Picard_2.jpg,
https://www.flickr.com/photos/44214515@N06/21547144233
© 2019 OpenCore GmbH & Co. KG 24
Pets
Names like that are a good sign that these servers might be your Pets
They often have a combination of these features:
• Manually built and managed
• Indispensable
• Can never be down
© 2019 OpenCore GmbH & Co. KG 25
Cattle
The industry has moved on (or is in the process) to treating Servers (and
services) as Cattle instead
• No identity (random names or based on some pattern)
• Disposable
• Infrastructure as Code
© 2019 OpenCore GmbH & Co. KG 26
Cattle
• The Cloud was a big "enabler" for this movement
• Servers have more or less random names
• Each specific instance doesn't matter, will be rebuilt when needed
• e.g. Spot Instances
• Kubernetes & Co. playing a role as well
© 2019 OpenCore GmbH & Co. KG 27
Cattle
If we agree that this is a good thing…
…why do you have a topic called
customerCreated
Technology to the rescue
Lars, tell us what to do!
© 2019 OpenCore GmbH & Co. KG 28
© 2019 OpenCore GmbH & Co. KG 29
L
We are not the first to struggle with this
Surprising, I know
© 2019 OpenCore GmbH & Co. KG 30
Good Compan(y|ies)
Source: https://commons.wikimedia.org/wiki/File:ING_Group_N.V._Logo.svg
© 2019 OpenCore GmbH & Co. KG 31
Netflix Conductor
• Netflix OSS Project: https://github.com/Netflix/conductor
• "Conductor is a Workflow Orchestration engine that runs in the cloud."
• Conductor runs backend Servers providing UI & REST API
• You define your Workflows in a JSON DSL, POST it to the API
• You develop your Workers in whichever language you want (convenience
libraries available for Java & Python) and they get new work from the REST
API
© 2019 OpenCore GmbH & Co. KG 32
Netflix Conductor
• Workflows consist of Tasks
• Conductor itself can store some Payload or it can/must be stored externally
• It does not support using Kafka (or similar) to decouple Tasks
© 2019 OpenCore GmbH & Co. KG 33
Netflix Conductor – Tasks
[
{
"name": "verify_if_idents_are_added",
"retryCount": 3,
"retryLogic": "FIXED",
"retryDelaySeconds": 10,
"timeoutSeconds": 300,
"timeoutPolicy": "TIME_OUT_WF",
"responseTimeoutSeconds": 180
},
{
"name": "add_idents",
"retryCount": 3,
"retryLogic": "FIXED",
"retryDelaySeconds": 10,
"timeoutSeconds": 300,
"timeoutPolicy": "TIME_OUT_WF",
"responseTimeoutSeconds": 180
}
]
© 2019 OpenCore GmbH & Co. KG 34
Netflix Conductor – Workflow Pt. 1
{
"name": "add_netflix_identation",
"description": "Adds Netflix Identation to video files.",
"version": 2,
"schemaVersion": 2,
"tasks": [
{
"name": "verify_if_idents_are_added",
"taskReferenceName": "ident_verification",
"inputParameters": {
"contentId": "${workflow.input.contentId}"
},
"type": "SIMPLE"
},
{
"name": "decide_task",
"taskReferenceName": "is_idents_added",
"inputParameters": {
"case_value_param": "${ident_verification.output.is_idents_added}"
},
© 2019 OpenCore GmbH & Co. KG 35
Netflix Conductor – Workflow Pt. 2
"type": "DECISION",
"caseValueParam": "case_value_param",
"decisionCases": {
"false": [
{
"name": "add_idents",
"taskReferenceName": "add_idents_by_type",
"inputParameters": {
"identType": "${workflow.input.identType}",
"contentId": "${workflow.input.contentId}"
},
"type": "SIMPLE"
}
]
}
}
]
}
© 2019 OpenCore GmbH & Co. KG 36
Uber Cadence
• Uber Project: https://github.com/uber/cadence
• "Cadence is a distributed, scalable, durable, and highly available
orchestration engine to execute asynchronous long-running business logic
in a scalable and resilient way."
• From the same people that lead the Amazon Simple Workflow service
• Has Clients for Java & Go
• Other possible, communicate via Thrift
© 2019 OpenCore GmbH & Co. KG 37
Uber Cadence
• Cadence handles Task state & Queues for us
• Your Workflow is implemented in code
• Workflows can run & wait for a long time
• Example: Subscription Renewal workflow that runs forever and charges
your customer every 30 days
• Also no direct Kafka integration
© 2019 OpenCore GmbH & Co. KG 38
Uber Cadence – Example
@Override public void execute(String customerId) {
activities.sendWelcomeEmail(customerId);
try {
boolean trialPeriod = true;
while (true) {
Workflow.sleep(Duration.ofDays(30));
activities.chargeMonthlyFee(customerId);
if (trialPeriod) {
activities.sendEndOfTrialEmail(customerId);
trialPeriod = false;
} else {
activities.sendMonthlyChargeEmail(customerId);
}
}
} catch (CancellationException e) {
activities.processSubscriptionCancellation(customerId);
activities.sendSorryToSeeYouGoEmail(customerId);
}
}
© 2019 OpenCore GmbH & Co. KG 39
Expedia Stream Registry
• Expedia project (originally HomeAway):
https://github.com/ExpediaGroup/stream-registry
• A metadata service for streams
• Who owns the stream?
• Who are the producers and consumers of the stream?
• Management of stream replication across clusters and regions
• Management of stream storage for permanent access
• Management of stream triggers for legacy stream sources
© 2019 OpenCore GmbH & Co. KG 40
Expedia Stream Registry
• It manages Clusters as well as "Streams" of data
• Including schemas, owners and other metadata
• Unfortunately the docs are pretty thin
• Moved from HomeAway to Expedia while undergoing a refactor
© 2019 OpenCore GmbH & Co. KG 41
Others
There are others:
• ING Baker
• ING Project: https://github.com/ing-bank/baker
• "Orchestrate microservice-based process flows"
• Java based library
• You specify a Recipe which includes all your functions (interactions), the data they
need (ingredients) and the data they produce (event)
• Zeebe
• From the Camunda folks
• BPMN 2
• "A Workflow Engine for Microservices Orchestration"
• Dagster
• …
Where does this leave us?
© 2019 OpenCore GmbH & Co. KG 42
© 2019 OpenCore GmbH & Co. KG 43
The Current State
• Most existing tools require you to explicitly model your dependency graph
• This makes sense for "strict" workflows
• But not for many other use-cases (e.g. analytics, logging, persistence etc.)
• This is comparable to having SQL without a Query Optimizer or Spark
without Catalyst
• Some tools require you to implement their API or use their library
© 2019 OpenCore GmbH & Co. KG 44
The Current State
• Unfortunately, the perfect solution doesn't yet exist
• The Orchestrators that do exist are all very nice and work
• For the Choreography though things are a bit bleak
• Stream Registry moves into the right direction
• Schema Registry is necessary as well but not sufficient
© 2019 OpenCore GmbH & Co. KG 45
Does this seem familiar?
© 2019 OpenCore GmbH & Co. KG 46
Wishlist
• We need better support for Event-Driven (Choreography) style
architectures
• We need better Governance for data in Kafka
• This problem is not exclusive to Kafka
• Kafka topics shouldn't be managed manually
• We need better self-service tools to find data sources
© 2019 OpenCore GmbH & Co. KG 47
Wishlist
• We'd like a tool that
• allows us to register logical streams of data,
• Used to distinguish flows with the same schema
• Metadata (e.g. owners)
• e.g. "New customers stream"
• allows us to register Connections,
• e.g. Kafka Clusters, Kinesis credentials etc.
• allows us to register (Micro-)Services
• Including their Inputs and Outputs
• These are the "Data" in- and outputs, not any topic itself
• Both reference existing Schemas
• Optional: Dependencies
© 2019 OpenCore GmbH & Co. KG 48
Wishlist
• This tool could use this information to
• automatically build an optimal DAG,
• and execute all necessary steps to enable this DAG:
• Create Kafka Topics
• Create necessary ACLs
• Optionally: Update MirrorMaker configuration or other steps
• The Services itself can then get all the information they need from the REST API
• Cluster configuration
• Schema information
• Topic names for in- and output
• Optional: Pre- & Postconditions
© 2019 OpenCore GmbH & Co. KG 49
Wishlist
• For those who use Apache Spark:
• In Spark you define all your actions and transformations, at the end it builds an
optimal DAG out of this information and executes it
• This tool would do the exact same thing but across process boundaries
• The Services itself can be written in any language as long as they can make
REST calls
• Convenience clients would be great but optional
• As this tool controls the data flow (no data flows through the tool itself
though) it can create "intermediate" topics to enable more use-cases:
• Quality checks
• Automatic anonymization
• Automatic collection of samples
© 2019 OpenCore GmbH & Co. KG 50
Example
© 2019 OpenCore GmbH & Co. KG 51
Example
Service A Service BTopic "xqdrnc"
© 2019 OpenCore GmbH & Co. KG 52
Example
Service A Service BTopic "xqdrnc"
Infra
Service
if (booking.travel_agency == "Thomas Cook") {
alert()
}
© 2019 OpenCore GmbH & Co. KG 53
Example
Service A Service BTopic "xqdrnc"
if (booking.travel_agency == "Thomas Cook") {
fail()
}
© 2019 OpenCore GmbH & Co. KG 54
Example
if (booking.travel_agency == "Thomas Cook") {
fail()
}
Service A Service BTopic "xqdrnc"
Infra
Service
Topic "blgrgb"
© 2019 OpenCore GmbH & Co. KG 55
Wishlist
• This tool could also (optionally) automatically run or re-run the services
using e.g. Kubernetes
• This'd allow for total control
• Services need to be made aware of changes in the topology
• We could automatically transform between data formats
• e.g. a service accepting Protobuf but the data only exists in Avro
© 2019 OpenCore GmbH & Co. KG 56
Wishlist
• A side effect would be an automatically up-to-date Governance/Data
Catalog
• This would allow for better self-service operations: You don't have to find "topics" in
Kafka with your data, you just have to declare which data you're interested in and
the system will always tell you where this data lives
• Orchestrators like Conductor etc. would still be important encapsulated in a
"Application"
• Which itself could consist of multiple services
© 2019 OpenCore GmbH & Co. KG 57
Orchestography
Service 1
(Orchestrated)
Kafka
(or similar,
for Choreography)
Service 3
(Orchestrated)
Service 4
(Orchestrated)
Service 2
(Orchestrated)
?
Questions
What are your questions?
lars.francke@opencore.com
@lars_francke
© 2019 OpenCore GmbH & Co. KG 58

Más contenido relacionado

La actualidad más candente

API Description Languages
API Description LanguagesAPI Description Languages
API Description LanguagesAkana
 
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
 
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...confluent
 
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Jean-Paul Azar
 
Event Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveEvent Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveJonas Bonér
 
Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)...
Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)...Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)...
Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)...Amazon Web Services
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking VN
 
Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETconfluent
 
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server Push
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server PushReal Time UI with Apache Kafka Streaming Analytics of Fast Data and Server Push
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server PushLucas Jellema
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaAraf Karsh Hamid
 
SmartChat WhatsApp-clone using AWS Amplify AppSync
SmartChat WhatsApp-clone using AWS Amplify AppSyncSmartChat WhatsApp-clone using AWS Amplify AppSync
SmartChat WhatsApp-clone using AWS Amplify AppSyncThanh Nguyen
 
Microservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanMicroservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanAraf Karsh Hamid
 
Virtual Flink Forward 2020: Testing production streaming applications - Gyul...
Virtual Flink Forward 2020: Testing production streaming applications -  Gyul...Virtual Flink Forward 2020: Testing production streaming applications -  Gyul...
Virtual Flink Forward 2020: Testing production streaming applications - Gyul...Flink Forward
 
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63Angel Alberici
 
Dynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsDynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsFlink Forward
 
Grokking Techtalk #45: First Principles Thinking
Grokking Techtalk #45: First Principles ThinkingGrokking Techtalk #45: First Principles Thinking
Grokking Techtalk #45: First Principles ThinkingGrokking VN
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Araf Karsh Hamid
 
Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...HostedbyConfluent
 
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...confluent
 

La actualidad más candente (20)

API Description Languages
API Description LanguagesAPI Description Languages
API Description Languages
 
Apache Kafka Best Practices
Apache Kafka Best PracticesApache Kafka Best Practices
Apache Kafka Best Practices
 
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...
 
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
 
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
 
Event Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspectiveEvent Driven-Architecture from a Scalability perspective
Event Driven-Architecture from a Scalability perspective
 
Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)...
Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)...Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)...
Architecture Patterns for Multi-Region Active-Active Applications (ARC209-R2)...
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
 
Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NET
 
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server Push
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server PushReal Time UI with Apache Kafka Streaming Analytics of Fast Data and Server Push
Real Time UI with Apache Kafka Streaming Analytics of Fast Data and Server Push
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 
SmartChat WhatsApp-clone using AWS Amplify AppSync
SmartChat WhatsApp-clone using AWS Amplify AppSyncSmartChat WhatsApp-clone using AWS Amplify AppSync
SmartChat WhatsApp-clone using AWS Amplify AppSync
 
Microservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanMicroservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, Kanban
 
Virtual Flink Forward 2020: Testing production streaming applications - Gyul...
Virtual Flink Forward 2020: Testing production streaming applications -  Gyul...Virtual Flink Forward 2020: Testing production streaming applications -  Gyul...
Virtual Flink Forward 2020: Testing production streaming applications - Gyul...
 
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
MuleSoft Event Driven Architecture (EDA Patterns in MuleSoft) - VirtualMuleys63
 
Dynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsDynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data Alerts
 
Grokking Techtalk #45: First Principles Thinking
Grokking Techtalk #45: First Principles ThinkingGrokking Techtalk #45: First Principles Thinking
Grokking Techtalk #45: First Principles Thinking
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...Managing multiple event types in a single topic with Schema Registry | Bill B...
Managing multiple event types in a single topic with Schema Registry | Bill B...
 
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
 

Similar a Building and Evolving a Dependency-Graph Based Microservice Architecture (Lars Francke, OpenCore GmbH & Co.KG) Kafka Summit SF 2019

GitOps, Jenkins X &Future of CI/CD
GitOps, Jenkins X &Future of CI/CDGitOps, Jenkins X &Future of CI/CD
GitOps, Jenkins X &Future of CI/CDRakuten Group, Inc.
 
DevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesDevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesRich Mills
 
The new stack isn’t a stack: Fragmentation and terraforming 
the service layer
The new stack isn’t a stack: Fragmentation and terraforming 
the service layerThe new stack isn’t a stack: Fragmentation and terraforming 
the service layer
The new stack isn’t a stack: Fragmentation and terraforming 
the service layerDonnie Berkholz
 
DevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesDevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesRich Mills
 
DevOps in the Enterprise: My Experience at Accenture
DevOps in the Enterprise: My Experience at AccentureDevOps in the Enterprise: My Experience at Accenture
DevOps in the Enterprise: My Experience at AccentureJose Quaresma
 
Implementing Cloud-Based DevOps for Distributed Agile Projects
Implementing Cloud-Based DevOps for Distributed Agile ProjectsImplementing Cloud-Based DevOps for Distributed Agile Projects
Implementing Cloud-Based DevOps for Distributed Agile ProjectsTechWell
 
Why is Infrastructure-as-Code essential in the Cloud Age?
Why is Infrastructure-as-Code essential in the Cloud Age?Why is Infrastructure-as-Code essential in the Cloud Age?
Why is Infrastructure-as-Code essential in the Cloud Age?Andrew Ferrier
 
Bluemix overview - Rencontres Ecole Centrale et Supelec avec IBM France Lab -...
Bluemix overview - Rencontres Ecole Centrale et Supelec avec IBM France Lab -...Bluemix overview - Rencontres Ecole Centrale et Supelec avec IBM France Lab -...
Bluemix overview - Rencontres Ecole Centrale et Supelec avec IBM France Lab -...Yves LE CLEACH
 
Innovation at Meraki
Innovation at MerakiInnovation at Meraki
Innovation at MerakiCisco Canada
 
Ten Minutes Bluemix Pitch from Dev to Dev
Ten Minutes Bluemix Pitch from Dev to DevTen Minutes Bluemix Pitch from Dev to Dev
Ten Minutes Bluemix Pitch from Dev to DevNiklas Heidloff
 
DevOps on AWS: A Practical Introduction
DevOps on AWS: A Practical IntroductionDevOps on AWS: A Practical Introduction
DevOps on AWS: A Practical Introductionaledsage
 
Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016Stormy Peters
 
5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure successRogue Wave Software
 
SaaStock 2019 - eltjo hofstee
SaaStock 2019 -  eltjo hofsteeSaaStock 2019 -  eltjo hofstee
SaaStock 2019 - eltjo hofsteeSaaStock
 
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...Vadym Kazulkin
 
#dbhouseparty - Should I be building Microservices?
#dbhouseparty - Should I be building Microservices?#dbhouseparty - Should I be building Microservices?
#dbhouseparty - Should I be building Microservices?Tammy Bednar
 
Intalio create and cloudfoudry - short
Intalio create and cloudfoudry - shortIntalio create and cloudfoudry - short
Intalio create and cloudfoudry - shorthmalphettes
 
Enterprise software needs a PaaS
Enterprise software needs a PaaSEnterprise software needs a PaaS
Enterprise software needs a PaaShmalphettes
 

Similar a Building and Evolving a Dependency-Graph Based Microservice Architecture (Lars Francke, OpenCore GmbH & Co.KG) Kafka Summit SF 2019 (20)

GitOps, Jenkins X &Future of CI/CD
GitOps, Jenkins X &Future of CI/CDGitOps, Jenkins X &Future of CI/CD
GitOps, Jenkins X &Future of CI/CD
 
DevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesDevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in Microservices
 
The new stack isn’t a stack: Fragmentation and terraforming 
the service layer
The new stack isn’t a stack: Fragmentation and terraforming 
the service layerThe new stack isn’t a stack: Fragmentation and terraforming 
the service layer
The new stack isn’t a stack: Fragmentation and terraforming 
the service layer
 
DevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in MicroservicesDevOps Patterns to Enable Success in Microservices
DevOps Patterns to Enable Success in Microservices
 
DevOps in the Enterprise: My Experience at Accenture
DevOps in the Enterprise: My Experience at AccentureDevOps in the Enterprise: My Experience at Accenture
DevOps in the Enterprise: My Experience at Accenture
 
Implementing Cloud-Based DevOps for Distributed Agile Projects
Implementing Cloud-Based DevOps for Distributed Agile ProjectsImplementing Cloud-Based DevOps for Distributed Agile Projects
Implementing Cloud-Based DevOps for Distributed Agile Projects
 
Why is Infrastructure-as-Code essential in the Cloud Age?
Why is Infrastructure-as-Code essential in the Cloud Age?Why is Infrastructure-as-Code essential in the Cloud Age?
Why is Infrastructure-as-Code essential in the Cloud Age?
 
Bluemix overview - Rencontres Ecole Centrale et Supelec avec IBM France Lab -...
Bluemix overview - Rencontres Ecole Centrale et Supelec avec IBM France Lab -...Bluemix overview - Rencontres Ecole Centrale et Supelec avec IBM France Lab -...
Bluemix overview - Rencontres Ecole Centrale et Supelec avec IBM France Lab -...
 
Innovation at Meraki
Innovation at MerakiInnovation at Meraki
Innovation at Meraki
 
Ten Minutes Bluemix Pitch from Dev to Dev
Ten Minutes Bluemix Pitch from Dev to DevTen Minutes Bluemix Pitch from Dev to Dev
Ten Minutes Bluemix Pitch from Dev to Dev
 
Leveraging Multiple Cloud Orchestration
Leveraging Multiple Cloud OrchestrationLeveraging Multiple Cloud Orchestration
Leveraging Multiple Cloud Orchestration
 
DevOps on AWS: A Practical Introduction
DevOps on AWS: A Practical IntroductionDevOps on AWS: A Practical Introduction
DevOps on AWS: A Practical Introduction
 
Ibm cloud open architecture
Ibm cloud  open architectureIbm cloud  open architecture
Ibm cloud open architecture
 
Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016Cloud Foundry Technical Overview at IBM Interconnect 2016
Cloud Foundry Technical Overview at IBM Interconnect 2016
 
5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success
 
SaaStock 2019 - eltjo hofstee
SaaStock 2019 -  eltjo hofsteeSaaStock 2019 -  eltjo hofstee
SaaStock 2019 - eltjo hofstee
 
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
 
#dbhouseparty - Should I be building Microservices?
#dbhouseparty - Should I be building Microservices?#dbhouseparty - Should I be building Microservices?
#dbhouseparty - Should I be building Microservices?
 
Intalio create and cloudfoudry - short
Intalio create and cloudfoudry - shortIntalio create and cloudfoudry - short
Intalio create and cloudfoudry - short
 
Enterprise software needs a PaaS
Enterprise software needs a PaaSEnterprise software needs a PaaS
Enterprise software needs a PaaS
 

Más de confluent

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flinkconfluent
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsconfluent
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flinkconfluent
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...confluent
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluentconfluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkconfluent
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloudconfluent
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Diveconfluent
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluentconfluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Meshconfluent
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservicesconfluent
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3confluent
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernizationconfluent
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataconfluent
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2confluent
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023confluent
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesisconfluent
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023confluent
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streamsconfluent
 

Más de confluent (20)

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insights
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flink
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalk
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Mesh
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservices
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernization
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time data
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesis
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streams
 

Último

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

Building and Evolving a Dependency-Graph Based Microservice Architecture (Lars Francke, OpenCore GmbH & Co.KG) Kafka Summit SF 2019

  • 1. Building and Evolving a Dependency-Graph Based Microservice Architecture Lars Francke – Partner and Co-Founder @ OpenCore Kafka Summit 2019 – 30 September 2019
  • 2. © 2019 OpenCore GmbH & Co. KG 2 About Me – Lars Francke • Partner & Co-Founder at OpenCore • We do Hadoop/Big Data/insert Buzzword consulting • Based in Germany but doing business world-wide if you need us J • https://www.opencore.com • ASF/Big Data/Hadoop since 2008 • Apache Committer & Member: HBase, Hive, ORC, Training (PMC) • Contact • lars.francke@opencore.com • @lars_francke
  • 3. The Problem © 2019 OpenCore GmbH & Co. KG 3
  • 4. © 2019 OpenCore GmbH & Co. KG 4 The problem No one here knows the dependencies between all our Microservices anymore! We drew a picture but it hasn't been updated in months and is now doing more harm than good We're afraid of stopping this service because we don't know who depends on it How do these topics differ and where can I find the latest customer registrations? "customer_regs", "customer_regs1", "customer_regs_new", "new_customers", "customers_lars_test" We need to migrate from On-Prem Kafka to Confluent Cloud but have no idea where to begin and what we need.
  • 5. © 2019 OpenCore GmbH & Co. KG 5 The problem Didn't the London team already build a service to check zip codes? Why has this dashboard stopped showing data? Does anyone mind if I add a field to the "Customer" object? Oh no, Governance wants to know where in Kafka we store PII data L
  • 6. Microservice Architectures © 2019 OpenCore GmbH & Co. KG 6
  • 8. © 2019 OpenCore GmbH & Co. KG 8 Choreography Also (often) called Event-Driven
  • 9. © 2019 OpenCore GmbH & Co. KG 9 Choreography • Services coordinate amongst themselves • No central service • "Smart endpoints and dumb pipes" – Martin Fowler & James Lewis • Kafka often used for the "dumb pipes" part (no offense!) • Lots of flexibility • Just add a new service, no need to coordinate with others • Use whatever language you want, whatever data format you want etc. • Often brittle • Loose coupling means you might depend on a service without knowing it • Those dependencies might change and break • People might depend on your service without you knowing it!
  • 10. © 2019 OpenCore GmbH & Co. KG 10 Choreography • Hard to keep track of everything & get an overview • Harder to verify at build-time • One can only do the equivalent of a unit test easily, integration testing is harder if other components are unknown or under control by a different team • Different teams can work independently
  • 11. © 2019 OpenCore GmbH & Co. KG 11 Choreography When I said no central service What I meant was that we obviously still do have central services like: • Schema Registry • Log collection • Monitoring • Etc.
  • 13. © 2019 OpenCore GmbH & Co. KG 13 Orchestration • One central "coordinator" that tells everyone what to do • Like a conductor in an orchestra • The Enterprise Service Bus (ESB) is an example • Routing, Transformations, Business rules etc. • It's easy to get an overview over the whole system • The central service can even provide a nice UI, showing dependency graphs • Monitoring is easier
  • 14. © 2019 OpenCore GmbH & Co. KG 14 Orchestration • Less flexible • Adding a new service requires coordination and potentially changing/restarting existing things • Less brittle • Central service can validate the architecture • The architecture/graph can often be verified at "build"-time • Works well with CI/CD • * as Code (Infrastructure, Configuration, …) • May require coordination between teams • Less self-service
  • 15. © 2019 OpenCore GmbH & Co. KG 15 Orchestography Natural question to ask: Which is better?
  • 16. © 2019 OpenCore GmbH & Co. KG 16 Orchestography
  • 17. © 2019 OpenCore GmbH & Co. KG 17 Orchestography Both have their uses!
  • 18. © 2019 OpenCore GmbH & Co. KG 18 Microservices • Microservices are often used to split up a single monolithic app into multiple independent services • There are still independent "business applications" even though some may share data or even services • Ideally a single team responsible for a product • Orchestration is easier within one product (or team) while Choreography is appealing across product/team borders
  • 19. © 2019 OpenCore GmbH & Co. KG 19 Orchestography • Orchestration lends itself more to "workflow" oriented tasks which are split across multiple processes and/or need to be distributed • Strict or at least strong dependencies between those tasks • Can be seen as "one" thing, that could – in theory – also be implemented as one monolithic process • Choreography lends itself more to loosely coupled or decoupled services • These might also have dependencies but often not as strict
  • 20. © 2019 OpenCore GmbH & Co. KG 20 Orchestography Application 1 (Orchestrated) Kafka (or similar, for Choreography) Application 3 (Orchestrated) Application 4 (Orchestrated) Application 2 (Orchestrated) ?
  • 21. © 2019 OpenCore GmbH & Co. KG 21 Example
  • 22. Naming things is hard © 2019 OpenCore GmbH & Co. KG 22
  • 23. © 2019 OpenCore GmbH & Co. KG 23 Cattle vs. Pets Show of hands Who here has (had) servers with names like: Sources: https://www.flickr.com/photos/gageskidmore/7584137078, https://commons.wikimedia.org/wiki/File:Jean-Luc_Picard_2.jpg, https://www.flickr.com/photos/44214515@N06/21547144233
  • 24. © 2019 OpenCore GmbH & Co. KG 24 Pets Names like that are a good sign that these servers might be your Pets They often have a combination of these features: • Manually built and managed • Indispensable • Can never be down
  • 25. © 2019 OpenCore GmbH & Co. KG 25 Cattle The industry has moved on (or is in the process) to treating Servers (and services) as Cattle instead • No identity (random names or based on some pattern) • Disposable • Infrastructure as Code
  • 26. © 2019 OpenCore GmbH & Co. KG 26 Cattle • The Cloud was a big "enabler" for this movement • Servers have more or less random names • Each specific instance doesn't matter, will be rebuilt when needed • e.g. Spot Instances • Kubernetes & Co. playing a role as well
  • 27. © 2019 OpenCore GmbH & Co. KG 27 Cattle If we agree that this is a good thing… …why do you have a topic called customerCreated
  • 28. Technology to the rescue Lars, tell us what to do! © 2019 OpenCore GmbH & Co. KG 28
  • 29. © 2019 OpenCore GmbH & Co. KG 29 L We are not the first to struggle with this Surprising, I know
  • 30. © 2019 OpenCore GmbH & Co. KG 30 Good Compan(y|ies) Source: https://commons.wikimedia.org/wiki/File:ING_Group_N.V._Logo.svg
  • 31. © 2019 OpenCore GmbH & Co. KG 31 Netflix Conductor • Netflix OSS Project: https://github.com/Netflix/conductor • "Conductor is a Workflow Orchestration engine that runs in the cloud." • Conductor runs backend Servers providing UI & REST API • You define your Workflows in a JSON DSL, POST it to the API • You develop your Workers in whichever language you want (convenience libraries available for Java & Python) and they get new work from the REST API
  • 32. © 2019 OpenCore GmbH & Co. KG 32 Netflix Conductor • Workflows consist of Tasks • Conductor itself can store some Payload or it can/must be stored externally • It does not support using Kafka (or similar) to decouple Tasks
  • 33. © 2019 OpenCore GmbH & Co. KG 33 Netflix Conductor – Tasks [ { "name": "verify_if_idents_are_added", "retryCount": 3, "retryLogic": "FIXED", "retryDelaySeconds": 10, "timeoutSeconds": 300, "timeoutPolicy": "TIME_OUT_WF", "responseTimeoutSeconds": 180 }, { "name": "add_idents", "retryCount": 3, "retryLogic": "FIXED", "retryDelaySeconds": 10, "timeoutSeconds": 300, "timeoutPolicy": "TIME_OUT_WF", "responseTimeoutSeconds": 180 } ]
  • 34. © 2019 OpenCore GmbH & Co. KG 34 Netflix Conductor – Workflow Pt. 1 { "name": "add_netflix_identation", "description": "Adds Netflix Identation to video files.", "version": 2, "schemaVersion": 2, "tasks": [ { "name": "verify_if_idents_are_added", "taskReferenceName": "ident_verification", "inputParameters": { "contentId": "${workflow.input.contentId}" }, "type": "SIMPLE" }, { "name": "decide_task", "taskReferenceName": "is_idents_added", "inputParameters": { "case_value_param": "${ident_verification.output.is_idents_added}" },
  • 35. © 2019 OpenCore GmbH & Co. KG 35 Netflix Conductor – Workflow Pt. 2 "type": "DECISION", "caseValueParam": "case_value_param", "decisionCases": { "false": [ { "name": "add_idents", "taskReferenceName": "add_idents_by_type", "inputParameters": { "identType": "${workflow.input.identType}", "contentId": "${workflow.input.contentId}" }, "type": "SIMPLE" } ] } } ] }
  • 36. © 2019 OpenCore GmbH & Co. KG 36 Uber Cadence • Uber Project: https://github.com/uber/cadence • "Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way." • From the same people that lead the Amazon Simple Workflow service • Has Clients for Java & Go • Other possible, communicate via Thrift
  • 37. © 2019 OpenCore GmbH & Co. KG 37 Uber Cadence • Cadence handles Task state & Queues for us • Your Workflow is implemented in code • Workflows can run & wait for a long time • Example: Subscription Renewal workflow that runs forever and charges your customer every 30 days • Also no direct Kafka integration
  • 38. © 2019 OpenCore GmbH & Co. KG 38 Uber Cadence – Example @Override public void execute(String customerId) { activities.sendWelcomeEmail(customerId); try { boolean trialPeriod = true; while (true) { Workflow.sleep(Duration.ofDays(30)); activities.chargeMonthlyFee(customerId); if (trialPeriod) { activities.sendEndOfTrialEmail(customerId); trialPeriod = false; } else { activities.sendMonthlyChargeEmail(customerId); } } } catch (CancellationException e) { activities.processSubscriptionCancellation(customerId); activities.sendSorryToSeeYouGoEmail(customerId); } }
  • 39. © 2019 OpenCore GmbH & Co. KG 39 Expedia Stream Registry • Expedia project (originally HomeAway): https://github.com/ExpediaGroup/stream-registry • A metadata service for streams • Who owns the stream? • Who are the producers and consumers of the stream? • Management of stream replication across clusters and regions • Management of stream storage for permanent access • Management of stream triggers for legacy stream sources
  • 40. © 2019 OpenCore GmbH & Co. KG 40 Expedia Stream Registry • It manages Clusters as well as "Streams" of data • Including schemas, owners and other metadata • Unfortunately the docs are pretty thin • Moved from HomeAway to Expedia while undergoing a refactor
  • 41. © 2019 OpenCore GmbH & Co. KG 41 Others There are others: • ING Baker • ING Project: https://github.com/ing-bank/baker • "Orchestrate microservice-based process flows" • Java based library • You specify a Recipe which includes all your functions (interactions), the data they need (ingredients) and the data they produce (event) • Zeebe • From the Camunda folks • BPMN 2 • "A Workflow Engine for Microservices Orchestration" • Dagster • …
  • 42. Where does this leave us? © 2019 OpenCore GmbH & Co. KG 42
  • 43. © 2019 OpenCore GmbH & Co. KG 43 The Current State • Most existing tools require you to explicitly model your dependency graph • This makes sense for "strict" workflows • But not for many other use-cases (e.g. analytics, logging, persistence etc.) • This is comparable to having SQL without a Query Optimizer or Spark without Catalyst • Some tools require you to implement their API or use their library
  • 44. © 2019 OpenCore GmbH & Co. KG 44 The Current State • Unfortunately, the perfect solution doesn't yet exist • The Orchestrators that do exist are all very nice and work • For the Choreography though things are a bit bleak • Stream Registry moves into the right direction • Schema Registry is necessary as well but not sufficient
  • 45. © 2019 OpenCore GmbH & Co. KG 45 Does this seem familiar?
  • 46. © 2019 OpenCore GmbH & Co. KG 46 Wishlist • We need better support for Event-Driven (Choreography) style architectures • We need better Governance for data in Kafka • This problem is not exclusive to Kafka • Kafka topics shouldn't be managed manually • We need better self-service tools to find data sources
  • 47. © 2019 OpenCore GmbH & Co. KG 47 Wishlist • We'd like a tool that • allows us to register logical streams of data, • Used to distinguish flows with the same schema • Metadata (e.g. owners) • e.g. "New customers stream" • allows us to register Connections, • e.g. Kafka Clusters, Kinesis credentials etc. • allows us to register (Micro-)Services • Including their Inputs and Outputs • These are the "Data" in- and outputs, not any topic itself • Both reference existing Schemas • Optional: Dependencies
  • 48. © 2019 OpenCore GmbH & Co. KG 48 Wishlist • This tool could use this information to • automatically build an optimal DAG, • and execute all necessary steps to enable this DAG: • Create Kafka Topics • Create necessary ACLs • Optionally: Update MirrorMaker configuration or other steps • The Services itself can then get all the information they need from the REST API • Cluster configuration • Schema information • Topic names for in- and output • Optional: Pre- & Postconditions
  • 49. © 2019 OpenCore GmbH & Co. KG 49 Wishlist • For those who use Apache Spark: • In Spark you define all your actions and transformations, at the end it builds an optimal DAG out of this information and executes it • This tool would do the exact same thing but across process boundaries • The Services itself can be written in any language as long as they can make REST calls • Convenience clients would be great but optional • As this tool controls the data flow (no data flows through the tool itself though) it can create "intermediate" topics to enable more use-cases: • Quality checks • Automatic anonymization • Automatic collection of samples
  • 50. © 2019 OpenCore GmbH & Co. KG 50 Example
  • 51. © 2019 OpenCore GmbH & Co. KG 51 Example Service A Service BTopic "xqdrnc"
  • 52. © 2019 OpenCore GmbH & Co. KG 52 Example Service A Service BTopic "xqdrnc" Infra Service if (booking.travel_agency == "Thomas Cook") { alert() }
  • 53. © 2019 OpenCore GmbH & Co. KG 53 Example Service A Service BTopic "xqdrnc" if (booking.travel_agency == "Thomas Cook") { fail() }
  • 54. © 2019 OpenCore GmbH & Co. KG 54 Example if (booking.travel_agency == "Thomas Cook") { fail() } Service A Service BTopic "xqdrnc" Infra Service Topic "blgrgb"
  • 55. © 2019 OpenCore GmbH & Co. KG 55 Wishlist • This tool could also (optionally) automatically run or re-run the services using e.g. Kubernetes • This'd allow for total control • Services need to be made aware of changes in the topology • We could automatically transform between data formats • e.g. a service accepting Protobuf but the data only exists in Avro
  • 56. © 2019 OpenCore GmbH & Co. KG 56 Wishlist • A side effect would be an automatically up-to-date Governance/Data Catalog • This would allow for better self-service operations: You don't have to find "topics" in Kafka with your data, you just have to declare which data you're interested in and the system will always tell you where this data lives • Orchestrators like Conductor etc. would still be important encapsulated in a "Application" • Which itself could consist of multiple services
  • 57. © 2019 OpenCore GmbH & Co. KG 57 Orchestography Service 1 (Orchestrated) Kafka (or similar, for Choreography) Service 3 (Orchestrated) Service 4 (Orchestrated) Service 2 (Orchestrated) ?
  • 58. Questions What are your questions? lars.francke@opencore.com @lars_francke © 2019 OpenCore GmbH & Co. KG 58