SlideShare a Scribd company logo
A SOCIAL NETWORK ON STREAMS
DRIVETRIBE ENGINEERING
InfoQ.com: News & Community Site
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
drivetribe
• Over 1,000,000 software developers, architects and CTOs read the site world-
wide every month
• 250,000 senior developers subscribe to our weekly newsletter
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• 2 dedicated podcast channels: The InfoQ Podcast, with a focus on
Architecture and The Engineering Culture Podcast, with a focus on building
• 96 deep dives on innovative topics packed as downloadable emags and
minibooks
• Over 40 new content items per week
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon London
www.qconlondon.com
DRIVETRIBE
DRIVETRIBE
▸ The world biggest motoring
community.
▸ A social platform for petrolheads.
▸ By Clarkson, Hammond and May.
2
DRIVETRIBE
DRIVETRIBE
▸ A content destination at the core.
▸ Users consume feeds of content:
images, videos, long-form articles.
▸ Content is organised in
homogenous categories called
“tribes”.
▸ Different users have different
interests and the tribe model allows
to mix and match at will.
3
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ Single article by James May.
▸ Contains a plethora of content and
engagement information.
▸ What do we need to compute an
aggregate like this?
4
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ getUser(id: Id[User])
5
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
6
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
7
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countViews(id: Id[Article])
8
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countViews(id: Id[Article])
▸ countComments(id: Id[Article])
9
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countViews(id: Id[Article])
▸ countComments(id: Id[Article])
▸ countBumps(id: Id[Article])
10
DRIVETRIBE
DRIVETRIBE FEED OF ARTICLES
▸ rankArticles(forUserId).flatMap { a
=> … }
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countViews(id: Id[Article])
▸ …
11
DRIVETRIBE
QUINTESSENTIAL PREREQUISITES
▸ Scalable. Jeremy Clarkson has 7.2M Twitter followers. Cannot really hack
it and worry about it later.
▸ Performant. Low latency is key and mobile networks add quite a bit of it.
▸ Flexible. Almost nobody gets it right the first time around. The ability to
iterate is paramount.
▸ Maintainable. Spaghetti code works like interest on debt.
12
DRIVETRIBE
THREE TIER APPROACH
▸ Clients interact with a fleet of stateless servers
(aka “API” servers or “Backend”) via HTTP
(which is stateless).
▸ Global shared mutable state (aka the Database).
▸ Starting simple: Store data in a DB.
▸ Starting simple: Compute the aggregated views
on the fly.
13
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countComments(id: Id[Article])
▸ countBumps(id: Id[Article])
▸ countViews(id: Id[Article])
14
DRIVETRIBE
READ TIME AGGREGATION
▸ (6 queries per Item) x (Y items per
page)
▸ Cost of ranking and personalisation.
▸ Quite some work at read time.
▸ Slow. Not really Performant.
15
DRIVETRIBE
WRITE TIME AGGREGATION
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
16
DRIVETRIBE
WRITE TIME AGGREGATION
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
17
DRIVETRIBE
WRITE TIME AGGREGATION
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
18
DRIVETRIBE
WRITE TIME AGGREGATION
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
19
DRIVETRIBE
WRITE TIME AGGREGATION - EVOLUTION
▸ sendNotification
20
DRIVETRIBE
WRITE TIME AGGREGATION - EVOLUTION
▸ sendNotification
▸ updateUserStats
21
DRIVETRIBE
WRITE TIME AGGREGATION - EVOLUTION
▸ sendNotification
▸ updateUserStats.
▸ What if we have a cache?
▸ Or a different database for search?
22
DRIVETRIBE
WRITE TIME AGGREGATION
▸ A simple user action is triggering a
potentially endless sequence of side
effects.
▸ Most of which need network IO.
▸ Many of which can fail.
23
DRIVETRIBE
ATOMICITY
▸ What happens if one of them fails?
What happens if the server fails in
the middle?
▸ We may have transaction support in
the DB, but what about external
systems?
▸ Inconsistent.
24
Atomicity?
DRIVETRIBE
CONCURRENCY
▸ Concurrent mutations on a global
shared state entail race conditions.
▸ State mutations are destructive and
can not be (easily) undone.
▸ A bug can corrupt the data
permanently.
25
Concurrency
DRIVETRIBE
ITALIAN PASTA
▸ Model evolution becomes difficult.
Reads and writes are tightly
coupled.
▸ Migrations are scary.
▸ This is neither Extensible nor
Maintainable.
26
Extensibility
DRIVETRIBE
DIFFERENT APPROACH
▸ Let’s take a step back and try to decouple things.
▸ Clients send events to the API: “John liked Jeremy’s post”, “Maria updated
her profile”
▸ Events are immutable. They capture a user action at some point in time.
▸ Every application state instance can be modelled as a projection of those
events.
27
DRIVETRIBE
▸ Persisting those yields an append-
only log of events.
▸ An event reducer can then produce
application state instances.
▸ Even retroactively. The log is
immutable.
▸ This is event sourcing.
28
DRIVETRIBE
▸ The write-time model (command
model) and the read time model
(query model) can be separated.
▸ Decoupling the two models opens the
door to more efficient, custom
implementations.
▸ This is known as Command Query
Responsibility Segregation aka
CQRS.
29
DRIVETRIBE
EVENT SOURCING APPROACH
30
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
31
Store Like Event
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
32
Store Like Event ArticleStatsReducer
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
33
Store Like Event ArticleStatsReducer
NotificationReducer
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
34
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
35
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
And so on..
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
36
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Sky Is the limit
Get Articles
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
37
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Sky Is the limit
Get Articles
Like!!
Extensibility?
Maintainability?
DRIVETRIBE
EVENT SOURCING APPROACH
38
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Sky Is the limit
Get Articles
Like!!
Performance?
DRIVETRIBE
EVENT SOURCING APPROACH
39
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Sky Is the limit
Get Articles
Like!!
Atomicity?
DRIVETRIBE
EVENT SOURCING APPROACH
40
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Sky Is the limit
Get Articles
Like!!
Concurrency?
IMPLEMENTATION?
WE NEED A LOG
DRIVETRIBE
APACHE KAFKA
▸ Distributed, fault-tolerant, durable and fast append-only log.
▸ Can scale the thousands of nodes, producers and consumers.
▸ Each business event type can be stored in its own topic.
43
WE NEED A STREAM
PROCESSOR
DRIVETRIBE
APACHE FLINK
▸ Scalable, performant, mature.
▸ Elegant high level APIs in Scala.
▸ Powerful low level APIs for advanced tuning.
▸ Multiple battle-tested integrations.
▸ Very nice and active community.
45
WE NEED DATASTORE
DRIVETRIBE
ELASTICSEARCH
▸ Horizontally scalable document store.
▸ Rich and expressive query language.
▸ Dispensable. Can be replaced.
47
WE NEED AN API
DRIVETRIBE
AKKA HTTP
▸ Asynchronous web application framework.
▸ Written in Scala.
▸ Very expressive routing DSL.
▸ Any modern web application framework would do.
49
DRIVETRIBE
EVENT SOURCING IN PRACTICE
50
Store Raw events Consume raw events
Produce aggregated
views
Retrieve aggregated
views
DRIVETRIBE
EVENT SOURCING IN PRACTICE
51
Store Raw events Consume raw events
Produce aggregated
views
Retrieve aggregated
views
Stateful
DRIVETRIBE
EVENT SOURCING IN PRACTICE
52
Store Raw events Consume raw events
Produce aggregated
views
Retrieve aggregated
views
DRIVETRIBE
BLUE/GREEN APPROACH
53
MIRROR
A REAL WORLD EXAMPLE
DRIVETRIBE
COUNTING BUMPS
▸ Thousands of people like the fact that
Jeremy Clarkson is a really tall guy
▸ Users can “bump” a post if they like it
55
DRIVETRIBE
EVENT SOURCING IN PRACTICE
56
Store Raw events Consume raw events
Produce aggregated
views
Retrieve aggregated
views
DRIVETRIBE
COUNTING BUMPS
57
DRIVETRIBE
COUNTING BUMPS - FIRST ATTEMPT
58
DRIVETRIBE
COUNTING BUMPS - FIRST ATTEMPT
59
DRIVETRIBE
COUNTING BUMPS - FIRST ATTEMPT
60
▸ Use Flink with at least once
semantics
DRIVETRIBE
COUNTING BUMPS - FIRST ATTEMPT
61
▸ Use Flink with at least once
semantics
▸ Our system is eventually consistent
DRIVETRIBE
WHAT DO WE KNOW ABOUT OUT COUNTER?
62
▸ we know we’re doing some kind of combine operation over States
DRIVETRIBE 63
▸ we know we’re doing some kind of combine operation over States
▸ we want our counter to be idempotent: a |+| a === a
WHAT DO WE KNOW ABOUT OUT COUNTER?
DRIVETRIBE 64
▸ we know we’re doing some kind of combine operation over States
▸ we want our counter to be idempotent: a |+| a === a
▸ we also want our counter to be associative:
a |+| (b |+| c) === (a |+| b) |+| c
WHAT DO WE KNOW ABOUT OUT COUNTER?
DRIVETRIBE
BAND ALGEBRA
65
▸ Closed
▸ Idempotent
▸ Associative
DRIVETRIBE
COUNTING BUMPS - SECOND ATTEMPT
66
DRIVETRIBE
COUNTING BUMPS - SECOND ATTEMPT
67
▸ if all components of a case
class have a band then so does
the case class
▸ would normally bring in Set
implementation from a library
▸ normally that library would have
a law testing module
DRIVETRIBE
COUNTING BUMPS - PUTTING IT TOGETHER
68
DRIVETRIBE
OTHER ALGEBRAS WE USE
69
▸ Adding events: Semigroup/Monoid
▸ Duplicate events: Band
▸ Out of order and duplicate events: Semilattice
FIN
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
drivetribe

