WEBVTT

00:00.000 --> 00:12.000
Thank you very much, Wilson.

00:12.000 --> 00:16.000
Thank you very much, Wilson.

00:16.000 --> 00:19.000
You can hear me at the back of K.

00:19.000 --> 00:21.000
This kind of volume, I'm glad to...

00:21.000 --> 00:24.000
I'm just saying we should start every talk like that.

00:24.000 --> 00:26.000
Just launching sweets at people.

00:26.000 --> 00:27.000
That's awesome.

00:27.000 --> 00:28.000
I take that away.

00:28.000 --> 00:30.000
That's my takeaway from Boston.

00:30.000 --> 00:35.000
But yeah, documenting you event architectures with Open API and 18KPI.

00:35.000 --> 00:37.000
That's what we're going to be speaking about.

00:37.000 --> 00:40.000
Before we get started, it's just myself.

00:40.000 --> 00:41.000
My name is Dave Boone.

00:41.000 --> 00:45.000
I'm a core maintainer of Open Source Project called Event Cartelog, OK?

00:45.000 --> 00:48.000
So I left AWS this last year now.

00:48.000 --> 00:51.000
It's just focused on Open Source Free Software full-time.

00:51.000 --> 00:53.000
Now, of course, it doesn't pay the bills.

00:53.000 --> 00:56.000
So I did some kind of consultancy stuff on the side.

00:56.000 --> 01:01.000
Fun fact, I was at NDC a couple of days ago, and the speakers did it there during the talk.

01:01.000 --> 01:04.000
And the someone says to me, wow, is this a picture of you?

01:04.000 --> 01:09.000
And I looked and I said, go, this is what full-time open source does to you.

01:09.000 --> 01:12.000
I'm two kids.

01:12.000 --> 01:16.000
So yeah, previously, it was eight to two years.

01:16.000 --> 01:20.000
I was a developer, I became from an architectures.

01:20.000 --> 01:22.000
It's an architecture type that I love.

01:22.000 --> 01:24.000
I actually worked at 18 KPI.

01:24.000 --> 01:29.000
I were Lucas and fan over there for just under a year, doing some open source stuff, which is cool.

01:29.000 --> 01:33.000
And I realized that's almost almost coming up to 20 years,

01:33.000 --> 01:37.000
doing startups and enterprises, and oh my god, I can't believe that.

01:37.000 --> 01:39.000
But yeah, I left open source.

01:39.000 --> 01:42.000
I'm in the right company and the right thing.

01:42.000 --> 01:45.000
The right conference is actually my first time at Pholstum,

01:45.000 --> 01:49.000
so I come here yesterday, absolutely overwhelmed,

01:49.000 --> 01:51.000
just like turning up and being like, oh my god.

01:51.000 --> 01:55.000
There's absolutely awesome to be here talking to you all.

01:55.000 --> 01:59.000
As these three things we're going to cover today, 25 minutes,

01:59.000 --> 02:01.000
that's going to be quite cool run through.

02:01.000 --> 02:05.000
The device between open API and 18 KPI and whites there,

02:05.000 --> 02:09.000
can we use both of them together, better together?

02:09.000 --> 02:12.000
Can we also, like, how does event catalog fit into this?

02:12.000 --> 02:16.000
Why is it a thing and maybe something you can help with?

02:16.000 --> 02:21.000
So, and then at the end, I've got loads of resources and slides you can dive into.

02:21.000 --> 02:25.000
So, a few people don't know actually, I actually spent eight years,

02:25.000 --> 02:30.000
eight to nine years actually working with mere cats, but even though not.

02:30.000 --> 02:33.000
So is anyone work with mere cats before?

02:33.000 --> 02:35.000
Yeah, no one, okay.

02:35.000 --> 02:39.000
I felt like this is kind of how I feel about it, obviously.

02:39.000 --> 02:43.000
But unfortunately, it's not these type of mere cats.

02:43.000 --> 02:47.000
I actually used to work for a company in the UK, but this kind of mere cat,

02:47.000 --> 02:50.000
which is like an electronic weird mere cat.

02:50.000 --> 02:53.000
So as a company in the UK, I could compare the market.

02:53.000 --> 02:55.000
We sold a lot of insurance as to people.

02:55.000 --> 02:57.000
Quite a comparison website, right?

02:57.000 --> 02:59.000
I was there for eight years, I joined at the time.

02:59.000 --> 03:01.000
Thought works were consulting for two years,

03:01.000 --> 03:05.000
and I kind of felt I hit the jackpot there because they taught me a shit load

03:05.000 --> 03:08.000
about software engineering, which is really, really cool.

03:08.000 --> 03:11.000
At the time we were doing a lot of this legacy system,

03:11.000 --> 03:13.000
and a big moral of application.

03:13.000 --> 03:15.000
This was in 2013 and whatever it was.

03:15.000 --> 03:17.000
It was just the way we built applications, right?

03:17.000 --> 03:20.000
And it thought works, Martin found everyone coming bored,

03:20.000 --> 03:23.000
and they said, yes, we got to do guess what, micro services.

03:23.000 --> 03:25.000
Okay, so we're like, yes, you know,

03:25.000 --> 03:28.000
it's like CD driven development at this point in time.

03:28.000 --> 03:30.000
So we'll do some micro services,

03:30.000 --> 03:33.000
split this core into certain things and scale it.

03:33.000 --> 03:35.000
I just actually took a five-year project.

