SlideShare a Scribd company logo
1 of 80
Download to read offline
2
Share docs with
other systems
3
Which protocol?
4
5
1 month later…
6
7
Done!
8
1 month later…
9
10
Done!
11
+
12
The secrets of
13
Hexagonal

Architecture
Separate Domain
& Infrastructure
14
Maintainable Software
=
Domain 

vs
Infrastructure
Twitter 

GitHub 

Medium
16
}@nicoespeon
Nicolas Carlo
17
80 countries
18
Seat
Stop
Departure
Roundtrip
Leg
Taxes
Discount code
Fees
Domain is our
business
19
We could do our
business without
software!
20
21
Infrastructure is
how we make it work
22
Infrastructure 

is a detail
23
Put the Domain
at the heart of
the software
24
Problems mixing
Domain & Infra.
Get a poem from a
poetry library, or return
the default one.
26
27
class PoetryReader {
giveMeSomePoetry(): string {
}
}
28
import * as fs from "fs";
import * as path from "path";
class PoetryReader {
giveMeSomePoetry(): string {
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
}
}
29
import * as fs from "fs";
import * as path from "path";
class PoetryReader {
giveMeSomePoetry(): string {
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
if (!poem) {
poem =
"If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return poem;
}
}
30
import * as fs from "fs";
import * as path from "path";
class PoetryReader {
giveMeSomePoetry(): string {
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
if (!poem) {
poem =
"If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return poem;
}
}
31
import * as fs from "fs";
import * as path from "path";
class PoetryReader {
giveMeSomePoetry(): string {
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
if (!poem) {
poem =
"If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return poem;
}
}
Domain
32
import * as fs from "fs";
import * as path from "path";
class PoetryReader {
giveMeSomePoetry(): string {
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
if (!poem) {
poem =
"If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return poem;
}
}
Infrastructure
33
import * as fs from "fs";
import * as path from "path";
class PoetryReader {
giveMeSomePoetry(): string {
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
if (!poem) {
poem =
"If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return poem;
}
}
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
Hard to 

see
the Business
34
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
Hard to 

test
the Business
35
const pathToPoem = path.join(!__dirname, "poem.txt");
let poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
Hard to 

change
the Business
36
37
import FileReader from "lib/file-reader";
class PoetryReader {
giveMeSomePoetry(): string {
let poem = FileReader.read("poem.txt");
if (!poem) {
poem =
"If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return poem;
}
}
import FileReader from "lib/file-reader";
class PoetryReader {
giveMeSomePoetry(): string {
let poem = FileReader.read("poem.txt");
if (!poem) {
poem =
"If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return poem;
}
}
Same 

problem
38
Hexagonal
Architecture
The simplest way to
40
Separate Domain 

& Infrastructure
41
Infra.
Domain
42
Infra.
Domain
dependency
43
Infra.
Domain
dependency
44
Interface
Adapter
use
implement
45
Port
Adapter
46
Port
Adapter
Ports & Adapters architecture
47
Business
language

only
48
Left-side Right-side
49
Left-side Right-side
Adapter
Adapter
50
Left-side Right-side
Adapter
Adapter
Adapter
Adapter
A concrete
example
class PoetryReader {
}
Domain
52
class PoetryReader {
poetryLibrary: ObtainPoems;
constructor(poetryLibrary!?: ObtainPoems) {
this.poetryLibrary = poetryLibrary;
}
}
Domain
53
class PoetryReader {
poetryLibrary: ObtainPoems;
constructor(poetryLibrary!?: ObtainPoems) {
this.poetryLibrary = poetryLibrary;
}
}
Domain
54
Dependency
Injection
class PoetryReader {
poetryLibrary: ObtainPoems;
constructor(poetryLibrary!?: ObtainPoems) {
this.poetryLibrary = poetryLibrary;
}
giveMeSomePoetry(): Poem {
if (!this.poetryLibrary) {
return "If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return this.poetryLibrary.getAPoem();
}
}
Domain
55
class PoetryReader {
poetryLibrary: ObtainPoems;
constructor(poetryLibrary!?: ObtainPoems) {
this.poetryLibrary = poetryLibrary;
}
giveMeSomePoetry(): Poem {
if (!this.poetryLibrary) {
return "If you could read a leaf or treernyou’d have no need of books.
rn!-- © Alistair Cockburn (1987)";
}
return this.poetryLibrary.getAPoem();
}
}
Domain
56
giveMeSomePoetry(): Poem {
if (!this.poetryLibrary) {
return "If you could read a leaf or treernyou’d have
no need of books.rn!-- © Alistair Cockburn (1987)";
}
return this.poetryLibrary.getAPoem();
}
57
giveMeSomePoetry(): string {
let poem = FileReader.read("poem.txt");
if (!poem) {
poem =
"If you could read a leaf or treernyou’d have
no need of books.rn!-- © Alistair Cockburn (1987)";
}
return poem;
}
Implementation
Intention
Domain
type Poem = string;
interface ObtainPoems {
getAPoem(): Poem
}
58
import * as fs from "fs";
import * as path from "path";
import ObtainPoems from "!../domain/obtain-poems";
class ObtainPoemsFromFS implements ObtainPoems {
getAPoem() {
const pathToPoem = path.join(!__dirname, "poem.txt");
const poem = fs.readFileSync(pathToPoem, { encoding: "utf8" });
return poem;
}
}
Infra.
59
!// 1. Instantiate the right-side adapter(s)
!// 2. Instantiate the hexagon (domain)
!// 3. Instantiate the left-side adapter(s)
60
import ObtainPoemsFromFS from "./infrastructure/obtain-poems-from-fs";
!// 1. Instantiate the right-side adapter(s)
const poetryLibrary = new ObtainPoemsFromFS();
!// 2. Instantiate the hexagon (domain)
!// 3. Instantiate the left-side adapter(s)
61
import PoetryReader from "./domain/poetry-reader";
import ObtainPoemsFromFS from "./infrastructure/obtain-poems-from-fs";
!// 1. Instantiate the right-side adapter(s)
const poetryLibrary = new ObtainPoemsFromFS();
!// 2. Instantiate the hexagon (domain)
const poetryReader = new PoetryReader(poetryLibrary);
!// 3. Instantiate the left-side adapter(s)
62
import PoetryReader from "./domain/poetry-reader";
import ObtainPoemsFromFS from "./infrastructure/obtain-poems-from-fs";
import ConsoleApi from "./infrastructure/console-api";
!// 1. Instantiate the right-side adapter(s)
const poetryLibrary = new ObtainPoemsFromFS();
!// 2. Instantiate the hexagon (domain)
const poetryReader = new PoetryReader(poetryLibrary);
!// 3. Instantiate the left-side adapter(s)
const consoleApi = new ConsoleApi(poetryReader);
63
import PoetryReader from "./domain/poetry-reader";
import ObtainPoemsFromFS from "./infrastructure/obtain-poems-from-fs";
import ConsoleApi from "./infrastructure/console-api";
!// 1. Instantiate the right-side adapter(s)
const poetryLibrary = new ObtainPoemsFromFS();
!// 2. Instantiate the hexagon (domain)
const poetryReader = new PoetryReader(poetryLibrary);
!// 3. Instantiate the left-side adapter(s)
const consoleApi = new ConsoleApi(poetryReader);
!// App logic is only using left-side adapter(s).
console.log("Here is some poetry:n");
consoleApi.ask();
64
const poetryReader = new PoetryReader();
65
const poetryReader = new PoetryReader(poetryLibrary);
66
Pros and cons
This ain't new
68
"Program to an Interface" − OOP
"Isolate side effects" − FP
The Onion Architecture
Plug different adapters
to the Domain
69
A good architect
defers decisions
70
Start with
something simple
71
But… it's only
the first step!
72
73
More layers
74
Ubiquitous Language 

Bounded Contexts

Domain modelling
Separate Domain
& Infrastructure
75
🙏
Twitter 

GitHub 

Medium
}@nicoespeon
Nicolas Carlo
@swcraftmontreal
Software Crafters Montréal
Every 1st Tuesday of the month.
Bonuses
test("give verses when asked for poetry", () !=> {
const poetryReader = new PoetryReader();
const verses = poetryReader.giveMeSomePoetry();
expect(verses).toEqual(
"If you could read a leaf or treernyou’d have no
need of books.rn!-- © Alistair Cockburn (1987)"
);
});
Tests
test("give verses from a PoetryLibrary", () !=> {
const poetryLibrary: ObtainPoems = {
getAPoem() {
return "I want to sleep…rn!-- Masaoka Shiki (1867-1902)";
}
};
const poetryReader = new PoetryReader(poetryLibrary);
const verses = poetryReader.giveMeSomePoetry();
expect(verses).toEqual(
"I want to sleep…rn!-- Masaoka Shiki (1867-1902)"
);
});
Tests

More Related Content

What's hot

Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Steve Pember
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean ArchitectureRoc Boronat
 
Clean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipClean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipIvan Paulovich
 
Hexagonal Architecture.pdf
Hexagonal Architecture.pdfHexagonal Architecture.pdf
Hexagonal Architecture.pdfVladimirRadzivil
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017Carlos Buenosvinos
 
DDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichDDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichIvan Paulovich
 
Introduction to SOLID Principles
Introduction to SOLID PrinciplesIntroduction to SOLID Principles
Introduction to SOLID PrinciplesGanesh Samarthyam
 
Kata: Hexagonal Architecture / Ports and Adapters
Kata: Hexagonal Architecture / Ports and AdaptersKata: Hexagonal Architecture / Ports and Adapters
Kata: Hexagonal Architecture / Ports and Adaptersholsky
 
Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean ArchitectureMattia Battiston
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignYoung-Ho Cho
 
Clean architecture
Clean architectureClean architecture
Clean architectureLieven Doclo
 
1.1. Introducing OutSystems Apps.en-US.pdf
1.1. Introducing OutSystems Apps.en-US.pdf1.1. Introducing OutSystems Apps.en-US.pdf
1.1. Introducing OutSystems Apps.en-US.pdfChandrak43
 
Hexagonal architecture with Spring Boot
Hexagonal architecture with Spring BootHexagonal architecture with Spring Boot
Hexagonal architecture with Spring BootMikalai Alimenkou
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in phpLeonardo Proietti
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code SmellsMario Sangiorgio
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean ArchitectureBadoo
 

What's hot (20)

Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
Clean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipClean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software Craftsmanship
 
Hexagonal Architecture.pdf
Hexagonal Architecture.pdfHexagonal Architecture.pdf
Hexagonal Architecture.pdf
 
Hexagonal architecture in PHP
Hexagonal architecture in PHPHexagonal architecture in PHP
Hexagonal architecture in PHP
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
 
DDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichDDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan Paulovich
 
Introduction to SOLID Principles
Introduction to SOLID PrinciplesIntroduction to SOLID Principles
Introduction to SOLID Principles
 
Kata: Hexagonal Architecture / Ports and Adapters
Kata: Hexagonal Architecture / Ports and AdaptersKata: Hexagonal Architecture / Ports and Adapters
Kata: Hexagonal Architecture / Ports and Adapters
 
Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean Architecture
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Patterns for distributed systems
Patterns for distributed systemsPatterns for distributed systems
Patterns for distributed systems
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Solid principles
Solid principlesSolid principles
Solid principles
 
1.1. Introducing OutSystems Apps.en-US.pdf
1.1. Introducing OutSystems Apps.en-US.pdf1.1. Introducing OutSystems Apps.en-US.pdf
1.1. Introducing OutSystems Apps.en-US.pdf
 
Hexagonal architecture with Spring Boot
Hexagonal architecture with Spring BootHexagonal architecture with Spring Boot
Hexagonal architecture with Spring Boot
 
Clean code slide
Clean code slideClean code slide
Clean code slide
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in php
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code Smells
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 

Similar to The Secrets of Hexagonal Architecture

java question Fill the add statement areaProject is to wo.pdf
java question Fill the add statement areaProject is to wo.pdfjava question Fill the add statement areaProject is to wo.pdf
java question Fill the add statement areaProject is to wo.pdfdbrienmhompsonkath75
 
Rust Mozlando Tutorial
Rust Mozlando TutorialRust Mozlando Tutorial
Rust Mozlando Tutorialnikomatsakis
 
Integrating libSyntax into the compiler pipeline
Integrating libSyntax into the compiler pipelineIntegrating libSyntax into the compiler pipeline
Integrating libSyntax into the compiler pipelineYusuke Kita
 
Vapor – Swift is not only for iOS anymore
Vapor – Swift is not only for iOS anymoreVapor – Swift is not only for iOS anymore
Vapor – Swift is not only for iOS anymoreMilan Vít
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESMIgalia
 
Echtzeitapplikationen mit Elixir und GraphQL
Echtzeitapplikationen mit Elixir und GraphQLEchtzeitapplikationen mit Elixir und GraphQL
Echtzeitapplikationen mit Elixir und GraphQLMoritz Flucht
 

Similar to The Secrets of Hexagonal Architecture (7)

java question Fill the add statement areaProject is to wo.pdf
java question Fill the add statement areaProject is to wo.pdfjava question Fill the add statement areaProject is to wo.pdf
java question Fill the add statement areaProject is to wo.pdf
 
Rust Mozlando Tutorial
Rust Mozlando TutorialRust Mozlando Tutorial
Rust Mozlando Tutorial
 
Integrating libSyntax into the compiler pipeline
Integrating libSyntax into the compiler pipelineIntegrating libSyntax into the compiler pipeline
Integrating libSyntax into the compiler pipeline
 
Vapor – Swift is not only for iOS anymore
Vapor – Swift is not only for iOS anymoreVapor – Swift is not only for iOS anymore
Vapor – Swift is not only for iOS anymore
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESM
 
Echtzeitapplikationen mit Elixir und GraphQL
Echtzeitapplikationen mit Elixir und GraphQLEchtzeitapplikationen mit Elixir und GraphQL
Echtzeitapplikationen mit Elixir und GraphQL
 
Abstract factory
Abstract factoryAbstract factory
Abstract factory
 

More from Nicolas Carlo

Hexagonal architecture & Elixir
Hexagonal architecture & ElixirHexagonal architecture & Elixir
Hexagonal architecture & ElixirNicolas Carlo
 
À la découverte des Observables - HumanTalks Paris 2017
À la découverte des Observables - HumanTalks Paris 2017À la découverte des Observables - HumanTalks Paris 2017
À la découverte des Observables - HumanTalks Paris 2017Nicolas Carlo
 
À la découverte des observables
À la découverte des observablesÀ la découverte des observables
À la découverte des observablesNicolas Carlo
 
Testing Marionette.js Behaviors
Testing Marionette.js BehaviorsTesting Marionette.js Behaviors
Testing Marionette.js BehaviorsNicolas Carlo
 
Chaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreChaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreNicolas Carlo
 
Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienNicolas Carlo
 
Kanban et Game Development avec Trello
Kanban et Game Development avec TrelloKanban et Game Development avec Trello
Kanban et Game Development avec TrelloNicolas Carlo
 
Plop : un micro-générateur pour se simplifier la vie au quotidien
Plop : un micro-générateur pour se simplifier la vie au quotidienPlop : un micro-générateur pour se simplifier la vie au quotidien
Plop : un micro-générateur pour se simplifier la vie au quotidienNicolas Carlo
 
Tester ses Behaviors Marionette.js
Tester ses Behaviors Marionette.jsTester ses Behaviors Marionette.js
Tester ses Behaviors Marionette.jsNicolas Carlo
 
Chaining et composition de fonctions avec lodash / underscore
Chaining et composition de fonctions avec lodash / underscoreChaining et composition de fonctions avec lodash / underscore
Chaining et composition de fonctions avec lodash / underscoreNicolas Carlo
 
Comment organiser un gros projet backbone
Comment organiser un gros projet backboneComment organiser un gros projet backbone
Comment organiser un gros projet backboneNicolas Carlo
 

More from Nicolas Carlo (11)

Hexagonal architecture & Elixir
Hexagonal architecture & ElixirHexagonal architecture & Elixir
Hexagonal architecture & Elixir
 
À la découverte des Observables - HumanTalks Paris 2017
À la découverte des Observables - HumanTalks Paris 2017À la découverte des Observables - HumanTalks Paris 2017
À la découverte des Observables - HumanTalks Paris 2017
 
À la découverte des observables
À la découverte des observablesÀ la découverte des observables
À la découverte des observables
 
Testing Marionette.js Behaviors
Testing Marionette.js BehaviorsTesting Marionette.js Behaviors
Testing Marionette.js Behaviors
 
Chaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreChaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscore
 
Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidien
 
Kanban et Game Development avec Trello
Kanban et Game Development avec TrelloKanban et Game Development avec Trello
Kanban et Game Development avec Trello
 
Plop : un micro-générateur pour se simplifier la vie au quotidien
Plop : un micro-générateur pour se simplifier la vie au quotidienPlop : un micro-générateur pour se simplifier la vie au quotidien
Plop : un micro-générateur pour se simplifier la vie au quotidien
 
Tester ses Behaviors Marionette.js
Tester ses Behaviors Marionette.jsTester ses Behaviors Marionette.js
Tester ses Behaviors Marionette.js
 
Chaining et composition de fonctions avec lodash / underscore
Chaining et composition de fonctions avec lodash / underscoreChaining et composition de fonctions avec lodash / underscore
Chaining et composition de fonctions avec lodash / underscore
 
Comment organiser un gros projet backbone
Comment organiser un gros projet backboneComment organiser un gros projet backbone
Comment organiser un gros projet backbone
 

Recently uploaded

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 

Recently uploaded (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 

The Secrets of Hexagonal Architecture