More Related Content

What's hot

Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015
Kurt Madel
 
Living with microservices at Pipedrive
Living with microservices at PipedriveLiving with microservices at Pipedrive
Living with microservices at Pipedrive
Renno Reinurm
 
Immutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanImmutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh Corman
Docker, Inc.
 
How kubernetes works community, velocity, and contribution - osls 2017 (1)
How kubernetes works  community, velocity, and contribution - osls 2017 (1)How kubernetes works  community, velocity, and contribution - osls 2017 (1)
How kubernetes works community, velocity, and contribution - osls 2017 (1)
Brian Grant
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Ambassador Labs
 
Docker + jenkins in the enterprise (3)
Docker + jenkins in the enterprise (3)Docker + jenkins in the enterprise (3)
Docker + jenkins in the enterprise (3)
Kurt Madel
 
Crowbar2 update
Crowbar2 updateCrowbar2 update
Crowbar2 update
osonoi
 
Tupperware: Containerized Deployment at FB
Tupperware: Containerized Deployment at FBTupperware: Containerized Deployment at FB
Tupperware: Containerized Deployment at FB
Docker, Inc.
 
FEI Bratislava 2017 - Docker
FEI Bratislava 2017 - DockerFEI Bratislava 2017 - Docker
FEI Bratislava 2017 - Docker
Adam Štipák
 
DockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mphDockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mph
Docker, Inc.
 
Cloud hybridation leveraging on Docker 1.12
Cloud hybridation leveraging on Docker 1.12Cloud hybridation leveraging on Docker 1.12
Cloud hybridation leveraging on Docker 1.12
Ludovic Piot
 

What's hot (11)

Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015
 
Living with microservices at Pipedrive
Living with microservices at PipedriveLiving with microservices at Pipedrive
Living with microservices at Pipedrive
 
Immutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanImmutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh Corman
 
How kubernetes works community, velocity, and contribution - osls 2017 (1)
How kubernetes works  community, velocity, and contribution - osls 2017 (1)How kubernetes works  community, velocity, and contribution - osls 2017 (1)
How kubernetes works community, velocity, and contribution - osls 2017 (1)
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
 
Docker + jenkins in the enterprise (3)
Docker + jenkins in the enterprise (3)Docker + jenkins in the enterprise (3)
Docker + jenkins in the enterprise (3)
 
Crowbar2 update
Crowbar2 updateCrowbar2 update
Crowbar2 update
 
Tupperware: Containerized Deployment at FB
Tupperware: Containerized Deployment at FBTupperware: Containerized Deployment at FB
Tupperware: Containerized Deployment at FB
 
FEI Bratislava 2017 - Docker
FEI Bratislava 2017 - DockerFEI Bratislava 2017 - Docker
FEI Bratislava 2017 - Docker
 
DockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mphDockerCon EU 2015: Placing a container on a train at 200mph
DockerCon EU 2015: Placing a container on a train at 200mph
 
Cloud hybridation leveraging on Docker 1.12
Cloud hybridation leveraging on Docker 1.12Cloud hybridation leveraging on Docker 1.12
Cloud hybridation leveraging on Docker 1.12
 

Similar to Drivetribe: A Social Network on Streams

Flink Forward San Francisco 2018: Aris Koliopoulos & Alex Garella - "Panta R...
Flink Forward San Francisco 2018:  Aris Koliopoulos & Alex Garella - "Panta R...Flink Forward San Francisco 2018:  Aris Koliopoulos & Alex Garella - "Panta R...
Flink Forward San Francisco 2018: Aris Koliopoulos & Alex Garella - "Panta R...
Flink Forward
 
You only have to change on thing to do the DevOps, everything
You only have to change on thing to do the DevOps, everythingYou only have to change on thing to do the DevOps, everything
You only have to change on thing to do the DevOps, everything
Ken Mugrage
 
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
OpenWhisk
 
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Henning Jacobs
 
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Henning Jacobs
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
Cloud Native NoVA
 
Vasiliy Fomichev - Harness the Power of Containers - SUGCON
Vasiliy Fomichev - Harness the Power of Containers - SUGCONVasiliy Fomichev - Harness the Power of Containers - SUGCON
Vasiliy Fomichev - Harness the Power of Containers - SUGCON
SUGCON
 
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
 
WordCamp US 2016 - Ryan Markel: Code Review
WordCamp US 2016 - Ryan Markel: Code ReviewWordCamp US 2016 - Ryan Markel: Code Review
WordCamp US 2016 - Ryan Markel: Code Review
themarkel
 
Ryan Markel - WordCamp StL 2016 - Code Review
Ryan Markel - WordCamp StL 2016 - Code ReviewRyan Markel - WordCamp StL 2016 - Code Review
Ryan Markel - WordCamp StL 2016 - Code Review
ryanmarkel
 
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Henning Jacobs
 
Wikilytics
WikilyticsWikilytics
Wikilytics
Diederik van Liere
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with Ansible
Martin Etmajer
 
The Unicorn Project and the Five Ideals.pdf
The Unicorn Project and the Five Ideals.pdfThe Unicorn Project and the Five Ideals.pdf
The Unicorn Project and the Five Ideals.pdf
VMware Tanzu
 
SUGCON 2015: Docker Containers and Sitecore
SUGCON 2015: Docker Containers and Sitecore SUGCON 2015: Docker Containers and Sitecore
SUGCON 2015: Docker Containers and Sitecore
Vasiliy Fomichev
 
Criteo Infrastructure (Platform) Meetup
Criteo Infrastructure (Platform) MeetupCriteo Infrastructure (Platform) Meetup
Criteo Infrastructure (Platform) Meetup
Ibrahim Abubakari
 
Fast Delivery DevOps Israel
Fast Delivery DevOps IsraelFast Delivery DevOps Israel
Fast Delivery DevOps Israel
Adrian Cockcroft
 
JavaScript All The Things
JavaScript All The ThingsJavaScript All The Things
JavaScript All The Things
Jordan Yaker
 