03:35.000 --> 03:37.000
I was there for the most of that.

03:37.000 --> 03:39.000
And there's an interesting project.

03:39.000 --> 03:42.000
And what it tends to look like is something like this.

03:42.000 --> 03:45.000
These split things up, that kind of makes sense.

03:45.000 --> 03:47.000
And we were doing that.

03:47.000 --> 03:50.000
I was mainly focused here on the right, which is the UI kind of elements.

03:50.000 --> 03:53.000
React was a thing, Angular 2 was a thing, back then.

03:53.000 --> 03:55.000
So I was mainly kind of focused over here,

03:55.000 --> 04:00.000
but working very much in hand-in-hand partnerships with people doing APIs,

04:00.000 --> 04:03.000
right, people building micro services.

04:03.000 --> 04:07.000
Now, the architecture type that tends to be the trend there,

04:07.000 --> 04:10.000
but still kind of is, I guess, in some ways,

04:10.000 --> 04:12.000
is this kind of synchronous communication.

04:12.000 --> 04:15.000
Okay, so we did a lot of synchronous communication,

04:15.000 --> 04:17.000
synchronous chaining in the architecture.

04:17.000 --> 04:20.000
So you'd have, like, the client sends a request to the server,

04:20.000 --> 04:23.000
the server goes to the next service and the other service.

04:23.000 --> 04:25.000
And, yeah, you get a response back.

04:25.000 --> 04:28.000
So please get me something here with a response back.

04:28.000 --> 04:31.000
And this is kind of what that kind of looks like, okay?

04:31.000 --> 04:34.000
And now you scale this over five years.

04:34.000 --> 04:37.000
Now there are questions that start to emerge from

04:37.000 --> 04:39.000
people in the organization, right?

04:39.000 --> 04:43.000
And these questions tend to be like these, right?

04:43.000 --> 04:47.000
So like, what APIs do we have in this organization?

04:47.000 --> 04:49.000
And if you guys are free for whatever,

04:49.000 --> 04:52.000
it's just building APIs because it's so easy to do that.

04:52.000 --> 04:54.000
How can I use them or version them?

04:54.000 --> 04:57.000
Was that versioning strategy looked like in our organization?

04:57.000 --> 05:00.000
And then, finally, who's even consuming these APIs?

05:00.000 --> 05:03.000
What about telemetry and all this kind of stuff, okay?

05:04.000 --> 05:07.000
Now, luckily for us, there is something that can help.

05:07.000 --> 05:09.000
Okay, this is back in 2011.

05:09.000 --> 05:11.000
Swagger come out, okay?

05:11.000 --> 05:13.000
Swagger open API specification.

05:13.000 --> 05:16.000
So hands up if you're using open API.

05:16.000 --> 05:18.000
Yeah, most people, okay?

05:18.000 --> 05:23.000
Open API is now generally a great standard for building APIs.

05:23.000 --> 05:26.000
Most people use open APIs to do this.

05:26.000 --> 05:29.000
And it works very well for us.

05:29.000 --> 05:34.000
So Lucas is going to kill me because now I'm showing Yama on a screen.

05:34.000 --> 05:36.000
Times up, okay?

05:36.000 --> 05:39.000
Yeah.

05:39.000 --> 05:41.000
But yeah, we have machine readable code.

05:41.000 --> 05:44.000
Yama all that we can look at represents something.

05:44.000 --> 05:47.000
When we have standards in these, this kind of sway,

05:47.000 --> 05:51.000
we can also build tools and visual representations of things.

05:51.000 --> 05:53.000
Everyone loves it, fantastic.

05:53.000 --> 05:54.000
This is great.

05:54.000 --> 05:57.000
So I'm going to extend where we kind of API first.

05:58.000 --> 06:01.000
People will come back into that in two seconds.

06:01.000 --> 06:03.000
What tends to happen is this.

06:03.000 --> 06:06.000
Yeah, so every organization, every team here is like, yes,

06:06.000 --> 06:09.000
we'll have an open API specification.

06:09.000 --> 06:10.000
Thumbs up, great.

06:10.000 --> 06:13.000
If you want to learn about our API,

06:13.000 --> 06:16.000
I will point you to the API specification.

06:16.000 --> 06:18.000
And everyone's like, yes, this is awesome.

06:18.000 --> 06:20.000
This is working wonders.

06:20.000 --> 06:25.000
To the point, right, that if you wanted to introduce an API,

06:25.000 --> 06:29.000
you cannot do it without a specification in an organization.

06:29.000 --> 06:33.000
And this is where we are today in most enterprises that you'll see out there.

06:33.000 --> 06:35.000
Okay, most enterprises will turn around.

06:35.000 --> 06:39.000
If you go to any large scale, say, no, you cannot introduce an API.

06:39.000 --> 06:42.000
Where is the business case? Where is the specification?

06:42.000 --> 06:48.000
So open API is very well established over the last 15 odd years.

06:48.000 --> 06:53.000
Now fast forward to where we are today.

06:53.000 --> 06:58.000
And yeah, API is so interesting.

06:58.000 --> 07:01.000
Okay, so this is Stripe Documentation Stripe.

07:01.000 --> 07:04.000
Had like, maybe some awesome docs.

07:04.000 --> 07:08.000
So that last 5 or 6 years, they tend to be the lead in this docs space.

07:08.000 --> 07:12.000
These docs tend to bind to some kind of API specification.

07:12.000 --> 07:15.000
We can actually use these docs and check out what's going on

07:15.000 --> 07:20.000
and make pull requests, get requests, post requests, and everything else like that.

07:21.000 --> 07:24.000
So there's maturity happening in this space.

07:24.000 --> 07:28.000
But there was a problem in another space, right, history,

07:28.000 --> 07:32.000
repeating itself in a venture of in architectures, right.

07:32.000 --> 07:37.000
That everyone I speak to when I was at AWS large enterprise large customers

07:37.000 --> 07:42.000
is that governance with event architectures is always an after for.

07:42.000 --> 07:46.000
Okay, and it's an interesting thing when you start to understand this

07:46.000 --> 07:52.000
and dive deeper into this topic, is that the adoption, why is that?

07:52.000 --> 07:56.000
It's because the adoption of an architecture is growing.

07:56.000 --> 08:01.000
Now, this is an interesting thing because the venture of an architectures isn't anything new.

08:01.000 --> 08:05.000
You can go back 25 odd years as an enterprise integration pattern book.

08:05.000 --> 08:09.000
Okay, if you go pass back before then, white papers about using messages

08:09.000 --> 08:13.000
in Linux and low-level kernels and all this stuff, messages aren't new.

08:13.000 --> 08:18.000
So why is it the rage and the in-thing or whatever that might look like?

08:18.000 --> 08:24.000
And realistically, just because a venture of an architectures is just more accessible to everyone.

08:24.000 --> 08:28.000
Okay, so like as sure, we have Google Cloud doing the Pub sub AWS,

08:28.000 --> 08:31.000
where I was at we had like SNS, SQS, Event Bridge,

08:31.000 --> 08:35.000
Confluent, massive people in the Kafka space.

08:35.000 --> 08:38.000
We've got solid and gravity doing API management.

08:38.000 --> 08:41.000
There's a lot of VC money and money being pumped into this.

08:42.000 --> 08:45.000
We've got Cloud Flair, by the way, just coming up from the ranks at the moment,

08:45.000 --> 08:49.000
absolutely in everyone's top food in this space, which is very interesting.

08:49.000 --> 08:54.000
Cloud Flair doing things like durable functions with ingest and restate in temporal

08:54.000 --> 08:56.000
which are startups in this space.

08:56.000 --> 09:00.000
Durable functions give us a nice patterns we can use with events.

09:00.000 --> 09:04.000
Actually, saying, here's my code, and I'm now going to do orchestration in the code.

09:04.000 --> 09:08.000
So when an event comes in, this bit is triggered a year later,

09:08.000 --> 09:12.000
this bit triggers is in the same durable execution in the same server,

09:12.000 --> 09:15.000
as function as an example, which was impossible before.

09:15.000 --> 09:19.000
So there are things happening there, there are things happening in the space.

09:19.000 --> 09:24.000
And the problem is we get like this as easy as much easier to publish a message

09:24.000 --> 09:27.000
onto a broker onto a channel onto a queue.

09:27.000 --> 09:31.000
Okay, you can get SDK installed today within two minutes into a cloud

09:31.000 --> 09:33.000
and you're publishing messages.

09:33.000 --> 09:36.000
This is great, this is awesome.

09:37.000 --> 09:41.000
So when we start building our architectures, this is kind of what it looks like.

09:41.000 --> 09:45.000
We have producers and we have messages and we have channels,

09:45.000 --> 09:48.000
this is queues and what kind of stuff and then we have consumers

09:48.000 --> 09:51.000
putting this information off.

09:51.000 --> 09:54.000
Now when you dive deeper into a message type, you know,

09:54.000 --> 09:57.000
there are things like commands and queries and events.

09:57.000 --> 10:00.000
So a command will be a representative intent.

10:00.000 --> 10:03.000
A command is, please do something, no, like,

10:03.000 --> 10:05.000
I cannot do that here as a response.

10:05.000 --> 10:08.000
Okay, so commands, you might have seen this in kind of rest APIs

10:08.000 --> 10:09.000
and things like that.

10:09.000 --> 10:12.000
Query is the same kind of thing, please get me something,

10:12.000 --> 10:15.000
here it is, an event is a multiple fact,

10:15.000 --> 10:17.000
something in your system has happened.

10:17.000 --> 10:19.000
So an example here is my dog.

10:19.000 --> 10:22.000
You can't really see it here, but my dog's tongue is kind of hanging out

10:22.000 --> 10:25.000
as my dog is weird, but my dog was saying,

10:25.000 --> 10:26.000
like, I want a toy.

10:26.000 --> 10:29.000
Like, I can take that command and reject it and say,

10:29.000 --> 10:31.000
no, you cannot have a toy or yes,

10:31.000 --> 10:34.000
you can eat another toy that I have to purchase.

10:34.000 --> 10:36.000
So what toys are available,

10:36.000 --> 10:39.000
so I start to look in these kind of queries, okay?

10:39.000 --> 10:44.000
So in your architecture, you have these types of messages.

10:44.000 --> 10:47.000
Now what tends to happen is developers and architect

10:47.000 --> 10:49.000
as we build a venture of architectures,

10:49.000 --> 10:51.000
as we go to whiteboards and we draw boxes

10:51.000 --> 10:53.000
because we're loosely coupled, right?

10:53.000 --> 10:55.000
So we start doing this fantastic.

10:55.000 --> 10:57.000
And as someone pears into the room and says,

10:57.000 --> 10:59.000
I like this, this is really cool.