Tackle 2: New capabilities for modernizing applications to leverage Kubernetes
Tackle 2: New capabilities for modernizing applications to leverage KubernetesTackle 2: New capabilities for modernizing applications to leverage Kubernetes
Tackle 2: New capabilities for modernizing applications to leverage Kubernetes
Konveyor Community
 
Icebreaker with DevOps
Icebreaker with DevOpsIcebreaker with DevOps
Icebreaker with DevOps
WhiteHedge Technologies Inc.
 

Similar to Drivetribe: A Social Network on Streams (20)

Flink Forward San Francisco 2018: Aris Koliopoulos & Alex Garella - "Panta R...
Flink Forward San Francisco 2018:  Aris Koliopoulos & Alex Garella - "Panta R...Flink Forward San Francisco 2018:  Aris Koliopoulos & Alex Garella - "Panta R...
Flink Forward San Francisco 2018: Aris Koliopoulos & Alex Garella - "Panta R...
 
You only have to change on thing to do the DevOps, everything
You only have to change on thing to do the DevOps, everythingYou only have to change on thing to do the DevOps, everything
You only have to change on thing to do the DevOps, everything
 
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
IBM Bluemix OpenWhisk: Cloud Foundry Summit 2016, Frankfurt, Germany: The Fut...
 
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - Destinat...
 
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
Why we don’t use the Term DevOps: the Journey to a Product Mindset - DevOpsCo...
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 
Vasiliy Fomichev - Harness the Power of Containers - SUGCON
Vasiliy Fomichev - Harness the Power of Containers - SUGCONVasiliy Fomichev - Harness the Power of Containers - SUGCON
Vasiliy Fomichev - Harness the Power of Containers - SUGCON
 
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
 
WordCamp US 2016 - Ryan Markel: Code Review
WordCamp US 2016 - Ryan Markel: Code ReviewWordCamp US 2016 - Ryan Markel: Code Review
WordCamp US 2016 - Ryan Markel: Code Review
 
Ryan Markel - WordCamp StL 2016 - Code Review
Ryan Markel - WordCamp StL 2016 - Code ReviewRyan Markel - WordCamp StL 2016 - Code Review
Ryan Markel - WordCamp StL 2016 - Code Review
 
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
 
Wikilytics
WikilyticsWikilytics
Wikilytics
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with Ansible
 
The Unicorn Project and the Five Ideals.pdf
The Unicorn Project and the Five Ideals.pdfThe Unicorn Project and the Five Ideals.pdf
The Unicorn Project and the Five Ideals.pdf
 
SUGCON 2015: Docker Containers and Sitecore
SUGCON 2015: Docker Containers and Sitecore SUGCON 2015: Docker Containers and Sitecore
SUGCON 2015: Docker Containers and Sitecore
 
Criteo Infrastructure (Platform) Meetup
Criteo Infrastructure (Platform) MeetupCriteo Infrastructure (Platform) Meetup
Criteo Infrastructure (Platform) Meetup
 
Fast Delivery DevOps Israel
Fast Delivery DevOps IsraelFast Delivery DevOps Israel
Fast Delivery DevOps Israel
 
JavaScript All The Things
JavaScript All The ThingsJavaScript All The Things
JavaScript All The Things
 
Tackle 2: New capabilities for modernizing applications to leverage Kubernetes
Tackle 2: New capabilities for modernizing applications to leverage KubernetesTackle 2: New capabilities for modernizing applications to leverage Kubernetes
Tackle 2: New capabilities for modernizing applications to leverage Kubernetes
 
Icebreaker with DevOps
Icebreaker with DevOpsIcebreaker with DevOps
Icebreaker with DevOps
 

More from C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
C4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
C4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
C4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
C4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
C4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
C4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
C4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
C4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
C4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
C4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
C4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
C4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
C4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
C4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
C4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
C4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
C4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
C4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
C4Media
 

More from C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Recently uploaded

Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 

Recently uploaded (20)

Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 

Drivetribe: A Social Network on Streams