10:59.000 --> 11:01.000
I'm going to add some cues and other channels.

11:01.000 --> 11:03.000
Now we're kind of reliable,

11:03.000 --> 11:05.000
and this thing's looking fantastic.

11:05.000 --> 11:07.000
And then the other thing comes along,

11:07.000 --> 11:08.000
says, we want a piece of this.

11:08.000 --> 11:10.000
We want to continue this.

11:10.000 --> 11:11.000
And we're all like, yes,

11:11.000 --> 11:14.000
we've got loosely coupled distributed system here.

11:14.000 --> 11:16.000
And we look at it and we go build it,

11:16.000 --> 11:17.000
and it's great.

11:17.000 --> 11:21.000
And what happens is, with event architectures as this,

11:21.000 --> 11:23.000
as you get that value over time,

11:23.000 --> 11:24.000
okay?

11:24.000 --> 11:27.000
We have this perception of value that we have this bump in value.

11:27.000 --> 11:29.000
I've just produced my first message.

11:29.000 --> 11:31.000
I've got my first consumer.

11:31.000 --> 11:32.000
Awesome.

11:32.000 --> 11:33.000
Look how cool this is.

11:33.000 --> 11:34.000
Let's keep going.

11:34.000 --> 11:36.000
And that value kind of goes up.

11:36.000 --> 11:38.000
You know, we've got producers and consumers

11:38.000 --> 11:42.000
were adding things and more producers and consumers.

11:42.000 --> 11:44.000
Now at this point,

11:44.000 --> 11:48.000
something interesting happens in this journey that you go on,

11:48.000 --> 11:52.000
is that the value tends to plateau somewhere in the middle.

11:52.000 --> 11:54.000
Now why is that?

11:54.000 --> 11:57.000
Because there's the complexity on to it.

11:57.000 --> 11:59.000
And what you'll see in most people,

11:59.000 --> 12:01.000
most of the times is this.

12:01.000 --> 12:03.000
Is that complexity at some point,

12:03.000 --> 12:04.000
at some scale,

12:04.000 --> 12:09.000
just rapidly goes up with a distributed kind of big ball of mud.

12:09.000 --> 12:10.000
Why is that?

12:10.000 --> 12:12.000
Because assumptions are made as like a standards,

12:12.000 --> 12:15.000
like a governance, lack of documentation.

12:15.000 --> 12:16.000
Okay?

12:16.000 --> 12:17.000
I want you to talk.

12:17.000 --> 12:20.000
I've got this at the end.

12:20.000 --> 12:22.000
But I want you to talk in January,

12:22.000 --> 12:24.000
which is fantastic talk about software complexity,

12:24.000 --> 12:26.000
by Peter Van Hardenberg.

12:26.000 --> 12:28.000
And he says like complexity is not linked to size,

12:28.000 --> 12:31.000
but when we start to interact with things.

12:31.000 --> 12:35.000
And this is the essence of complexity when it comes to event architectures.

12:35.000 --> 12:38.000
It's because we design something like this

12:38.000 --> 12:40.000
and whiteboards in our teams.

12:40.000 --> 12:41.000
That is loosely coupled.

12:41.000 --> 12:42.000
But when we implement it,

12:42.000 --> 12:44.000
it is a completely different story.

12:44.000 --> 12:46.000
And there are things that happen.

12:46.000 --> 12:49.000
There are big balls of mud that you will come across.

12:49.000 --> 12:50.000
It's not if it's when.

12:50.000 --> 12:53.000
I cannot state the amount of people and conversations I have

12:53.000 --> 12:57.000
in the open source community that experience the same problems.

12:57.000 --> 13:00.000
These problems, some of these problems,

13:00.000 --> 13:03.000
lack of standards, assumptions,

13:03.000 --> 13:07.000
ownership, documentation, governance.

13:07.000 --> 13:09.000
So guess what?

13:09.000 --> 13:11.000
There are questions that start to emerge

13:11.000 --> 13:13.000
when you start building event architectures.

13:13.000 --> 13:15.000
These questions are,

13:15.000 --> 13:17.000
well, what events do we have?

13:18.000 --> 13:20.000
Well, okay, so what's the answer to that today?

13:20.000 --> 13:22.000
Here's a GitHub repo.

13:22.000 --> 13:23.000
Go look.

13:23.000 --> 13:25.000
Okay.

13:25.000 --> 13:27.000
What are the payloads of the events?

13:27.000 --> 13:30.000
I told you, here's a GitHub repo.

13:30.000 --> 13:32.000
Go look, right?

13:32.000 --> 13:35.000
So you say, okay, I'm going to make a change in a poor place.

13:35.000 --> 13:39.000
I'm going to add something or change something in a schema.

13:39.000 --> 13:41.000
By the way, who am I about to break?

13:41.000 --> 13:43.000
Well, we don't know.

13:43.000 --> 13:46.000
The reason we don't know is because

13:47.000 --> 13:50.000
we are told as we build a venture of

13:50.000 --> 13:53.000
an architectures that producers do not know about consumers.

13:53.000 --> 13:56.000
This is a whole point where building distributed systems

13:56.000 --> 13:58.000
and we're building as wonderful things.

13:58.000 --> 14:01.000
That producers don't know about consumers,

14:01.000 --> 14:03.000
which is an interesting thing.

14:03.000 --> 14:06.000
And this causes chaos in my opinion.

14:06.000 --> 14:09.000
So on the right, on the left,

14:09.000 --> 14:12.000
we have open API, one to one.

14:12.000 --> 14:14.000
It's quite simple things to think about

14:14.000 --> 14:16.000
what kind of response world.

14:16.000 --> 14:18.000
On the other hand, we have one to end.

14:18.000 --> 14:20.000
Think of a spiderweb now.

14:20.000 --> 14:22.000
Producers are coming and they're going,

14:22.000 --> 14:24.000
how can we manage all of this?

14:24.000 --> 14:26.000
Now, luckily for us,

14:26.000 --> 14:28.000
there are specifications and those are

14:28.000 --> 14:30.000
standards up that that can help.

14:30.000 --> 14:33.000
And this is ACENCAPI.

14:33.000 --> 14:35.000
And so for those who are here earlier,

14:35.000 --> 14:37.000
Luke has done a talk on ACENCAPI.

14:37.000 --> 14:39.000
But for those who do not know what it is

14:39.000 --> 14:41.000
and just recently joined us again,

14:41.000 --> 14:43.000
some YAML,

14:43.000 --> 14:45.000
because I don't show YAML.

14:45.000 --> 14:46.000
That's really bad actually,

14:46.000 --> 14:47.000
it's black.

14:47.000 --> 14:48.000
Yeah, you can't read that.

14:48.000 --> 14:49.000
But anyway,

14:49.000 --> 14:50.000
ACENCAPI,

14:50.000 --> 14:52.000
I just took this from the web, you know.

14:52.000 --> 14:53.000
It's a specification allows you

14:53.000 --> 14:55.000
to document channels messages,

14:55.000 --> 14:56.000
different bindings,

14:56.000 --> 14:57.000
protocol agnostic.

14:57.000 --> 14:59.000
You can actually have an ACENCAPI specification

14:59.000 --> 15:01.000
in your project from now

15:01.000 --> 15:04.000
from now so you can actually go into a service

15:04.000 --> 15:06.000
and see what messages are sent,

15:06.000 --> 15:07.000
what messages are received,

15:07.000 --> 15:09.000
and how that all works.

15:09.000 --> 15:11.000
And so no longer just going through the code

15:11.000 --> 15:13.000
and working all this out.

15:13.000 --> 15:16.000
Why I recommend ACENCAPI personally,

15:16.000 --> 15:18.000
because as standardization,

15:18.000 --> 15:20.000
standardizations allow us to have

15:20.000 --> 15:22.000
machine readable things,

15:22.000 --> 15:23.000
machine readable things that allow us to build

15:23.000 --> 15:26.000
developer tools and ecosystem around this.

15:26.000 --> 15:27.000
As I mentioned,

15:27.000 --> 15:29.000
there is protocol agnostic.

15:29.000 --> 15:30.000
So you can use anything you want,

15:30.000 --> 15:32.000
SNS, SQS, Kafka,

15:32.000 --> 15:34.000
RubberMQ, MQTT,

15:34.000 --> 15:35.000
it doesn't matter.

15:35.000 --> 15:37.000
So it goes with what you're working.

15:37.000 --> 15:39.000
There's tooling, it brings discoverability,

15:39.000 --> 15:42.000
and documentation to schemas.

15:42.000 --> 15:44.000
So again, like OpenAPI,

15:44.000 --> 15:47.000
we can do stuff and render it into

15:47.000 --> 15:50.000
some nice views and visualizations and representations,

15:50.000 --> 15:52.000
and most people like to read something like this.

15:52.000 --> 15:54.000
Some like to read like that,

15:54.000 --> 15:57.000
but we can get both of the same.

15:57.000 --> 15:58.000
So the question is,

15:58.000 --> 16:00.000
when you're building event architectures,

16:00.000 --> 16:01.000
which one do you use?

16:01.000 --> 16:04.000
Do you use OpenAPI or ACENCAPI?

16:05.000 --> 16:07.000
And it's not really a question of,

16:07.000 --> 16:08.000
which one should I use?

16:08.000 --> 16:09.000
The question is, well,

16:09.000 --> 16:11.000
what is your architecture under the hood

16:11.000 --> 16:12.000
and what kind of messaging

16:12.000 --> 16:14.000
palins are you using?

16:14.000 --> 16:16.000
So I said earlier,

16:16.000 --> 16:18.000
most of the palins that I was previously doing

16:18.000 --> 16:19.000
years ago,

16:19.000 --> 16:21.000
was more synchronous kind of requests,

16:21.000 --> 16:23.000
whereas we have this synchronous chain going

16:23.000 --> 16:25.000
on and on and coming back.

16:25.000 --> 16:27.000
And something like you might see some commands

16:27.000 --> 16:29.000
and queries over here.

16:29.000 --> 16:30.000
But in other cases,

16:30.000 --> 16:32.000
you'll see ACENCAPI,

16:32.000 --> 16:33.000
like,

16:33.000 --> 16:34.000
if I order a pizza,

16:34.000 --> 16:35.000
I'm not going to wait around

16:35.000 --> 16:36.000
and wait until I get a response,

16:36.000 --> 16:37.000
things happen,

16:37.000 --> 16:38.000
and when I order things off,

16:38.000 --> 16:39.000
Amazon,

16:39.000 --> 16:40.000
things are happening.

16:40.000 --> 16:42.000
So what tends to happen nowadays,

16:42.000 --> 16:43.000
again,

16:43.000 --> 16:44.000
with companies I'm working with,

16:44.000 --> 16:45.000
in the open source,

16:45.000 --> 16:46.000
things,

16:46.000 --> 16:47.000
and speaking to a lot of people,

16:47.000 --> 16:49.000
is people have a mixture of both.

16:49.000 --> 16:50.000
Okay?

16:50.000 --> 16:51.000
So here's an open API,

16:51.000 --> 16:52.000
specification,

16:52.000 --> 16:53.000
we have a rest API

16:53.000 --> 16:54.000
to do whatever else.

16:54.000 --> 16:55.000
Here's a message based,

16:55.000 --> 16:56.000
kind of application,

16:56.000 --> 17:00.000
and some people have both within their application.

17:01.000 --> 17:02.000
But I think there is,

17:02.000 --> 17:03.000
like,

17:03.000 --> 17:04.000
it's taken another step further.

17:04.000 --> 17:05.000
I think there are problems with

17:05.000 --> 17:07.000
specifications,

17:07.000 --> 17:08.000
okay?

17:08.000 --> 17:09.000
So on the left,

17:09.000 --> 17:10.000
we have standards,

17:10.000 --> 17:11.000
tooling,

17:11.000 --> 17:12.000
schemas,

17:12.000 --> 17:13.000
implementation details,

17:13.000 --> 17:15.000
which is fantastic.

17:15.000 --> 17:16.000
But on the left,

17:16.000 --> 17:19.000
I think we're still missing a whole lot of pieces,

17:19.000 --> 17:20.000
okay?

17:20.000 --> 17:21.000
And I do a lot of,

17:21.000 --> 17:23.000
like, a work with a demand of design,

17:23.000 --> 17:24.000
people are there in,

17:24.000 --> 17:25.000
dive into demand of design.

17:25.000 --> 17:26.000
But I think there is,

17:26.000 --> 17:27.000
a lot missing,

17:27.000 --> 17:28.000
things like semantic meaning,

17:28.000 --> 17:31.000
there's a schema of an order that has been placed.

17:31.000 --> 17:34.000
What does this mean in our organization?

17:34.000 --> 17:35.000
Why have the fields changed?

17:35.000 --> 17:36.000
What about versioning,

17:36.000 --> 17:37.000
and lack of ownership?

17:37.000 --> 17:38.000
Who owns these things?

17:38.000 --> 17:39.000
Okay?

17:39.000 --> 17:41.000
And lots of value on different,

17:41.000 --> 17:42.000
like kind of personas,

17:42.000 --> 17:44.000
understanding these schemas.

17:44.000 --> 17:45.000
It's completely different from,

17:45.000 --> 17:46.000
like a business analyst,

17:46.000 --> 17:48.000
or a product owner looking at events,

17:48.000 --> 17:50.000
versus something else.

17:50.000 --> 17:53.000
So what can we do?

17:53.000 --> 17:56.000
And this is kind of where I focus a lot of my time,

17:56.000 --> 17:57.000
and energy at the moment.

17:57.000 --> 17:58.000
There's a free,

17:58.000 --> 18:01.000
an open source tool called Event Catalog.

18:01.000 --> 18:02.000
Okay?

18:02.000 --> 18:04.000
So is anyone heard of this?

18:04.000 --> 18:05.000
Just curious?

18:05.000 --> 18:08.000
So a few people,

18:08.000 --> 18:10.000
which is really cool.

18:10.000 --> 18:11.000
So this is,

18:11.000 --> 18:12.000
not funded,

18:12.000 --> 18:13.000
it's MIT open source,

18:13.000 --> 18:15.000
this is what I do for the laws

18:15.000 --> 18:17.000
and for life at the moment.

18:17.000 --> 18:19.000
But how it works,

18:19.000 --> 18:20.000
right?

18:20.000 --> 18:21.000
So we create an Event Catalog.

18:21.000 --> 18:23.000
I'm a super geek when it comes to documentation.

18:23.000 --> 18:24.000
I just love it.

18:24.000 --> 18:25.000
I love docs as code,

18:25.000 --> 18:26.000
and all this kind of stuff.

18:26.000 --> 18:27.000
And the value it can add.

18:27.000 --> 18:28.000
We can add Mark down.

18:28.000 --> 18:30.000
We can add somatic meanings,

18:30.000 --> 18:31.000
NDX components.

18:31.000 --> 18:34.000
We can create beautiful visual representations

18:34.000 --> 18:36.000
of information in your architecture.

18:36.000 --> 18:40.000
And then we can use Git as a source of truth

18:40.000 --> 18:42.000
and create pull requests,

18:42.000 --> 18:44.000
whatever else to change this and deploy it.

18:44.000 --> 18:45.000
So what does this look like?

18:45.000 --> 18:48.000
What do you get out of the box is something like this?

18:48.000 --> 18:51.000
So now teams can actually start to understand

18:51.000 --> 18:52.000
what services we have,

18:52.000 --> 18:53.000
what events do we have,

18:53.000 --> 18:54.000
what are the schemas,

18:54.000 --> 18:55.000
what are the brokers,

18:55.000 --> 18:56.000
what are the versioning.

18:56.000 --> 18:58.000
Actually apply some of these to the domains.

18:58.000 --> 18:59.000
But you know,

18:59.000 --> 19:02.000
we actually start to use some of the components

19:02.000 --> 19:04.000
and DX components and start to build

19:04.000 --> 19:06.000
a representation of our architecture

19:06.000 --> 19:09.000
that people all can hopefully understand.

19:09.000 --> 19:12.000
So facing KPI and Open API

19:12.000 --> 19:14.000
can actually use these,

19:14.000 --> 19:16.000
to actually feel event catalog.

19:16.000 --> 19:17.000
And actually feel documentation

19:17.000 --> 19:19.000
and reasoning for your organizations.

19:19.000 --> 19:20.000
Download schemas,

19:20.000 --> 19:21.000
view things,

19:21.000 --> 19:24.000
actually when you're versioning your schemas,

19:24.000 --> 19:26.000
we can actually do something interesting here.

19:26.000 --> 19:28.000
Versioning is an interesting thing

19:28.000 --> 19:32.000
because why has this name been added to the schema

19:32.000 --> 19:33.000
to the payload,

19:33.000 --> 19:35.000
to the event, to the API?

19:35.000 --> 19:36.000
Where has it come from?

19:36.000 --> 19:37.000
Why is it like that?

19:37.000 --> 19:39.000
The people that make these changes

19:39.000 --> 19:40.000
are probably long gone.

19:40.000 --> 19:41.000
Okay?

19:41.000 --> 19:42.000
New people are coming on board.

19:42.000 --> 19:44.000
Why does this thing look like that?

19:44.000 --> 19:46.000
All this history is lost.

19:46.000 --> 19:48.000
So what happens if we can just add

19:48.000 --> 19:50.000
some kind of change log to this stuff?

19:50.000 --> 19:52.000
Or to make change logs in this area?

19:52.000 --> 19:53.000
And this is again,

19:53.000 --> 19:56.000
what event catalog can do?

19:56.000 --> 19:58.000
By the very visual person,

19:58.000 --> 19:59.000
I like visualizing things,

19:59.000 --> 20:01.000
but why can't we just have visual representations

20:01.000 --> 20:03.000
of schemas,

20:03.000 --> 20:05.000
of data, of queries, and commands,

20:05.000 --> 20:07.000
and events, and channels?

20:07.000 --> 20:08.000
And we can, you know,

20:08.000 --> 20:10.000
here is a service in the middle

20:10.000 --> 20:11.000
and on the left and right,

20:11.000 --> 20:13.000
we have queries and events

20:13.000 --> 20:15.000
that are being pushed into this service.

20:15.000 --> 20:17.000
So this is what this service accepts.

20:17.000 --> 20:19.000
On the right, we use in Kafka

20:19.000 --> 20:21.000
to represent something else.

20:21.000 --> 20:23.000
We can use standards

20:23.000 --> 20:24.000
and specifications

20:24.000 --> 20:26.000
to build these visualizations in these tools.

20:26.000 --> 20:28.000
So you can take your 18KPI document

20:28.000 --> 20:29.000
and actually visualize

20:29.000 --> 20:32.000
some of this help to help other visual learners

20:32.000 --> 20:34.000
die deeper.

20:34.000 --> 20:36.000
And again, as I said,

20:36.000 --> 20:38.000
many teams and many people

20:38.000 --> 20:39.000
are like mixing matching things.

20:39.000 --> 20:41.000
So why can't your teams just have their own

20:41.000 --> 20:43.000
event catalog, as an example,

20:43.000 --> 20:44.000
or their own spectrum,

20:44.000 --> 20:46.000
just feel the documentation?

20:46.000 --> 20:48.000
And I think there's huge value in documentation.

20:48.000 --> 20:50.000
I created this project three years ago

20:50.000 --> 20:52.000
when I was working at 18KPI

20:52.000 --> 20:53.000
as a side project, okay?

20:53.000 --> 20:55.000
And then I joined AWS.

20:55.000 --> 20:56.000
I was there for a couple of years.

20:56.000 --> 20:59.000
And this project is just slowly getting traction

20:59.000 --> 21:00.000
because people are out there

21:00.000 --> 21:02.000
in this like, a vendor and shitshow.

21:02.000 --> 21:04.000
And it's like, how can we get value

21:04.000 --> 21:05.000
out of what we already have?

21:05.000 --> 21:08.000
People are leaning into these open source projects

21:08.000 --> 21:09.000
to help them.

21:09.000 --> 21:11.000
So with that, you know,

21:11.000 --> 21:14.000
I'm just one dude with an idea.

21:15.000 --> 21:17.000
And as I said, it's not funding.

21:17.000 --> 21:18.000
I'll just do this because I enjoy it.

21:18.000 --> 21:20.000
If you're interested in any of that,

21:20.000 --> 21:22.000
you know, I recommend come check us out.

21:22.000 --> 21:24.000
We've got like almost 1,000 people on Discord now.

21:24.000 --> 21:28.000
20,000 people create catalogs in that 60 contributors.

21:28.000 --> 21:30.000
If you're interested in helping out in that space

21:30.000 --> 21:33.000
or you're a geek like me in documentation

21:33.000 --> 21:35.000
and things like that,

21:35.000 --> 21:38.000
I recommend just come check out the project.

21:38.000 --> 21:41.000
Because, you know, taking a step back,

21:41.000 --> 21:43.000
the only reason I can do this

21:43.000 --> 21:45.000
and invest a lot of time in this

21:45.000 --> 21:47.000
because what is the alternative?

21:47.000 --> 21:49.000
The alternative literally is this.

21:49.000 --> 21:52.000
I haven't seen anyone else kind of avoid

21:52.000 --> 21:55.000
this complexity that comes with event architectures.

21:55.000 --> 21:57.000
The only thing we can really do is manage it

21:57.000 --> 21:58.000
and push it down.

21:58.000 --> 22:00.000
And we can do that with open API

22:00.000 --> 22:02.000
and A-Sync API.

22:02.000 --> 22:04.000
And I believe we can't have standards in tooling.

22:04.000 --> 22:07.000
And this is where I'm at with event catalog

22:07.000 --> 22:09.000
and hopefully event catalog might be able to help you

22:09.000 --> 22:11.000
in some of that.

22:11.000 --> 22:15.000
So to summarize everything I spoke about here,

22:15.000 --> 22:18.000
I said at the start, you know,

22:18.000 --> 22:21.000
the open API specification is a standard now.

22:21.000 --> 22:23.000
You'll go out there in many enterprises

22:23.000 --> 22:25.000
and organizations and many people are using this

22:25.000 --> 22:26.000
to build stuff.

22:26.000 --> 22:29.000
Events of an architectures is completely different.

22:29.000 --> 22:30.000
We draw systems like this.

22:30.000 --> 22:32.000
We decoupled real resilient or whatever else.

22:32.000 --> 22:34.000
There will be a point in time.

22:34.000 --> 22:36.000
That complexity will come in

22:36.000 --> 22:38.000
and you've ended up in some big fall of mud.

22:38.000 --> 22:39.000
All right?

22:39.000 --> 22:41.000
Because it's not really a one-to-one mapping

22:41.000 --> 22:42.000
between rest APIs.

22:42.000 --> 22:45.000
It's like this spider web that we're trying to control.

22:45.000 --> 22:47.000
So how can we control it?

22:47.000 --> 22:49.000
I highly recommend if you haven't already,

22:49.000 --> 22:51.000
check out A-Sync API.

22:51.000 --> 22:53.000
It's a fantastic specification,

22:53.000 --> 22:55.000
fantastic community behind it.

22:55.000 --> 22:57.000
So I recommend just diving deeper.

22:57.000 --> 23:01.000
If you want to go further and look at other specifications

23:01.000 --> 23:03.000
out there, there are things happening.

23:03.000 --> 23:06.000
Cloud events, specifications is a fantastic one

23:06.000 --> 23:09.000
that mainly driven by folks at Microsoft.

23:09.000 --> 23:13.000
Cloud events is like here is an envelope

23:13.000 --> 23:15.000
and here is a message inside the envelope.

23:15.000 --> 23:17.000
Now the envelope is standard for everyone.

23:17.000 --> 23:20.000
Okay, why create envelopes all the time.

23:20.000 --> 23:22.000
So I would recommend looking back

23:22.000 --> 23:23.000
if you're using event architectures.

23:23.000 --> 23:25.000
There's a lot of those specifications,

23:25.000 --> 23:27.000
which is fantastic all about workflows and things

23:27.000 --> 23:28.000
like this.

23:28.000 --> 23:30.000
And then we've got X registry down there,

23:30.000 --> 23:31.000
which again is more around

23:31.000 --> 23:33.000
discoverability of your event architectures.

23:33.000 --> 23:35.000
Again driven by Microsoft folks.

23:36.000 --> 23:37.000
So there are things happening,

23:37.000 --> 23:39.000
and it's really cool space to be in.

23:39.000 --> 23:41.000
Personally, I feel like we could do more

23:41.000 --> 23:43.000
than just specifications for our organizations.

23:43.000 --> 23:46.000
I think we can actually have business value there.

23:46.000 --> 23:48.000
There's a lot of like stuff we can take

23:48.000 --> 23:51.000
from domain different design and actually combine the two.

23:51.000 --> 23:53.000
And that's it.

23:53.000 --> 23:54.000
That's what I do.

23:54.000 --> 23:56.000
I'm trying to do with event cataloging

23:56.000 --> 23:58.000
if you're interested, come hang out.

23:58.000 --> 24:00.000
Last year I created a book.

24:00.000 --> 24:01.000
This is free.

24:01.000 --> 24:02.000
I've been saws thing.

24:02.000 --> 24:03.000
I've done loads of whatever.

24:03.000 --> 24:05.000
There's 120 pages on everything.

24:05.000 --> 24:06.000
Event driven architectures.

24:06.000 --> 24:08.000
You can just go and help yourself.

24:08.000 --> 24:10.000
And then here at the end,

24:10.000 --> 24:11.000
everything I spoke about.

24:11.000 --> 24:14.000
This is resources from another talk

24:14.000 --> 24:16.000
but everything is pretty much in there.

24:16.000 --> 24:18.000
So if you want to dive deeper in your own time

24:18.000 --> 24:20.000
or free, you can hang out with me on X.

24:20.000 --> 24:22.000
I'm not sure who uses X anymore.

24:22.000 --> 24:23.000
So I'm an OG.

24:23.000 --> 24:25.000
OG handle here on blue sky.

24:25.000 --> 24:27.000
I haven't changed that yet.

24:27.000 --> 24:28.000
And then LinkedIn or whatever.

24:28.000 --> 24:29.000
And I'm here for the rest of the days

24:29.000 --> 24:31.000
if you're seeing me walking around

24:31.000 --> 24:32.000
that awesome.

24:32.000 --> 24:34.000
And I hope there's some value in that for you today.

24:34.000 --> 24:35.000
So thanks for spending your time with me.

