Loosely Coupled - Adopting Event-Driven Architecture

Show full transcript

Karol:

Hello, hello, good evening, good afternoon, good morning, or well, maybe good night for some people watching in India, if anybody is in India.

Karol:

Welcome to loosely coupled, our first live stream from bridging the gap.

Karol:

I'm your host, I'm the co-founder of bridging the gap, an open source project aiming at educating about enterprise application integration.

Karol:

With this stream, I want to bring some interesting topics loosely coupled with the field of application integration, and very loosely coupled with technical topics.

Karol:

Now I made a mistake of having too many windows open, so I'm actually hearing myself all over the place.

Karol:

All right.

Karol:

A little bit of housekeeping.

Karol:

We're live on YouTube.

Karol:

We're live on LinkedIn.

Karol:

Please keep the comments and questions and everything coming.

Karol:

If something will be relevant for the topic, we'll be showing that on stream and asking that directly.

Karol:

If not, we will still have some time at the end for a Q&A.

Karol:

And with that, let me welcome our first guest to this lovely live stream.

Karol:

First edition, Fran Mendes.

Karol:

Hello, Fran.

Karol:

Hello.

Karol:

Well, how is your evening so far in Spain?

Fran:

Packed and hot.

Fran:

As you can imagine, I'm in the south, I'm in Balakot next to Portugal.

Fran:

And, you know, we have a saying here that 35 degrees Celsius is getting cold, you know.

Fran:

So, yeah, it's not getting cold.

Karol:

It's quite toasty in the Netherlands as well.

Karol:

The morning was cloudy and a little bit chilly, but the afternoon is quite, quite, quite warm.

Karol:

So, very nice indeed.

Karol:

All right.

Karol:

We're having a lovely topic today related to enterprise application integration and software architecture as it is.

Karol:

We're talking about event-driven architecture.

Karol:

And who better to talk about event-driven architecture than the creator of Async API himself?

Karol:

So, Fran, tell us a little bit first about Async API and your context and your background here.

Karol:

So, for the people who don't know you, who only heard about Async API from, let's say, when they used MuleSoft or Solace or any other technology, so they have the proper context of who you are and what the hell is Async API and why did you even create that?

Fran:

Oh, that's a lot.

Karol:

Yeah.

Fran:

I can own the whole live stream just with that.

Karol:

Let's keep that part brief.

Fran:

So, yeah, my name is Fran Mendez.

Fran:

I live in Spain, as I mentioned.

Fran:

I don't even know how to categorise myself.

Fran:

Like, I've been a director of engineering in my last position, but before I was a manager, but before I was an architect, but before I was a CTO.

Fran:

So, I've been, like, jumping from role to role.

Fran:

And I keep saying that I'm just an engineer, and I do whatever it's needed to do, and I'm always adapting to whatever it's needed in each situation.

Fran:

So, I don't like to label myself as one thing, for the good, for the bad.

Fran:

And, yeah, so, I created Async API, as Karol mentioned.

Fran:

So, this was almost nine years ago.

Fran:

And the reason I created Async API, it was just for me.

Fran:

It might sound egocentric looking back or explaining it like this.

Fran:

But the reality is that I wasn't expecting this kind of success.

Fran:

I was just building it for me for two reasons.

Fran:

One of them is I wanted to learn OpenAPI well.

Fran:

So, I had to create Async API.

Fran:

I had to go from top to bottom of OpenAPI specification and read it and change whatever didn't make sense to me.

Fran:

Didn't make sense for my use case.

Fran:

And what was my use case?

Fran:

That's the second reason.

Fran:

My use case was I was using RabbitMQ to coordinate some microservices and, you know, and communicate between them and so on.

Fran:

I was building an event-driven architecture.

Fran:

And there was nothing like OpenAPI for that.

Fran:

So, I decided to go ahead and modify OpenAPI.

Fran:

In the beginning, it was mostly me.

Fran:

Like, okay, maybe when it says get, the documentation generator can say subscribe.

Fran:

And when it says post or something else, it can say publish.

Fran:

And that might do the trick.

Fran:

Well, for documentation, it kind of did the trick.

Fran:

For code generation, not so much.

Fran:

It felt a lot like a hack.

Fran:

It was a hack.

Fran:

So, yeah.

Fran:

And then that's when I realised I had to go through the whole thing and change it.

Fran:

And it was all done in open source because that's always my default.

Fran:

So, I was not...

Fran:

I already had, like, a bunch of other open source projects, but they never took off.

Fran:

And this one started taking off because, you know, I started talking about it in conferences.

Fran:

And I saw some interest from people and so on.

Fran:

And it started to show some traction, let's say.

Fran:

So, I created Slack and so on.

Fran:

And started inviting people there.

Fran:

In the beginning, it was me mainly talking to the wall, as we say in Spanish.

Fran:

So, I was just like, hey, so today I did this.

Fran:

And today I added that.

Fran:

And the funny thing is that the other people on the Slack was the people from my own company, from the company I was working on.

Fran:

And they already knew that.

Fran:

And they were like, hey, we don't care, friend.

Fran:

We already know.

Fran:

So, they were not interacting with me.

Fran:

And that was funny and desparating at the same time.

Fran:

But eventually people start getting in and asking and so on.

Fran:

So, yeah.

Fran:

So, that was...

Fran:

And here we are.

Karol:

Here we are.

Karol:

And now I had a look through the async API Slack.

Karol:

Wow, that's a busy place.

Karol:

I get so many messages.

Karol:

There are so many pull requests going through the channel.

Karol:

So many conversations happening around various topics.

Karol:

It's crazy.

Karol:

And so many people participating also with the async API conf and all that.

Karol:

And I already saw a few streams online of the community.

Karol:

It's interesting how that can grow.

Fran:

Yeah, this is something I would love to highlight is we do everything in the open.

Fran:

So, we aim for total transparency.

Fran:

Not as a way to...

Fran:

Not as a way to show off or something like that.

Fran:

Or to justify our behaviour or something like that.

Fran:

Because we believe in transparency, in radical transparency.

Fran:

So, we try to do everything in the open.

Fran:

We are conscious.

Fran:

We are aware that just because you make everything in the open, it's not necessarily transparent.

Fran:

You need to publicise it.

Fran:

You need to advertise it so people know where this information is and how to consume it and so on.

Fran:

We try to do it, but as you said, we generate a lot of content that is almost impossible for us to promote all the content we create.

Fran:

All these live streams, all these meetings and so on.

Fran:

So, meetings are not recorded.

Fran:

They are live streamed.

Fran:

Always.

Fran:

All the meetings.

Fran:

Unless there's something like code of contact stuff that is obviously handled separately for privacy reasons.

Fran:

But other than that, everything is open.

Fran:

Everything is live streamed.

Fran:

And that's really cool because when someone wants to land on the community, the only thing they have to do, the only thing, is to start watching these live streams.

Fran:

Start joining these meetings if they can.

Fran:

If not, they can watch the recording.

Fran:

Following these certain issues on their favourite repo and so on.

Fran:

And it's really...

Fran:

And it's easier, I would say, to get on board.

Fran:

It's not easy.

Fran:

It's easier.

Fran:

It's not easy, though.

Fran:

Because, as you said, it's huge.

Fran:

It became a huge project with lots of people.

Fran:

So, filtering in the noise is always different.

Karol:

Okay.

Karol:

But we met today to talk about even-driven architecture.

Karol:

An adoption of said even-driven architecture.

Karol:

Now, the key question I have is, how would you define even-driven architecture?

Karol:

Because I'm pretty certain that from your perspective, the definition's a little bit different than from my perspective.

Fran:

Okay.

Fran:

So, I mean, in general terms, I would say, I want to make a...

Fran:

I want to clarify something here.

Fran:

So, we often talk about even-driven architecture.

Fran:

All of us, including myself, when we mean message-driven architecture, right?

Fran:

What's the difference?

Fran:

So, to me, I don't think it's only to me, but the difference is in the meaning of the message, right?

Fran:

So, message is like the broad concept.

Fran:

There's a piece of data flowing, usually through a broker, from producers to consumers, and so on, right?

Fran:

But to me, even-driven architecture is when you work with events, with facts that happened, right?

Fran:

That's it.

Fran:

Like, you send events to a broker and consume them from other consumers, and so on.

Fran:

For which purpose?

Fran:

That's not defining the term to me.

Fran:

That's something that's kept open, right?

Fran:

So, I just live there.

Fran:

Even-driven architecture is something that is...

Fran:

It's a kind of architecture that usually relies on a broker and where you exchange events as facts, let's say, right?

Fran:

But some people, as I said, like, some people also, including myself sometimes, because it's useful to talk about EBA all the time, if you send an action, a command, and expect a response over a broker, which is also possible, we sometimes also talk about these things as even-driven architecture.

Fran:

When it's not, it's not an event, right?

Fran:

It's a command.

Fran:

But that's a different discussion, let's say.

Fran:

So, that's what I live at usually.

Fran:

This can be just to communicate microservices in your team, your domain, or something, or it can be as a means to integrate, to build integrations inside your company, or with partners, or with public, you know, with the public audience.

Fran:

That depends on your business.

Fran:

For instance, robotics.

Fran:

We see a lot of this in robotics with MQTT.

Fran:

They offer their open API as an I think you pay file defining an MQTT API, right?

Fran:

So, and anyone can consume it, right?

Fran:

Anyone, you only have to apply for a token.

Fran:

And that's it as a token that it's going to be prepared to your MQTT topics and so on.

Fran:

So, it's effectively like the counterpart, or let's say the sister of a public REST API, but using MQTT in this case, right?

Fran:

So, yeah, there are many usages of event-driven architecture.

Fran:

There is a talk that we have it on the Cinque Bay website on the documentation.

Fran:

It's linked there from Martin Fowler.

Fran:

And the talk is titled, the many meanings of event-driven architecture.

Fran:

And I think that perfectly illustrates what I mean, this talk.

Fran:

So, if you go to the website, and you go to the documentation, if not the first page, one of the first pages, I'm sorry because I don't follow closely the docs anymore.

Fran:

It's too much.

Fran:

It's fine.

Karol:

But I'm sure we can find it later and put it in the description of the recordings for people to find.

Karol:

That's going to be fine.

Karol:

See, one of the highlights I have in terms of event-driven architecture, I have two perspectives on that.

Karol:

First one is the interoperability and the way we design communication within the system, which, for example, like microservices, microservices go well with event-driven and choreography and all that, right?

Karol:

Which is usually not of my concern because I don't design domain systems.

Karol:

I look always on an ecosystem level, so the communication and interactions between various systems.

Karol:

And there, event-driven architecture has a lot to do, but it differs slightly in certain areas, like, for example, do we use data-based contracts or key-based contracts?

Karol:

So like anaemic events, usually in business systems, key-based contracts would be quite normal, while in ecosystems, they're actually more of a considered as an anti-pattern.

Karol:

So there are these kind of small discrepancies of what would be acceptable on the level of a system using EDA and what would be acceptable on the level of an ecosystem using EDA.

Karol:

Then also the differences are like the sets of patterns sometimes differ or what is the database topology.

Karol:

So we usually work with completely distributed separate databases, separate sets of models, data, everything separated.

Karol:

So that's my kind of take on EDA.

Karol:

For me, these are just two types which drive my conversations in enterprise application integration at least.

Fran:

I would say even more than two types.

Fran:

It's like inside a certain domain, a domain understood as a domain-driven design.

Fran:

It's inside a single domain to coordinate stuff in between a domain.

Fran:

Sometimes you have services or microservices inside the same domain and they need to coordinate for whatever reason.

Fran:

Usually these events are not useful for anyone other than these people in this domain.

Fran:

But then you have cross-domain that starts behaving as integration as well, but inside the company, inside the organisation, doesn't have to be a company.

Fran:

But then you have cross-organisation.

Fran:

Cross-organisations in plural, and you have partners, integrations, and so on, or public.

Fran:

So the scope can go well beyond my truth.

Karol:

The funny thing is, because I've been sitting recently with a lot of domain-driven design people and discussing the overlaps of domain-driven design and interoperability topics, and the most amazing thing is that actually if you look at it from the perspective of domains, a domain can span across several systems.

Karol:

And a specific system may represent within itself several domains.

Karol:

So those overlays we can draw over those system boundaries and different block diagrams are quite elaborate at times, depending on how the company was built, how much design went up front into those systems.

Karol:

And then the world of cloud comes in and with SaaS solutions, everything is wrecked all over again because obviously SaaS solutions have a completely different philosophy and they again represent multiple domains.

Karol:

And it's over a layer, on a layer, on a layer, depending how we want to approach those layers, but there's so much to it to walk around.

Karol:

And with that so much, I think there's a level of hidden chaos in all ecosystems.

Karol:

I mean, entropy creeps in everywhere, so I would guess sooner or later everybody will experience chaos somewhere.

Karol:

But in terms of even-driven architecture, I think one of the biggest challenges of a hidden chaos might be the overall lack of standards in a lot of companies or a lot of organisations.

Karol:

While we have very robust standards for synchronous communication, I think not a lot of companies actually know how to standardise async.

Fran:

Yep.

Karol:

What's your take on that?

Fran:

That's a good point, actually.

Fran:

You're touching on the point of governance, right?

Fran:

So there are standards.

Fran:

There's async API.

Fran:

There's cloud events that Alexander has mentioned on the LinkedIn comment.

Fran:

There are a lot of different standards for messaging.

Fran:

Then you have Avra.

Fran:

Then you have for schema definition, right?

Fran:

It's the schema itself.

Fran:

Then you have this protobuf and so on.

Fran:

So there are many different layers, different levels, but there are different standards for that.

Fran:

Now, the thing is that it's funny.

Fran:

Something that I'm seeing lately is that maybe I'm biassed.

Fran:

So bear with me.

Fran:

But way more companies now are starting to adopt an API-first mindset.

Fran:

And I'm talking about synchronous, right?

Fran:

So now they are starting now.

Fran:

It's like the bulk of it, the bulk of the companies like everywhere you look around or almost everywhere you look around in tech companies or in companies with a mature, let's say, technical team.

Fran:

You'll see more and more people adopting open API, adopting API-first mindset and so on, right?

Fran:

So that's cool.

Fran:

That's really good.

Fran:

But that's just, to me, as I see it, that's just starting to happen now.

Fran:

It started to happen many years ago.

Fran:

But now is when I'm seeing it like, oh, it's starting to be everywhere.

Fran:

Cool.

Fran:

That's good.

Fran:

Finally.

Fran:

It only took us 20 years now, not 20.

Fran:

But yeah, like when I was working, when I created this in KPI, we were already building a product to work with open API.

Fran:

So open API was already around, not Swagger, open API.

Fran:

So open API was already like, Swagger was already renamed by then.

Fran:

So it means that it was there for a while already.

Fran:

What I mean with this, and this reminds me to a panel I got invited in Silicon Valley, I think 2018, or something like that.

Fran:

And I was there.

Fran:

I remember my phone sitting there in the panel and listening to everyone, not speaking at all, and thinking, everyone was saying that how cool open API was, how cool, how everyone was using standards, how beautiful everything was, right?

Fran:

And I was just sitting there and it's like, that's not what I'm seeing.

Fran:

Like, what's wrong with this?

Fran:

Like, is it just me that I'm not seeing enough or what's happening?

Fran:

And I recall someone from the event, I don't recall the name of the guy, sorry for that, but someone from the event said, like, mentioned my comment in Twitter, I think.

Fran:

And he was like, the point, the whole point of the day was this take by friend and they're saying, hey, get down to earth, like, this is pretty cool.

Fran:

But we're just a bunch of us using it, right?

Fran:

Like, we're those nerds that love APIs and open API and so on and API first and sign first and we're thinking about these things, but nobody cares, nobody out there cares, right?

Fran:

Many people are building microservices and they don't even know what open API or Swagger is.

Fran:

And it's not that they care about or not, it's that they don't even know what it is.

Fran:

They don't even know it exists.

Fran:

I'm talking about 2018, right?

Fran:

And I was like, I don't want to disappoint people here, but my feeling is that this is still very niche, looking as API nerds, right?

Fran:

Then now I'm seeing this with this in KPI as well, or with even driven architecture, driven in this case by this in KPI and or cloud events.

Fran:

I'm seeing that more and more companies are adopting it.

Fran:

But it's still very early in the days for these companies to even, some of them, they don't even know if these standards exist, right?

Fran:

And I could even, I could see it from the Postman surveys.

Fran:

So Postman was organising a survey every year and I think it was around 1% of people knew what ACMPI was.

Fran:

And I was like, I know it's a very specific target audience, APIs, but precisely, it's very related.

Fran:

It's actually coming from that same world when I created this in KPI, I created it from OpenAPI.

Fran:

And I was always advocating for it on API days conferences and in API related conferences because that was when I was feeling comfortable, not for any other reason.

Karol:

But you know what, I was like, when you're talking about the standards and the old nerds like hyping about those standards, I'm like looking back at my career, when I started doing application integration, REST was nowhere to be found.

Karol:

Nobody was using JSON because it was non-existent.

Karol:

We were using XML.

Karol:

It's still nowhere to be found, REST. I'm going to get to that one in a moment.

Karol:

So looking back 14 years ago when I started as a junior developer, we were building SOAP services over HTTP or SOAP services over JMS. And that was already a very robust standard and was already a very established standard.

Karol:

Very rigid, had to be very precise, so it was very prone to errors.

Karol:

You could do a lot of errors and everything will be just returning you a 500 HTTP error, right?

Karol:

Which is fine because where I worked, we actually needed very high rigid standardisation of the APIs so that we can have that quality of data.

Karol:

But even though that was a very established standard at the time, we still stumbled into people who had no idea what they were doing, even if they were senior, right?

Karol:

So I remember this lovely conversation some time ago where somebody was debugging a SOAP service and the guy had no idea why it was not working.

Karol:

The message was sent according to specs.

Karol:

The specs said that the specific element could be empty.

Karol:

Like no string at all, right?

Karol:

So basically in the XML, they got an empty tag.

Karol:

So a tag that doesn't have two elements has one element so it's already closed.

Karol:

Self-contained, yeah.

Karol:

And I remember the lovely comment from that developer debugging that communication because it was wrongly interpreted.

Karol:

It's like, I'm getting a very weird tag here.

Karol:

It's neither open nor closed.

Karol:

I don't know what that is.

Karol:

And I'm like sitting there and it's like, after a few years later, I mean, when I started doing proper research into interoperability and why we're doing certain things the way we are doing things and I started reading the specification of our XML, I was like, that self-contained tag is in the first version of the specification.

Karol:

It's old as hell.

Fran:

It was there for a reason.

Fran:

It's pretty common in HTML as well, yeah.

Karol:

Yeah, exactly.

Karol:

The new line tag, that's basically what it is, right?

Karol:

Line, link, all this stuff, yeah.

Karol:

Yeah, plenty of those.

Karol:

And I was like, right, perfect.

Karol:

So we have standards but nobody actually even reads them.

Karol:

They apply to the use case.

Karol:

Sometimes good, sometimes bad.

Karol:

And now looking at the REST standard, I would say that over 95% of REST services are not aligned with the REST standard.

Karol:

We call them REST services, but they're not actually up to par.

Karol:

They don't have the next page.

Karol:

They don't have the related objects, nothing like that.

Karol:

We just use this to convey messages based on crude, create, read, update, delete.

Karol:

And we have standards.

Karol:

But who read the REST API standard?

Karol:

I mean, hands up, probably nobody, other than the two of us, I would guess.

Fran:

No, no, no, I haven't.

Fran:

I just went through it like a little bit, but couldn't finish it.

Fran:

I mean, it's an interesting one, probably.

Fran:

I just didn't have the time or energy to do it, or even the need to do it.

Fran:

So if I have had the need, probably I will have done it, and that's fine.

Karol:

Yeah, the need is also quite important.

Fran:

So I never had the need to have, let's say, a proper REST API.

Fran:

Because what you said, even consuming this kind of APIs will become more difficult for teams that are already like being pressured to deliver quickly, quickly, quickly.

Fran:

Right?

Fran:

So yeah, this sort of SCRAM methodology that we have been applying for the last decade, it's a little bit of a culprit there as well for telling people that you should be rushing out and delivering things quickly in the next two weeks without looking farther than just two weeks.

Fran:

So I know it's not exactly what SCRAM says, but that's how it was usually applied.

Fran:

So in the end, we'll get back to the same thing.

Karol:

So basically we could say that, yes, we have standards, but nobody's adopting those standards.

Karol:

So we basically live without standards.

Karol:

And that's one of the usual problems.

Fran:

Now, I would love to give, let's say, a vote here to these people who never reach standards and try to build things and so on.

Fran:

I'm one of them as well.

Fran:

And I think everyone is, everyone, like we all do it with certain things, not with all of the things, right?

Fran:

But the thing is that if you are under pressure to deliver, deliver, deliver, you could not be reading MSN.

Fran:

All the standards that are out there and so on, sometimes it's faster and easier for you to deliver something that is, meh, it works, right?

Fran:

And you're not going to be fired because you deliver.

Fran:

Then to say, you know what, let me properly read this and let's build this in eight weeks instead of two.

Fran:

But the cool thing is that next time we have to build something like that.

Fran:

Actually, next time we have to build a feature on the API, we don't have to change the API.

Fran:

Like the whole API will adapt itself, right?

Fran:

Like the web is doing with HTML, for instance.

Fran:

You don't have to encode each website in the world, like everybody got a language, which is HTML, and then you can create the content.

Fran:

And then you have link tags and so on, script tags, and all this kind of references to other webs, the A tag, the anchor tag, and all this stuff, which are hyperlinks.

Fran:

So there's a system there, right?

Fran:

The thing is that for some reason, at some point, we decided to say that XML or HTML is not good enough.

Fran:

Let's just jump to JSON because it's more readable.

Fran:

I can relate to this, like I failed myself.

Fran:

I prefer to read JSON than to read XML.

Fran:

But it's true that it's not comparable, so we're losing features when we jump from XML to JSON.

Karol:

I mean, I know a few people who would argue that nowadays JSON already has those features that XML has.

Fran:

That was like a kind of patches and so on, but at the time, it's already late, let's say, because people have too invested in using plain JSON with no structure and so on.

Fran:

So it's a bit of a mess, but I will not point to those who are using the standards without reading the standards.

Fran:

I will instead point to these organisations who don't give enough space to these engineers to iterate and to experiment and to build better systems, right?

Fran:

And instead, it's like ship, ship, ship, ship quickly because we need to go to another feature and another one more feature, one more feature.

Fran:

We don't care.

Fran:

It's like technical debt.

Fran:

Who cares, right?

Fran:

This is not going to give us money, right?

Fran:

So I will point to these people instead.

Fran:

Like there's company cultures, organisation cultures that don't enable for engineers to experiment and fail and develop things in a calm way while you're reading things and develop things properly.

Fran:

In the automotive industry or in the aerospace industry.

Fran:

I'm pretty sure it happens to some degree, but it doesn't happen as much as with software, right?

Fran:

Why?

Fran:

Because she cannot just ship a half-baked plane into the air with people, right?

Fran:

Because if it fails, it will kill people, right?

Fran:

So that's why it takes so long time to build something that is, okay, this is now properly tested.

Fran:

It's not going to kill anyone.

Fran:

And if at some point there's an accident because of a failure of an aeroplane or something, that will become the rare news of a plane accident.

Fran:

That's really rare.

Fran:

But blocks, software bags, we see them daily.

Fran:

Because who cares?

Fran:

Who's going to die for this?

Fran:

I mean, yeah, one could argue that there are certain systems where people could die of software bags.

Fran:

But in general, who cares?

Fran:

Like, well, what's going to happen?

Fran:

Like, someone's not going to be satisfied.

Fran:

I don't care.

Fran:

Let's just keep rolling.

Karol:

That's why we say that if we're testing software, we're never 100% sure that there are no bugs.

Karol:

There are always bugs, and software we just haven't found them yet because we just found that the right deterministic situation is everywhere.

Fran:

That's the situation.

Fran:

Hardware as well.

Fran:

It happens as well.

Fran:

So the thing is that if you are serious enough about it, if you have that need, like in the aerospace industry, you don't want to be in the news constantly because you killed a lot of people, you want to make sure that you reduce this probability to the very minimum you can, right?

Fran:

And you do a lot of tests.

Fran:

And so before you even launch something, right, before you even launch a beta version, right?

Fran:

Yeah.

Fran:

That's something they do at all.

Fran:

So that's my point.

Fran:

So I will not point to these people who don't understand the standards and so on, but instead point to our shitty organisation, organisation cultures, and that don't provide psychological safety to engineers to experiment and to fail.

Fran:

That is my take.

Fran:

And learn from those failures.

Fran:

Yeah, exactly.

Karol:

And this is a very nice segue to the next topic at hand, which is the non-technical barriers, but also the mindset shift that is required for proper governance and proper placement of even driven architecture within organisations.

Karol:

Because from my perspective, it's extremely easy to jump into doing point to point.

Karol:

That's amazingly easy with open API spec, with just all the libraries that enable you to put in just a REST API in seconds, with LLMs that just give you a definition of a REST endpoint in matters of seconds, and with a spec that you can send to somebody and they will use it.

Karol:

I mean, it's extremely easy.

Karol:

But to properly govern asynchronous communication, I think that's something completely different in that sense.

Fran:

That's really happening by the way.

Fran:

So you can really do that.

Fran:

And with LLMs as well, like you can generate async API and you got pretty much, I will not say the same coverage as with open API, but this is not yet as mature as open API.

Fran:

I like to remember that open API has been around for probably around 10 more years, or a little bit less probably.

Karol:

Yes, while you can generate, that doesn't really change anything in terms of governance or the non-technical obstacles.

Fran:

That's my point.

Fran:

That's my point.

Fran:

So you can generate even mocks or stops for like people can use postman, for instance, for open API, but people can use also microx to generate mocks for, you know, for, I was going to say a Kafka topic, but I have to learn myself to stop saying Kafka for everything that it's even doing architecture because it seems like it's the same.

Fran:

So let's say for an A in QP topic or an A in QPQ, depending on your configuration, or an in QT topic or whatever, right?

Fran:

So you can mock this already with microx as well and with A in QPQ contracts.

Fran:

And you can have people who are, let's say not very technical, like product managers who understand a little bit about the topic, but not so much.

Fran:

And they can already create some mocks, some fake data that will be published to a broker and things like that, right?

Fran:

So it enables, let's say, non-technical people to go one step, let's say one step ahead, one step beyond without having to wait for the engineering teams to apply these things.

Fran:

And you have similar technologies like Spectral that it's used to create, to link open APIs, to link this into API as well, right?

Fran:

So you can use both, right?

Karol:

All right, but going to the mindset shift.

Karol:

Yeah.

Karol:

And that's actually a very nice, also a point where we could pop this lovely QR in.

Karol:

Fran is actually writing a lovely book about, what is that about, more human challenges of adoption of?

Fran:

No, no, no, actually, lately I'm talking about a lot about these things, the human challenges of adopting engineering architecture, because that is the most overseen aspect of it that I found out, right?

Fran:

So I know, like I can write a book about the technology needed to build an event-driven architecture and apply some governance to it and so on.

Fran:

That's fine.

Fran:

That's what I've been doing for the last 10 years or so.

Fran:

The problem usually relies on a more human side of things, right?

Fran:

So like, I'll give you an example.

Fran:

So for context, in the last four or five months, I've been interviewing more than 20 people from different companies at different stages, but they all were doing event-driven architecture for the sake of the book, right?

Fran:

I want to understand how people are doing, what are their challenges and so on.

Fran:

So I wanted to make sure that it's not, this book is not just based on my experience or in my opinion, but also on facts, let's say, right?

Fran:

And I'm glad I did because I was not going to even mention anything about the human side of things, right?

Fran:

And what I found out is that every single company out there, their major challenge is about communicating, you know, like convincing their faults.

Fran:

I'll put you an example.

Fran:

If you're an engineer, if you're an architect that you want to introduce event-driven architecture or certain practises related to event-driven architecture, and you are in a well-established company, old company and so on, the rest of the teams, the rest of the engineers are super comfortable doing what they used to do, right?

Fran:

They don't want to change, right?

Fran:

So how do you convince them to adopt this new mindset?

Fran:

Likely if you are a, if you're a leader in the company, like let's say head of engineering, CTO, whatever, how do you convince the rest of the teams, the rest of the engineers that EDA is what they should be doing and there should be a mindset shift in this case.

Fran:

That's why it's called shift, right?

Fran:

So why, how do you do it and why?

Fran:

Because what I found out is that people were sure that EDA is what they needed and what they should be doing, but they struggled to convince their faults, their peers on the why.

Fran:

Like why is it what we need?

Fran:

Like we've been working with without it for years.

Fran:

Why is it needed now?

Fran:

And what I found out is that most companies don't even know where to start.

Fran:

I only found one, by the way, one company that I think in my opinion, either they were lying to me or they're doing it pretty well.

Fran:

So it was like a combined effort.

Fran:

Like it was a bottom up and top down approach.

Fran:

It was a combination of both.

Fran:

That was alignment from, let's say architects, but also senior engineers, staff engineers, all the stuff, stuff plus in here with the leadership.

Fran:

So everything was coming from, let's say from the bottom of the organisation, not right and sideways as well as much as possible.

Fran:

But when someone was not buying the idea, then you have leadership saying, no, this is what you have to do.

Fran:

I'm not asking for your opinion.

Fran:

Like we want to convince you, right?

Fran:

We give you the option to be convinced by faults and so on, right?

Fran:

And everyone is pretty much in, but sometimes you have the black ship around, right?

Fran:

That said, I don't care about that.

Fran:

I'm disobeying whatever they tell me.

Fran:

I don't buy it.

Fran:

Well, in this case, it's useful to have someone from above, right?

Fran:

And say, no, no, you have to do it.

Fran:

Like there's no chance I'd say that this or you leave basically.

Fran:

I mean, they should never be using that card if possible, but it's useful to have it, right?

Karol:

I'll put a opposite example of not adoption.

Karol:

I've seen many companies adopting new practises in terms of interoperability.

Karol:

And I've seen some really bad examples of those adoptions, one of which was to create a whole integration team from scratch from former database developers and database administrators.

Karol:

And if we put people that don't have the right mindset into these kinds of roles where they need to do interoperability, I mean, some really wonky stuff happens.

Karol:

The wonky stuff that happened there was that they, with their database mindset, they persisted everything.

Karol:

Imagine just purely persisted communication, like everything has to be written down, persisted in the database, then redistributed by usually point to point.

Karol:

It was magical.

Karol:

And one of the reasons I observed why they did that is because that company, in terms of how they communicated between teams or how they communicated between departments, between each other, was mostly on meetings and with robust documents.

Karol:

Like they just made humongous paper trails.

Karol:

And from my observation over the years in application integration is that if we look at the way that a company communicates internally, that translates directly to how systems communicate in that company.

Karol:

So if we have lots of meetings, we're going to have...

Karol:

Yeah, Commonwealth is low, pretty much, yeah.

Karol:

If we have meetings there's going to be a lot of request reply.

Karol:

Yeah.

Karol:

If those people are accustomed to using...

Fran:

And synchronous.

Karol:

Yes, definitely synchronous, yes.

Karol:

If that company is accustomed to using chats and they're accustomed to not rely on instant reply, well, we'll probably have some even driven in the systems, a decent amount.

Karol:

And then if a company is relying on documents, that's going to be batch, batch, batch and file-based transfer, file-based transfer and file-based transfer all the way.

Karol:

I mean, it's fine if it's proper ETL, ELT or batch, but if file-based transfer, I mean, come on, are we like in the 70s?

Fran:

That's still useful sometimes.

Fran:

It is.

Fran:

I mean, think about it.

Fran:

Like if your system is not...

Fran:

I mean, if it's not relevant for your system or for your company, to have this information right straight away, like in real time, as much as real time, you want to define it.

Fran:

File transfer, like a batch overnight, it's completely fine.

Fran:

Like if it works, if it's not, let's say...

Fran:

If it's not a problem, if it's something that can be done secondarily, it's not critical for your system and so on.

Fran:

That's another technology.

Fran:

Like I said, it's a technology.

Fran:

Use it whenever it makes sense.

Fran:

Exactly.

Fran:

And I agree on that.

Karol:

Whenever it makes sense, but then...

Fran:

Exactly.

Fran:

Don't use it for everything.

Karol:

If you have 90% of your communication being robust operational communication because batch is great for analytics, batch is great for long-running processes, it's fine.

Karol:

But if you're doing your operational communication with file transfers, there's something definitely very wrong in the way people do not communicate with each other.

Karol:

Because if I'm looking, if most operational work is done over sending a document...

Fran:

Honestly, I think, again, like every time I dig down into this topic, I find out that it has nothing to do with technology.

Fran:

So every time I found that, and I scratched a little bit of surface and asked, why do you keep doing these file-based transfers, these batches overnight and so on?

Fran:

Every time I kept scratching, I instantly found that...

Fran:

Instantly, sometimes even in the same meeting, like one question away or two questions away, I was just not even asking directly, just asking around.

Fran:

And instantly what popped up is it's a psychological safety in the organisations.

Fran:

So picture this.

Fran:

If you are an engineer that's been in a bank for 20 years working there, you know the system inside there, right?

Fran:

Now someone comes to you and say, we now have this Kafka broker, right?

Fran:

And we are doing...

Fran:

We're now doing everything over Kafka.

Fran:

But you still have to deliver stuff, right?

Fran:

So what you will probably do is either say, no, I'm not going to do this because I don't need it.

Fran:

If you have the psychological safety to do that, and meaning that you know that you're not going to be fired for disobeying, or you say yes, but you don't do it, right?

Fran:

Which is even worse, right?

Fran:

That's even worse because everything...

Fran:

What happens in this case is that everything seems to be working.

Fran:

Everybody is buying the argument.

Fran:

Let's use Kafka.

Fran:

Let's react on real time or, yeah, as it happens, to all the events and everything.

Fran:

We process them and so on.

Fran:

And we do the calculations in the very moment as we get the event, right?

Fran:

Instead of just relying on overnight batches, right?

Fran:

It seems that everybody is buying your argument.

Fran:

But then you find out that adoption is like, this is not happening as fast as it should.

Fran:

What's happening here?

Fran:

They keep putting excuses here and there, like we have some deadline that we have to match, whatever, which might be true as well.

Fran:

And then it's almost impossible to migrate to this new kind of system, right?

Fran:

Let's say in an acceptable time because these people are boycotting you, right?

Fran:

Even if you are their boss, right?

Fran:

Because for different reasons, it can be because their manager is not aligned with the leadership making this change.

Fran:

So their manager is still like putting them pressure, like you need to deliver this, this, this, this, this, more feature, more things, more blah, blah, blah, whatever.

Fran:

So we don't have time to change our mindset here or to study or to start experimenting because it's a new technology.

Fran:

You have to experiment because you don't know how it works.

Fran:

So you've got to experiment, right?

Fran:

So the manager is not letting them experiment.

Fran:

So they never have time to experiment.

Fran:

So since they don't have time to experiment, someone, some colleagues, some peer come to them, maybe an architect, usually an architect comes to them and say, hey, why are you not already publishing this information to Kafka or consuming from Kafka or whatever, or from, I mean, I mean, I mean, you're the brother, right?

Fran:

Why aren't you doing this already?

Fran:

Like it's been two months or whatever.

Fran:

Then you have this problem that they need to keep shipping because the manager is putting them deadlines.

Fran:

Now, the other thing that I've seen is this is if the whole technology changes, I may become redundant in this company.

Fran:

I may lose what makes me special and what makes this company not fire me, right?

Fran:

And so I will lose this job and I don't want to lose this job because as opposed to us who are passionate about software, many people are working in companies just in exchange of a salary just because of debt, which is perfectly fine.

Fran:

You don't have to have a passion for software or for your job.

Fran:

That's completely fine.

Fran:

And it's totally acceptable, right?

Fran:

The thing is that if these people fear for their job and they know they've been doing this for 20 years, so they know that if they go out, they're going to struggle to find a new job because that world is not there anymore, right?

Fran:

It's only in a few companies here and there.

Karol:

Very true.

Fran:

And they're not hiring for these roles anymore.

Fran:

So that is creating a lot of stress and their instant reaction is saying...

Fran:

Resist, exactly.

Fran:

Resist here.

Fran:

I'm going to boycott this initiative because that doesn't make sense.

Fran:

Sometimes, I will even argue, most of the times, if not all of the time, they don't do it on purpose.

Fran:

No.

Fran:

It's just unconsciously.

Fran:

And it happens to all of us in every aspect of our lives.

Fran:

So what I'm researching a lot for the book, for writing the book, is precisely on the organisational psychology.

Fran:

I mentioned the safety.

Fran:

I mentioned also the resistance and so on.

Fran:

Alexander is in chat, he's mentioning the architectural comfort zone.

Fran:

Totally agree with that.

Fran:

It's the comfort zone.

Fran:

And nobody wants to leave the comfort zone because the comfort zone is comfortable.

Fran:

That's why it's called comfort zone.

Fran:

Nobody wants to leave that.

Karol:

It takes a lot of effort to leave your comfort zone.

Karol:

It's very annoying to leave the comfort zone.

Karol:

It takes a lot of courage and a lot of energy to get used to pushing that comfort zone further and further.

Karol:

But it's a fallacy in its own if you don't do that.

Karol:

Because those people will, sooner or later, will end up without the job and they will realise how...

Fran:

Maybe these people are already 55 years old and they're aiming for less retirement without any complications.

Fran:

So that's also valid.

Fran:

The software industry is already becoming so old but it's already common to see people over 50 years old in teams.

Fran:

So we're getting there.

Karol:

Just last week I spoke to Mark Riches on a live stream with Utrecht Mulesoft Meetup.

Karol:

And Mark has...

Karol:

Let me not get that wrong.

Karol:

42 years of experience in IT, 31 years of experience as an architect.

Karol:

I mean, he's a dinosaur in the field.

Karol:

An absolutely amazing guy and an absolutely amazing architect and he's very comfortable with moving his comfort zone and stepping out of his comfort zone which is an amazing thing to watch.

Karol:

But he's one of the rare people there that actually is still capable to do this with his years of experience.

Karol:

That's amazing but that's such a rare thing to observe.

Karol:

That's passion.

Fran:

That's passion.

Fran:

That's only possible because of passion.

Karol:

And there is...

Karol:

If we look at our organisations, I mean, those people are there to make a buck.

Karol:

They want to make a living and move on with their lives.

Karol:

They don't have to have that passion.

Karol:

It's fantastic if they do.

Karol:

That's awesome.

Karol:

But it requires really strong leadership and actual leadership that leads to spark the minimum of passion for those people to be able to step out of those comfort zones without fear with that psychological safety somewhere there.

Karol:

And that's difficult.

Karol:

That's extremely difficult.

Fran:

It is because we all have a boss, right?

Fran:

So that's the thing.

Fran:

We all have a boss.

Fran:

Even your boss has a boss, right?

Fran:

Nobody wants to be the guy that is like, why are you so weak with your team?

Fran:

Like why don't you tell them what they have to do and if not, fire them, right?

Fran:

There's still this mentality, especially in these old industries like banking.

Karol:

It's the mentality, the very specific mentality called the Peter Principle.

Karol:

You heard probably about that.

Karol:

So for those who don't know Peter Principle, it's a concept described in 1969 by Dr. Lawrence J.

Karol:

Peter.

Karol:

It basically means that, especially in larger environments, the smaller the company, the less it happens.

Karol:

But in large corporate environments, people tend to be promoted to higher positions based on their time with the company, not based on the competence for that next position.

Karol:

So they're great at their role.

Karol:

They're like, let's say, you're a great junior developer.

Karol:

Okay, you get a promotion to a mid developer role, right?

Karol:

You're a great mid.

Karol:

You get promoted to senior.

Karol:

And then all of a sudden, you get promoted to a team lead, right?

Karol:

And then you become incompetent because being a team lead is something completely different in terms of skill sets than being a senior developer.

Karol:

Because being a team lead requires a different set of skills in terms of soft skills.

Karol:

Being a senior developer, you just need to communicate clearly about the code you're writing and the technology, maybe a little bit of a coaching of juniors, etcétera, your colleagues in the team.

Karol:

But as a team lead, that's something different.

Karol:

So if you never have any interest in psychology or any interest in building your soft skills as a developer, and you get promoted on the basis of a Peter principle, then all of a sudden, you become completely incompetent in your job.

Karol:

And that's horrendous.

Karol:

And I've seen managers and directors being promoted that way.

Karol:

Where they're completely incompetent to lead the whole departments and they destroy the company from within.

Karol:

And then you have a large turn of employees and it all becomes very costly and difficult for everybody.

Fran:

I must say, I face that myself.

Fran:

In my last job at Cosmo, I was a director of engineering.

Fran:

I don't know how to be a director of engineering.

Fran:

I still, I mean, I more or less know now after four years being in that position.

Fran:

But when I landed there, I was like, I mean, can you imagine the imposter syndrome on me?

Fran:

Let's not get started on my imposter syndrome.

Fran:

Can you imagine that like, yeah, I created this in KPI, cool, whatever.

Fran:

But when I quit my job to work 100% of my time, full-time, on Async API, I was just recently promoted as to manager position at New Relic.

Fran:

But I think I was in the manager position.

Fran:

I was just one month and then I quit.

Fran:

So I didn't quit because of the company.

Fran:

I quit because I had the opportunity to dedicate full-time to Async API and I took this opportunity and not looking back, right?

Fran:

So it was a different reason.

Fran:

So I jumped straight from lead engineer, let's say that I was usually playing that role in different companies.

Fran:

Sometimes architect but of smaller companies.

Fran:

So it's effectively it's like lead engineer.

Fran:

I was instantly promoted to director of engineering, managing other managers managing people, managing the project, the budget, the strategy, you know, all these kind of things.

Fran:

Alexander says I figured that we make it.

Fran:

That's what I did usually is I kept going.

Fran:

I kept going because also I was like, there's another point by Kubele saying that is it really being an imposter?

Fran:

Well, if you hide it, and you don't try, you're imposter.

Fran:

In my case, I was trying hard.

Fran:

I was trying to learn as much as possible, learning from peers within books, taking courses and so on.

Fran:

I was trying hard.

Fran:

It was just not made for me.

Fran:

It's not what I should be.

Fran:

It's not what I like.

Fran:

It's not what I enjoy.

Fran:

And it's not what I'm good at, at managing.

Fran:

I can be decently good.

Fran:

At least I'm not.

Fran:

I'm really good at the human level in the sense of like something that I'm proud of is that I acted as a as an umbrella for my team.

Fran:

kind of like a two way, two ways umbrella.

Fran:

So I was filtering all the shit from the organisation so they don't have to worry about things happening at the higher level.

Fran:

But letting them shine to the rest of the organisation and promoting their work and their achievements and so on.

Fran:

So I'm happy with that work that I usually did.

Fran:

And even when I quit and when they all were fired one month after I quit, the whole team, right, at Postman was led off.

Fran:

Even after that, I was on holiday time and I was trying to find them a job and so on and talking to people so they could find a job.

Fran:

So I'm happy.

Fran:

I'm proud of myself at the human level.

Fran:

But I don't know how to do that.

Fran:

I don't know how to properly do that and I don't and even more important I don't enjoy it.

Fran:

So yeah.

Karol:

I mean, I must compliment you because this kind of behaviour absolute leadership.

Fran:

Well, and I must say as well, I appreciate that but I must also mention something that I don't want to miss.

Fran:

I want to make sure that everybody understands this point.

Fran:

So and this took me a few sessions of therapy.

Fran:

I'm not joking about that.

Fran:

It's true.

Fran:

It took me a few sessions of therapy.

Fran:

So it was really painful for me to see my team being led off this way.

Fran:

it's really like it takes true leadership as you said and as many people say that this is what you should be doing and so on.

Fran:

But if you ever if you are ever in this position my piece of advice is don't do it.

Fran:

Don't do it to that extreme.

Fran:

So I've spent more than a year at Postman being burned out just to protect my team because I knew or I felt it that if I quit they all will be fired.

Fran:

Because our hire basically was a marketing hire.

Fran:

It was not a technical hire or product hire it was a marketing hire so if they don't have the founder of Facing KPI why keep investing it in this ship right?

Fran:

Or they don't care.

Fran:

And I felt that because of their comments and so on.

Fran:

I don't agree.

Fran:

I would have left the whole team there because also Lucas was still the director of the initiative so the director of Facing KPI was still there.

Fran:

So it could have continued even as a marketing hire or as a marketing investment.

Fran:

Now the thing is that my biggest mistake there was allowing myself to stay there to protect the rest of my team.

Fran:

Don't ever do that because you can get to a point where recovering from the burnout is not recovering from the burnout anymore and it's recovering from the depression.

Fran:

So because you are trying to you are trying to protect people that first of all they never asked you to protect them.

Fran:

That's the first thing.

Fran:

You're doing it just because you want to and you feel that you should be good.

Fran:

That's like the saviour role like you want to save everyone from the pain and so on.

Fran:

And secondly, they are very good professionals and adults and so on.

Fran:

So when they were laid off nobody was like or almost none of them was like hey, let's rush out to find another job.

Fran:

Most of them were like who cares?

Fran:

Cool.

Fran:

I've got holidays now and they were fired in June by the way.

Fran:

So in the beginning of summer like it's been a year now.

Fran:

So most of them thought like cool, let's just have holidays and proper holidays and so on and now slowly find another job at the end of the summer.

Fran:

That was like I've been worried.

Fran:

I've been worried for all these people when and yeah, they are sad that they've been laid off but they're not worried for their financial situation or anything like that.

Fran:

So don't overload yourself with things that are not your problem.

Fran:

Right.

Fran:

If your team loses a job it's not your problem.

Fran:

I know it's hard to say but it's not your problem.

Fran:

Yeah.

Fran:

It's their problem.

Fran:

So it's something they have to solve, not you.

Fran:

You can try to make it harder to happen but not at the expense of your own health.

Fran:

That's what I would say.

Fran:

Never at the expense of your own health.

Karol:

And you're touching a very, very important topic which I didn't really expect to land in this stream which is mental health.

Karol:

We discussed that offline that the industry is just a perfect hiding spot for a lot of people with a lot of different disabilities as in ADHD or being on the spectrum of autism.

Karol:

A lot of the issues we're having we are having in our works especially also burnout and like the comment from you to Bright Hair will burn out middle name, right?

Karol:

Is that common?

Karol:

Yes, that's very common in the industry.

Karol:

But it's common also not because the industry is burning us out or the bad leadership or bad management more likely is burning us out.

Karol:

It's because we also suffer from ailments that we are not even aware because our industry and our jobs are great at hiding those.

Karol:

So, for example, there are actual studies that certain industries like IT, events, et etcétera are absolutely great at hiding ADHD.

Karol:

People with ADHD can hide there indefinitely.

Karol:

But that also means that they will suffer because they don't even know that their ADHD is causing them a lot of problems including that burnout.

Karol:

So, as we're talking about mental health and as a person that I've been diagnosed this year with ADHD, right?

Karol:

Go seek professional health help and dig into the topic because if you're having depressive thoughts if you're having a burnout that might be just the symptom.

Karol:

That might be just the symptom of the fact that you have ADHD and it's wrecking up your life because you left it unmanaged for too long and you're overburdened with certain things and it starts kicking you in the butt.

Karol:

If you're overstimulated constantly if you're constantly feeling overburdened if you're constantly feeling tired there might be something more to that.

Karol:

It's not only your imposter syndrome kicking you down it's not some sort of a depressive thought or something.

Karol:

It actually might be something that was hidden because you work in IT because the amount of changes you need to go through oh man ADHD people love changes.

Karol:

If the environment changes around them in the fast-paced yes I'm really great at that right because I have ADHD we love those changes but then you don't realise that you actually have that.

Karol:

You don't realise that your brain works a little bit different you kind of think that oh everybody has that everybody everybody's brain works the same way.

Karol:

no it doesn't that's not normative that's neuroatypical so for those finding themselves in what Fran just said about burnout about depression about having that kind of a a little bit of a saviour syndrome because what you described in protecting your team was kind of that saviour syndrome there.

Karol:

Take a look at that

Karol:

dig into the topic

Karol:

if you're feeling

Karol:

burnt out

Karol:

if you're feeling

Karol:

depressive

Karol:

and you feel like

Karol:

it's because of your

Karol:

work

Karol:

it might not be

Karol:

have nothing to do

Karol:

with your work

Karol:

your work might be

Karol:

contributing to the

Karol:

state you are in

Karol:

but you might be

Karol:

just neuroatypical

Karol:

and that's

Karol:

that's also perfectly

Karol:

fine but

Karol:

go to a specialist

Fran:

yep exactly

Fran:

I agree with that

Fran:

and that

Fran:

links back to

Fran:

what I was saying

Fran:

that

Fran:

this psychological

Fran:

safety

Fran:

and organisations

Fran:

like

Fran:

it's not just

Fran:

for experimenting

Fran:

it's not just

Fran:

for you know

Fran:

for adopting

Fran:

any technology

Fran:

and so on

Fran:

it's also for

Fran:

feeling this burnout

Fran:

which by the way

Fran:

I would like to clarify

Fran:

burnout is not

Fran:

a clinical term

Fran:

right

Fran:

this is a

Fran:

this is a

Fran:

beautiful name

Fran:

we invented

Fran:

to describe

Fran:

depression

Fran:

so that is

Fran:

depression

Fran:

right so when you

Fran:

when you feel

Fran:

burnout depending

Fran:

on the stage of it

Fran:

you might be in the

Fran:

beginning of a depression

Fran:

you might be like

Fran:

straight into a

Fran:

depression

Fran:

so it's

Fran:

let's call it

Fran:

for what it is

Fran:

it's called to call

Fran:

it burnout because

Fran:

most people are

Fran:

searching for this

Fran:

work

Fran:

but

Fran:

let's call it also

Fran:

for what it is

Fran:

the clinical term

Fran:

is depression right

Fran:

so

Fran:

search for help

Fran:

that's what I would say

Fran:

and

Fran:

and yeah and

Fran:

if you are a manager

Fran:

if you are a team lead

Fran:

or something

Fran:

or you're managing

Fran:

people

Fran:

I'm not going to say

Fran:

I'm not going to say

Fran:

that you should be

Fran:

acting as a

Fran:

as a

Fran:

as a psychologist

Fran:

because that's

Fran:

probably not your

Fran:

not your problem again

Fran:

but at least give them

Fran:

space

Fran:

for expressing

Fran:

expressing their

Fran:

thoughts openly

Fran:

and if they need help

Fran:

and the company

Fran:

supports it

Fran:

like for instance

Fran:

paying for the treatment

Fran:

paying for

Fran:

the therapy

Fran:

sessions

Fran:

paying for coaching

Fran:

their ADHD

Karol:

coaching

Karol:

sessions

Fran:

paying for holidays

Fran:

like for instance

Fran:

I remember

Fran:

a friend of mine

Fran:

like he was

Fran:

he was in my team

Fran:

he was

Fran:

I immediately detected

Fran:

him to be like

Fran:

like super

Fran:

like

Fran:

about to collapse

Fran:

you know

Fran:

and he was not taking

Fran:

holidays

Fran:

because he

Fran:

in his own words

Fran:

I have to

Fran:

finish this

Fran:

I have to

Fran:

and I said no

Fran:

no you don't have to

Fran:

it's good if you have

Fran:

if you do it

Fran:

it's good if it happens

Fran:

but you

Fran:

you don't have to

Fran:

you don't have to

Fran:

finish this

Fran:

we're not

Fran:

we're an open source project

Fran:

it's okay

Fran:

if you leave this

Fran:

for the community to

Fran:

complete it

Fran:

to contribute and so on

Fran:

and if it doesn't happen

Fran:

this summer

Fran:

and it has to happen

Fran:

next summer

Fran:

that's completely fine

Fran:

we're not a product

Fran:

company

Fran:

we're not trying to sell

Fran:

anything

Fran:

we're building an

Fran:

open source project

Fran:

so

Fran:

if something is not

Fran:

developed as fast

Fran:

as you like

Fran:

then maybe we

Fran:

should focus in

Fran:

inviting more people

Fran:

to join our community

Fran:

and contribute more

Fran:

not you doubling

Fran:

down

Fran:

the hours

Fran:

and the effort

Fran:

you put in

Fran:

right

Fran:

so

Fran:

and I sent him

Fran:

like four weeks

Fran:

straight in

Fran:

into holidays

Fran:

like

Fran:

finish whatever you

Fran:

have at hand today

Fran:

tomorrow you're

Fran:

ready

Fran:

and I don't want to see you

Fran:

connecting for weeks

Fran:

but he came back

Fran:

recovered

Fran:

and with the mind

Fran:

clear like

Fran:

shit

Fran:

I was like

Fran:

so deep into

Fran:

the

Fran:

into this

Fran:

that I was

Fran:

even like

Fran:

believing that this

Fran:

this was all my

Fran:

responsibility

Fran:

down the rabbit hole

Fran:

you go

Fran:

down the rabbit hole

Fran:

exactly

Fran:

and so

Fran:

this is something

Fran:

that I also ask

Fran:

managers whenever

Fran:

whenever they

Fran:

detect these kind of

Fran:

things

Fran:

protect your team

Fran:

don't protect the company

Fran:

right

Fran:

I mean

Fran:

if you protect your team

Fran:

you're going to protect

Fran:

the company anyways

Fran:

so

Fran:

yeah

Fran:

but don't look

Fran:

at

Fran:

look down

Fran:

look to your team

Fran:

protect them

Fran:

right

Fran:

because in the end

Fran:

the company is going to

Fran:

fire you

Fran:

someday

Fran:

right

Fran:

you're just an asset

Karol:

that is easily

Fran:

removable

Fran:

whatever company you work

Fran:

for

Fran:

they're going to

Fran:

either you're

Fran:

going to quit

Fran:

or they're going to

Fran:

remove you

Fran:

so

Fran:

protect your team

Fran:

because they're probably

Fran:

their colleagues

Fran:

as well

Fran:

and also for human

Fran:

for human

Fran:

for humanitarian reasons

Fran:

don't let people

Fran:

suffer for

Fran:

for the

Fran:

for the sake of

Fran:

just a few

Fran:

movie layers

Fran:

right

Fran:

I don't care about

Fran:

that but I'm a little

Fran:

bit punk here

Fran:

I will say

Karol:

but you know

Karol:

what from my own

Karol:

experience when I

Karol:

learned that I have

Karol:

ADHD and I started

Karol:

sharing and talking

Karol:

about that with

Karol:

people

Karol:

and meeting

Karol:

with my previous

Karol:

employer

Karol:

and that was very

Karol:

interesting that

Karol:

all of the sudden

Karol:

I had things

Karol:

on slack

Karol:

from people

Karol:

I didn't even know

Karol:

at the time

Karol:

in the company

Karol:

they were like

Karol:

hey

Karol:

I heard you have

Karol:

ADHD

Karol:

I also have ADHD

Karol:

but I haven't

Karol:

come out of the

Karol:

closet

Karol:

nobody knows

Karol:

but I want you

Karol:

to know because

Karol:

you have

Karol:

ADHD so you'll

Karol:

understand

Karol:

and there was so many

Karol:

people that didn't

Karol:

feel

Karol:

psychologically

Karol:

safe

Karol:

in the company

Karol:

to be

Karol:

themselves

Karol:

and to be

Karol:

open about

Karol:

themselves

Karol:

so instead of being

Karol:

open about

Karol:

themselves they

Karol:

we just basically

Karol:

created an internal

Karol:

community

Karol:

of people with

Karol:

ADHD

Karol:

and that worked

Karol:

to an extent because

Karol:

we started

Karol:

doing body doubling

Karol:

sessions etc

Karol:

to just help us

Karol:

work through

Karol:

certain blocks

Karol:

I didn't feel

Karol:

along as well

Karol:

and then you feel

Karol:

that you belong

Karol:

to somewhere

Karol:

right

Karol:

but it's

Karol:

it's

Karol:

it's very difficult

Karol:

the psychological

Karol:

safety

Karol:

topic is a very

Karol:

broad topic

Karol:

and there are so

Karol:

many reasons why

Karol:

somebody might

Karol:

not

Karol:

feel safe

Karol:

psychologically

Karol:

in a company

Karol:

and then

Karol:

act out

Karol:

based on that

Karol:

lack of safety

Karol:

and create

Karol:

even more troubles

Karol:

in

Karol:

the core topic

Karol:

that we were

Karol:

talking about

Karol:

for example

Karol:

so adoption of

Karol:

event driven

Karol:

yeah

Karol:

yeah

Fran:

so

Fran:

let me let me

Fran:

get back

Fran:

because I was

Fran:

I was reading the

Fran:

comments

Fran:

yeah

Fran:

and

Fran:

we have some

Fran:

questions

Karol:

we have some

Karol:

really good

Karol:

technical questions

Karol:

and I think we

Karol:

can we can

Karol:

jump to

Karol:

another point

Karol:

of a discussion

Karol:

meaning the evolution

Karol:

of Async API

Karol:

which

Karol:

some of those

Karol:

questions would

Karol:

be very fitting

Karol:

so let me

Karol:

quickly scroll that

Karol:

up because

Karol:

I found one

Karol:

somewhere somewhere

Karol:

somewhere at

Karol:

the beginning

Karol:

of

Karol:

yeah

Fran:

Alexander I have

Fran:

first question

Karol:

yes there we go

Karol:

yes

Karol:

yes

Karol:

cloud event

Karol:

specification

Fran:

if it's

Fran:

you want to

Fran:

reply

Fran:

go ahead

Karol:

I mean

Karol:

it's about

Karol:

included as

Karol:

a recommendation

Karol:

to Async API

Karol:

I have nothing to do

Karol:

with Async API

Karol:

at this point

Fran:

I will say

Fran:

it's

Fran:

mature enough

Fran:

yes

Fran:

not sure how

Fran:

widely adopted

Fran:

it is right now

Fran:

but I think

Fran:

I see it more and

Fran:

more

Fran:

which is good

Fran:

so everything that

Fran:

whatever

Fran:

it is

Fran:

sticking to standard

Fran:

is

Fran:

it's always good

Fran:

so

Fran:

so I will celebrate that

Fran:

now I must clarify

Fran:

some things

Fran:

some people think it's

Fran:

either

Fran:

cloud events or

Fran:

Async API

Fran:

and they are complimentary

Fran:

they

Fran:

we actually tackle

Fran:

different problems

Fran:

right so

Fran:

I wrote a

Fran:

blog post about it

Fran:

and

Fran:

they think it's

Fran:

a blog

Fran:

because I found out

Fran:

at some point

Fran:

people were like

Fran:

even like

Fran:

throwing fire at us

Fran:

right like

Fran:

hey come on

Fran:

say something

Fran:

bad about cloud events

Fran:

somehow think about it

Fran:

and it's like

Fran:

no I'm not gonna say

Fran:

something bad

Fran:

because I always

Fran:

recommended myself

Fran:

I was

Fran:

when I was

Fran:

consulting with Adidas

Fran:

I was

Fran:

I was helping them

Fran:

to adapt

Fran:

Async API

Fran:

they were using Kafka

Fran:

as well

Fran:

and they were

Fran:

already

Fran:

using cloud events

Fran:

and I saw it

Fran:

in action

Fran:

and I think

Fran:

it's pretty cool

Fran:

so

Fran:

let me clarify

Fran:

so cloud events

Fran:

it's defining

Fran:

what's it

Fran:

called

Fran:

the envelope

Fran:

the envelope

Fran:

of the data

Fran:

right

Fran:

pretty much

Fran:

it's not exactly that

Fran:

but it's pretty

Fran:

it's pretty much

Fran:

the envelope of the data

Fran:

so I think about it

Fran:

like

Fran:

enveloped in the

Fran:

in the post

Fran:

in the post

Fran:

system

Fran:

in the postal system

Fran:

you don't send

Fran:

your

Fran:

your letter

Fran:

straight away

Fran:

when you

Fran:

you put it inside

Fran:

a letter

Fran:

right

Fran:

an envelope

Fran:

sorry

Fran:

and then

Fran:

you send the

Fran:

you send the envelope

Fran:

with the letter inside

Fran:

right

Fran:

so that's pretty much it

Fran:

it's like

Fran:

it's a common

Fran:

it's a common

Fran:

envelope

Fran:

it's a format

Fran:

so that

Fran:

all your messages

Fran:

across your system

Fran:

they all follow

Fran:

the same

Fran:

structure

Fran:

when it comes

Fran:

to

Fran:

metadata

Fran:

when it comes to

Fran:

specific data

Fran:

then

Fran:

each one is different

Fran:

right

Fran:

and

Fran:

not even

Fran:

cloud event

Fran:

patches on that point

Fran:

cloud events

Fran:

has a field that

Fran:

it's called data

Fran:

and this is free form

Fran:

you can put there

Fran:

whatever you want

Fran:

now

Fran:

the funny thing

Fran:

about this

Fran:

is that

Fran:

async API

Fran:

helps you

Fran:

define

Fran:

helps you

Fran:

helps you define

Fran:

you know

Fran:

the communication

Fran:

not the communication

Fran:

the messages

Fran:

that your

Fran:

your application

Fran:

that

Fran:

think about microservices

Fran:

for instance

Fran:

your service

Fran:

is sending

Fran:

and or receiving

Fran:

from a topic

Fran:

from a broker

Fran:

from so on

Fran:

right

Fran:

you define this communication

Fran:

but when it comes to

Fran:

defining the message

Fran:

itself

Fran:

the message piece

Fran:

there is a field called

Fran:

payload

Fran:

right

Fran:

and this one

Fran:

is free form

Fran:

so we don't dictate

Fran:

how

Fran:

the payload of a message

Fran:

should look like

Fran:

right

Fran:

this is free form

Fran:

you can put there

Fran:

whatever you want

Fran:

actually in the JSON

Fran:

schema definition

Fran:

this is

Fran:

the value is true

Fran:

because we always want

Fran:

to pass the validation

Fran:

like

Fran:

we don't validate it

Fran:

it's always

Fran:

whatever you put there

Fran:

it's valid

Fran:

right

Fran:

we don't want to get there

Fran:

so there

Fran:

in the payload

Fran:

is where

Fran:

payload

Fran:

and all also

Fran:

headers as well

Fran:

is where cloud events

Fran:

belong

Fran:

right

Fran:

the envelope

Fran:

and as the envelope

Fran:

of the data

Fran:

so actually

Fran:

I think there is a pull request

Fran:

or an issue discussion

Fran:

right now

Fran:

in async API

Fran:

if I recall correctly

Fran:

something I started

Fran:

at some point

Fran:

I want to integrate

Fran:

the two standards

Fran:

in a better way

Fran:

like if you're using cloud events

Fran:

you should be able to somehow

Fran:

natively

Fran:

say it in async API

Fran:

I'm using cloud events

Fran:

the format of the message

Fran:

is cloud events

Fran:

because the cloud events

Fran:

format itself

Fran:

it's then going to tell you

Fran:

which format your data is in

Fran:

is it XML?

Fran:

is it JSON?

Fran:

is it following certain schema definition?

Fran:

so it will be cool if they could if you can already use both together but it would be cool if it could be blended even better right right so so yeah so that is so just to just to be clear on the article because I did some quick Google searching would that be somewhere around May 2019?

Fran:

but the thing

Fran:

I have to update

Fran:

this article

Fran:

at some point

Fran:

is not exactly

Fran:

how it's done

Fran:

anymore

Fran:

yeah

Fran:

so

Fran:

but you see

Fran:

like six years now

Fran:

and I was already

Fran:

recommending this

Fran:

yeah

Karol:

so that's the

Karol:

original article

Karol:

to be updated

Karol:

I see the

Karol:

different sheaters

Karol:

in the description

Karol:

is there

Karol:

as you

Karol:

as you just said it

Karol:

maybe there would be

Karol:

some

Karol:

discrepancies over the past

Karol:

six years

Karol:

yeah

Karol:

because things have changed

Karol:

but

Fran:

that's pretty much it

Fran:

at this point

Fran:

I was exploring

Fran:

and telling people

Fran:

that different ways

Fran:

you could

Fran:

use both

Fran:

different ways to use both

Fran:

now

Fran:

there are

Fran:

let's say

Fran:

best practises

Fran:

for using both

Fran:

that are not describing

Fran:

this article

Fran:

because now in version

Fran:

three of the spec

Fran:

things have changed

Fran:

a little bit

Fran:

so now it's easier

Fran:

we have trades

Fran:

I think we had trades

Fran:

at that point

Fran:

but there are other ways

Fran:

to do it

Fran:

honestly

Fran:

from the top of my mind

Fran:

I don't recall how

Fran:

people are doing it

Fran:

right now

Fran:

but there are

Fran:

let's say

Fran:

best practises

Fran:

so

Fran:

it's not like that

Fran:

like I described

Fran:

in this article

Fran:

yeah, but

Karol:

you know

Karol:

things change

Karol:

article has six years

Karol:

that's only obvious

Karol:

that

Karol:

this will

Karol:

no longer be

Karol:

fully up to date

Karol:

so

Karol:

yeah

Karol:

it will require

Karol:

a little bit of a

Karol:

fixed nup

Karol:

in that sense

Karol:

all right

Karol:

let's see

Karol:

there were some

Karol:

I think

Karol:

oh, quite long questions

Karol:

from

Karol:

Maxim

Karol:

really a packed one

Karol:

best practises

Karol:

for designing

Karol:

data models

Karol:

for messages

Karol:

hmm

Karol:

that's a

Karol:

canonical data model

Karol:

that's packed

Karol:

my personal take is

Karol:

I'm not a fan

Karol:

of

Karol:

canonical data

Karol:

models

Karol:

never

Karol:

will be

Karol:

I seen that happen

Karol:

the larger

Karol:

the org

Karol:

the worse

Karol:

it gets

Karol:

in canonical data

Karol:

models

Fran:

or if you do it

Fran:

you do it as an afterthought

Fran:

so

Fran:

after you've been

Fran:

after you've been

Fran:

having let's say

Fran:

probably hundreds

Fran:

or thousands of

Fran:

message

Fran:

types

Fran:

and you notice a pattern

Fran:

maybe you standardise that

Fran:

because you make it a pattern

Fran:

because it's already a pattern

Fran:

anyways

Fran:

yeah

Fran:

so cool

Fran:

in that case

Fran:

cool but if you do it up front

Fran:

you're probably going to be

Fran:

restricting yourself

Fran:

and

Fran:

unnecessarily

Fran:

well

Fran:

that's

Karol:

that's where I am a fan

Karol:

of domain driven

Karol:

design and bounded

Karol:

contexts

Karol:

with an

Karol:

interoperability

Karol:

topics

Karol:

exactly

Karol:

because then we can define

Karol:

each object

Karol:

several times

Karol:

for each bounded

Karol:

context

Karol:

or each domain

Karol:

separately

Karol:

so a definition of

Karol:

a customer

Karol:

in terms of a

Karol:

customer domain

Karol:

will be a different

Karol:

customer

Karol:

defined in the order

Karol:

domain

Karol:

different attributes

Karol:

even that's still

Karol:

the same

Karol:

core object

Karol:

core

Fran:

data

Fran:

it's still

Fran:

it's still a customer

Fran:

yeah but it's

Fran:

a different representation

Fran:

of the

Fran:

of the data

Karol:

yeah different

Karol:

context of usage

Karol:

which

Fran:

I will link it to the

Fran:

previous question

Fran:

about cloud

Fran:

events

Fran:

it's needed

Fran:

so I'm seeing

Fran:

many people

Fran:

define their canonical

Fran:

data models

Fran:

using cloud

Fran:

events

Fran:

as well

Fran:

so

Fran:

because cloud

Fran:

events is

Fran:

extensible

Fran:

so you can add

Fran:

your fields

Fran:

your own fields

Fran:

whatever you want

Fran:

so

Fran:

you just have to respect

Fran:

certain fields

Fran:

that are mandatory

Fran:

I think

Fran:

maybe one or two

Fran:

are mandatory

Fran:

if I recall correctly

Fran:

the rest are just

Fran:

like optional

Fran:

and you can add more

Fran:

of your own

Fran:

so

Fran:

so some people are

Fran:

opting for that

Fran:

it's not exactly

Fran:

a canonical data model

Fran:

but it's

Fran:

it gets close

Karol:

yeah

Karol:

and a twist

Karol:

which is a lot shorter

Karol:

of a question

Karol:

sharing resources

Karol:

data models

Karol:

between

Karol:

open API

Karol:

spec

Karol:

and async API

Karol:

ooh

Fran:

many people do that

Fran:

yeah

Karol:

I think that's

Karol:

in general

Karol:

that's not a bad idea

Karol:

especially if you're

Karol:

if you're having

Karol:

a

Karol:

integration platform

Karol:

and especially

Karol:

in API-led architecture

Karol:

where you

Karol:

can actually do

Karol:

the domain partitioning

Karol:

and

Karol:

some of your

Karol:

services

Karol:

are

Karol:

at the same time

Karol:

synchronous

Karol:

and asynchronous

Karol:

because you have

Karol:

a lot of

Karol:

orchestration

Karol:

and

Karol:

different things

Karol:

are happening

Karol:

within the

Karol:

composition layer

Karol:

yeah

Karol:

that means that

Karol:

that sharing

Karol:

would be

Karol:

actually a very good thing

Fran:

actually

Fran:

I actually recommend it

Fran:

because

Fran:

and actually the reason

Fran:

why async API

Fran:

is so similar

Fran:

it's still so similar

Fran:

to open API

Fran:

it's because we

Fran:

we want to be

Fran:

both of them

Fran:

as interpretable

Fran:

as possible

Fran:

to be

Fran:

as a fun fact

Fran:

while we were

Fran:

designing version

Fran:

three of the spec

Fran:

that is

Fran:

it's a current version

Fran:

of async API

Fran:

we were even

Fran:

considering

Fran:

if there could be

Fran:

a way

Fran:

to make it

Fran:

like

Fran:

not the same as

Fran:

open API

Fran:

because we were

Fran:

already convinced that

Fran:

we had to change

Fran:

certain things

Fran:

in the spec

Fran:

but to

Fran:

in coordination

Fran:

with open API

Fran:

which we're always

Fran:

in contact

Fran:

in constant

Fran:

attach

Fran:

the two communities

Fran:

right

Fran:

so

Fran:

to tell them

Fran:

that hey

Fran:

we're going in

Fran:

this direction

Fran:

because of this

Fran:

this and that

Fran:

we're putting

Fran:

operations on the

Fran:

root level of the spec

Fran:

instead of

Fran:

inside the

Fran:

the channels

Fran:

or

Fran:

like for instance

Fran:

if you're familiar

Fran:

with open API

Fran:

they have the

Fran:

operations get put

Fran:

pause and so on

Fran:

inside the path

Fran:

right

Karol:

yeah

Fran:

instead of at the root level

Fran:

but there were some

Fran:

already some people

Fran:

in the open API

Fran:

community saying

Fran:

we should move

Fran:

the operations

Fran:

to the root level

Fran:

and then link them

Fran:

with dollar ref

Fran:

and so on

Fran:

right so

Fran:

instead of

Fran:

instead of having

Fran:

them nested

Fran:

inside the path

Fran:

and so on

Fran:

that's the direction

Fran:

we took for async API

Fran:

so operations are now

Fran:

in the root level

Fran:

as a

Fran:

as a first

Fran:

first class

Fran:

citizens

Fran:

people call it

Fran:

right

Fran:

and we were thinking

Fran:

if we

Fran:

if we managed to

Fran:

convince the

Fran:

open API

Fran:

faults to do the same thing

Fran:

at some point

Fran:

we could even

Fran:

if not converge

Fran:

into a single spec

Fran:

we could build really

Fran:

close

Fran:

really really close

Fran:

right

Karol:

right

Fran:

but

Karol:

that is

Fran:

this is a

Fran:

philosophical

Karol:

philosophical problem

Karol:

because

Karol:

if you look at

Karol:

the

Karol:

days of saw

Karol:

and soap services

Karol:

the

Karol:

soap had

Karol:

a very different

Karol:

philosophy because

Karol:

soap was

Karol:

primarily used

Karol:

to build

Karol:

business services

Karol:

so they

Karol:

they didn't

Karol:

represent an

Karol:

object

Karol:

they represent a

Karol:

function

Karol:

while if we're

Karol:

looking at

Karol:

rest

Karol:

rest by nature

Karol:

is supposed to

Karol:

represent an

Karol:

object and

Karol:

functions on

Karol:

that specific

Karol:

object

Karol:

so

Karol:

moving

Karol:

the

Karol:

operations down

Karol:

to the

Karol:

to that level

Karol:

would

Karol:

shift back to

Karol:

kind of

Karol:

shift back to

Karol:

business services

Karol:

rather than

Karol:

representing

Karol:

objects

Karol:

and

Karol:

and that

Karol:

philosophically

Karol:

might

Karol:

rub

Karol:

rub people

Karol:

the wrong way

Karol:

when we're

Karol:

looking at

Karol:

these kind of

Karol:

services

Karol:

this would be

Karol:

against

Karol:

rest principles right

Fran:

that's my point

Fran:

so open API

Fran:

is

Fran:

not

Fran:

a

Fran:

spec for

Fran:

rest

Fran:

APIs

Fran:

it is

Karol:

very true

Karol:

but the

Karol:

underlying

Karol:

philosophy is

Karol:

coming from

Karol:

the rest

Karol:

specific

Karol:

yes

Fran:

I will call it

Fran:

like it's

Fran:

for

Fran:

HTTP APIs

Fran:

in most

Fran:

in most cases

Fran:

I will say

Fran:

it's a

Fran:

resource-based

Fran:

HTTP APIs

Fran:

and some

Fran:

cases

Fran:

it's RPC

Fran:

APIs

Fran:

like you will do with GraphQL

Fran:

but instead of GraphQL

Fran:

you use your own

Fran:

syntax

Fran:

with endpoints

Fran:

containing the action

Fran:

and so on

Fran:

which is pretty common as well

Karol:

but that would be a very interesting

Karol:

evolution to actually

Karol:

shift back to that

Fran:

my point with this here is that

Fran:

we are

Fran:

we've been trying

Fran:

we're not trying right now

Fran:

but we've been trying

Fran:

the thing is that

Fran:

this is a little bit like forcing

Fran:

the things

Fran:

to

Fran:

like to match together

Fran:

when they are not the same thing right

Fran:

and it's not even representing the same

Fran:

kind of world

Fran:

so it's a different thing altogether

Fran:

now

Fran:

whatever can be reused like schema

Fran:

definitions and so on

Fran:

they're still the same

Fran:

mostly the same

Fran:

actually not the same

Fran:

they you can use

Fran:

so OpenAPI uses the

Fran:

the latest

Fran:

schema draft

Fran:

but the most

Fran:

used

Fran:

OpenAPI version which is

Fran:

two point

Fran:

something

Fran:

or the three

Fran:

I think it's

Fran:

still two point something

Fran:

it's still swagger

Fran:

the most used

Fran:

it's on

Fran:

JSON schema

Fran:

draft four

Fran:

you can use

Fran:

any of these schema

Fran:

versions with

Fran:

some API

Fran:

for that very reason

Fran:

so

Fran:

they were interpretable

Fran:

right

Fran:

so yeah

Fran:

so

Fran:

we actually recommend it

Fran:

because it's a

Fran:

it's a really good idea

Fran:

because think about it

Fran:

like

Fran:

or picture this example

Fran:

you have a REST API

Fran:

or next to the API

Fran:

you receive a request

Fran:

and as a result

Fran:

you publish a message to a broker

Fran:

right

Fran:

as a result

Fran:

as a side effect of this request

Fran:

you publish a message to the broker

Fran:

containing

Fran:

some information

Fran:

that was in the request body

Fran:

right

Fran:

say for instance

Fran:

you are signing up a user

Fran:

or something like that

Karol:

I mean that's a

Karol:

that's a very common use case

Karol:

in API led architecture

Karol:

where you have the

Karol:

channel layer

Karol:

the first layer

Karol:

or as

Karol:

in mules what they call it

Karol:

the experience layer

Karol:

you basically call it

Karol:

call a REST service

Karol:

and then that translates into an

Karol:

asynchronous call

Karol:

for warding that event

Karol:

the request is actually

Karol:

a disguised event

Karol:

and the only

Karol:

reason why it's

Karol:

done over a

Karol:

synchronous

Karol:

call

Karol:

is because

Karol:

we want to

Karol:

give back

Karol:

the information

Karol:

that it was

Karol:

accepted for processing

Karol:

to that system

Karol:

so that system can move on

Karol:

and it's easier

Karol:

to consume

Karol:

a

Karol:

HTTP

Karol:

API

Karol:

than to figure out

Karol:

how do we connect

Karol:

directly to the broker

Karol:

from each

Karol:

separate team

Karol:

to learn that broker

Karol:

and then you

Karol:

move that complexity

Karol:

to the integration platform

Karol:

to learn

Karol:

how to use the broker

Karol:

and facilitate that use

Karol:

so that's a very

Karol:

common use case

Karol:

and also a common

Karol:

use case is

Karol:

right now

Karol:

popping up in

Karol:

API management

Karol:

where they

Karol:

offer

Karol:

protocol

Karol:

mediation

Karol:

to mediate

Karol:

from a REST

Karol:

call to

Karol:

an event

Karol:

or from

Karol:

an event

Karol:

to a REST call

Karol:

like a web

Karol:

call

Fran:

in fact

Fran:

it's a

Fran:

you know

Fran:

if you

Fran:

are building

Fran:

with a

Fran:

mindset of

Fran:

microservices

Fran:

you might have

Fran:

an API

Fran:

that is

Fran:

a REST API

Fran:

or an HTTP

Fran:

API that is

Fran:

receives a

Fran:

post

Fran:

call

Fran:

let's say

Fran:

slash

Fran:

sign up

Fran:

whatever

Fran:

sign user

Fran:

app or whatever

Fran:

this microservice

Fran:

might have

Fran:

its own database

Fran:

where it

Fran:

stores

Fran:

the

Fran:

it stores

Fran:

the

Fran:

you know

Fran:

the user that

Fran:

just

Fran:

have signed up

Fran:

right now

Fran:

and as a result

Fran:

either the microservice

Fran:

or the database

Fran:

triggers

Fran:

a change data

Fran:

capture

Fran:

broker

Fran:

saying hey

Fran:

there's a new

Fran:

there's a new

Fran:

user

Fran:

in the database

Fran:

for whoever is

Fran:

interested in this

Fran:

right so

Fran:

this is very useful

Fran:

and it's

Fran:

it's constrained

Fran:

to this

Fran:

like

Fran:

like it doesn't

Fran:

it wouldn't even make

Fran:

sense for people to

Fran:

connect to

Fran:

to the broker

Fran:

to consume this kind

Fran:

of events

Fran:

from a browser

Fran:

or something like that

Fran:

because

Fran:

why would you like

Fran:

you want to have immediate

Fran:

feedback right like

Fran:

yeah you

Fran:

you want to have immediate

Fran:

feedback if the

Fran:

if the

Fran:

if the operation succeeded

Fran:

or not

Fran:

so

Fran:

and you have the database

Fran:

there you don't have to

Fran:

send the message

Fran:

to some other system

Fran:

that will process

Fran:

this message at some

Fran:

point and

Fran:

will come back

Fran:

with a response

Fran:

or no no no

Fran:

it's just

Fran:

here now like

Fran:

it's either saving it

Fran:

into the database

Fran:

or not

Fran:

cool yeah give me the

Fran:

response immediately

Fran:

so that makes sense

Fran:

and then

Fran:

post this event

Fran:

for whoever else

Fran:

let's say welcome

Fran:

email

Fran:

analytics

Fran:

whatever

Fran:

any other

Fran:

reason

Fran:

you might want to

Fran:

know that a user

Fran:

when a user

Fran:

has signed up right

Karol:

yeah that's a

Karol:

that's an

Karol:

issue of

Karol:

system responsiveness

Karol:

as an

Karol:

architectural

Karol:

characteristic

Karol:

so it doesn't

Karol:

really matter if you

Karol:

put that in a database

Karol:

for sourcing later

Karol:

or you put that on

Karol:

a topic with a

Karol:

persistence

Karol:

you

Karol:

go on

Karol:

without

Karol:

with your day

Karol:

the system goes on

Karol:

because it gets a

Karol:

response that

Karol:

or an

Karol:

acknowledgement that

Karol:

something was published

Karol:

it doesn't

Karol:

matter then

Karol:

how it's later processed

Karol:

and that's the

Karol:

lovely quality

Karol:

of putting the

Karol:

event broker

Karol:

as a transition

Karol:

between two systems

Karol:

to

Karol:

decouple them

Karol:

on the

Karol:

on that

Karol:

oh my God

Karol:

time

Karol:

time coupling

Karol:

temporal coupling

Karol:

so that's

Karol:

that's that

Karol:

in that sense

Karol:

is very lovely

Karol:

it's very useful

Karol:

all right

Karol:

Fran we've

Karol:

been talking for

Karol:

the last

Karol:

one and a half

Karol:

hour

Karol:

nearly 140

Fran:

and if we stay here

Fran:

for two more

Fran:

hours we can keep

Fran:

talking

Karol:

oh we could

Karol:

we could go on

Karol:

and on

Karol:

and on and on

Karol:

so

Karol:

dear audience

Karol:

I see we still

Karol:

have an audience

Karol:

that's that's

Karol:

awesome

Fran:

that's awesome

Fran:

and people say

Karol:

I love it

Karol:

I love it

Karol:

so

Karol:

kudos to all of you who

Karol:

who are staying

Karol:

still with us

Karol:

and still watching us

Karol:

if not

Karol:

you can always watch

Karol:

the recording

Karol:

before we jump

Karol:

into the QA

Karol:

I do

Karol:

would like to have

Karol:

some announcements

Karol:

and one of the announcements

Karol:

is that we already

Karol:

have a second

Karol:

livestream

Karol:

planned

Karol:

and the second

Karol:

livestream is not

Karol:

going to be about

Karol:

tech

Karol:

it's going to be about

Karol:

recruitment

Karol:

which I think it's

Karol:

going to be

Karol:

very very interesting

Karol:

we're going to be talking

Karol:

with Gabi Preston

Karol:

Pfeiffers

Karol:

and Philip Pointon

Karol:

they're really

Karol:

well versed

Karol:

people

Karol:

calling out

Karol:

the bullshit

Karol:

in IT

Karol:

recruitment

Karol:

so

Karol:

you know

Karol:

jump in on

Karol:

the 22nd of

Karol:

July

Karol:

to hear them out

Karol:

and also

Karol:

I'll reiterate

Karol:

some things

Karol:

so if you want to

Karol:

read some articles

Karol:

about enterprise

Karol:

application integration

Karol:

and EDA

Karol:

included

Karol:

Visit bridgingthegap.eu.com

Karol:

or just

Karol:

subscribe to

Karol:

our sub-stack

Karol:

for the sake of it

Karol:

and then if you

Karol:

want to

Karol:

learn more about

Karol:

async

Karol:

API

Karol:

visit the

Karol:

initiative site

Karol:

and

Karol:

if you got

Karol:

hooked on

Karol:

our conversation

Karol:

about the

Karol:

organisational problems

Karol:

or

Karol:

the

Karol:

psychological

Karol:

safety

Karol:

of people

Karol:

and you want to

Karol:

be a better leader

Karol:

and you want to

Karol:

actually start

Karol:

addressing those

Karol:

topics

Karol:

here's a QR code

Karol:

for

Karol:

Fran's

Karol:

book

Karol:

it's still in the

Karol:

making

Karol:

but Fran is

Karol:

giving the

Karol:

early bird

Karol:

available

Karol:

so you can

Karol:

take a look

Karol:

and read it

Karol:

comment it

Karol:

I think Fran you

Karol:

would welcome

Karol:

all feedback

Karol:

right?

Fran:

Yeah actually it's

Fran:

already happening

Fran:

we're having discussions

Fran:

in Notion

Fran:

about

Fran:

not a lot

Fran:

I must say

Fran:

which is normal

Fran:

like reading

Fran:

a book

Fran:

and maybe feedback

Fran:

on a book

Fran:

might feel

Fran:

intimidating

Fran:

to some people

Fran:

not just because

Fran:

of technical knowledge

Fran:

but also like

Fran:

this guy might

Fran:

think that

Fran:

I'm

Fran:

you know like

Fran:

I'm here

Fran:

I'm bothering him

Fran:

or something

Fran:

no no no

Fran:

I'm used to

Fran:

getting feedback

Fran:

respectful feedback

Fran:

obviously

Fran:

constructive

Fran:

and we're already

Fran:

having some

Fran:

discussions there

Fran:

in Notion

Fran:

with the early

Fran:

readers

Fran:

and that's cool

Fran:

I only

Fran:

I've only written

Fran:

three chapters

Fran:

so far

Fran:

if everything goes

Fran:

well I think there

Fran:

will be

Fran:

23

Fran:

so yeah

Fran:

I am

Fran:

I only have to

Fran:

write

Fran:

plenty more

Fran:

no pressure

Fran:

no pressure

Karol:

you're going to

Karol:

lean pop the

Karol:

hell out of that

Fran:

yeah

Fran:

I'm kind of

Fran:

doing like

Fran:

lean pop

Fran:

but on Notion

Fran:

pretty much the same thing

Karol:

only different medium

Fran:

exactly

Fran:

and but yeah

Fran:

I'll take off

Fran:

I'm taking

Fran:

August

Fran:

off

Fran:

kind of off

Fran:

like from

Fran:

the rest of the

Fran:

work

Fran:

just to focus on

Fran:

on the book

Fran:

and

Fran:

most likely

Fran:

September as well

Fran:

because I want to

Fran:

have it ready by October

Fran:

this year

Fran:

I hope this

Fran:

I have these

Fran:

these words don't

Fran:

bite me in the future

Fran:

like

Fran:

you said that last year

Fran:

I mean

Fran:

if I don't

Fran:

publish it by

Fran:

October bear with me

Fran:

please

Fran:

it's my first time

Fran:

writing a book

Fran:

so

Fran:

I don't know

Fran:

how to estimate

Fran:

this kind of work

Fran:

because I've never

Karol:

done it

Karol:

it's difficult

Karol:

yeah

Fran:

and especially because

Fran:

I'm finding things

Fran:

that I never

Fran:

expected like having

Fran:

to read papers

Fran:

you know

Fran:

about psychology

Fran:

and

Fran:

psychology books

Fran:

and interviewing

Fran:

psychologists

Fran:

and so on

Fran:

so it's

Fran:

that's

Fran:

difficult

Fran:

it's going

Fran:

completely unexpected

Fran:

about

Fran:

so yeah

Fran:

which is exciting

Karol:

because you're

Karol:

you're learning a lot

Karol:

while doing that

Fran:

so that's why I'm

Fran:

writing the book

Fran:

like I'm not

Fran:

I'm not

Fran:

I'm writing the book

Fran:

for me like I did

Fran:

with this in KPI

Fran:

it was like

Fran:

so I can learn

Fran:

properly about this

Fran:

by writing it down

Fran:

and by interviewing

Fran:

people and by

Fran:

listening to their

Fran:

stories and so on

Fran:

and then

Fran:

sharing with people

Fran:

so

Fran:

in a year or so

Fran:

I have to write

Fran:

the second edition

Fran:

because I made

Fran:

a lot of mistakes

Fran:

who knows

Fran:

that's

Fran:

that's

Karol:

I mean

Karol:

I just looked through

Karol:

the lovely fundamentals

Karol:

of software architecture

Karol:

by Mark Richards

Karol:

and Neil Ford

Karol:

they just released

Karol:

a second edition

Karol:

completely different read

Karol:

I have the first edition

Karol:

somewhere

Karol:

oh yeah

Karol:

like right here

Karol:

next to me

Karol:

I think it was

Fran:

still

Fran:

the first edition

Fran:

was still useful

Fran:

but now

Fran:

oh yeah

Fran:

with experience

Fran:

then you get to make

Fran:

a better book

Fran:

it doesn't mean that

Fran:

the first edition

Fran:

is going to be wrong

Fran:

it's just that it's probably

Fran:

not going to be

Fran:

exactly how I want it

Karol:

yeah they

Karol:

they learned a lot

Karol:

and they were like

Karol:

yep

Karol:

that's interesting

Karol:

yeah

Fran:

cool man

Karol:

yeah all right

Karol:

so that said

Karol:

oh yes

Karol:

the QR code for the

Karol:

early reader

Karol:

to get access to the book

Karol:

so yes

Karol:

have that one

Karol:

sorry

Karol:

should have deleted

Karol:

the original ship

Karol:

one

Karol:

that's fine

Karol:

from the list

Karol:

it would have been easier

Karol:

so if you want to be

Karol:

the early reader

Karol:

and leave friends

Karol:

and comments

Karol:

just scan the QR

Karol:

go ahead

Karol:

it's

Karol:

it's

Karol:

yeah it's not a

Karol:

large cost to just

Karol:

join on the

Karol:

process of building

Karol:

that book

Karol:

from scratch

Karol:

it's interesting to watch

Karol:

believe me

Karol:

that said

Karol:

we're going to be

Karol:

closing the session

Karol:

in a moment

Karol:

but that leaves us

Karol:

open to

Karol:

any questions

Karol:

any QA questions

Karol:

out of the box

Karol:

out of the blue

Karol:

I mean we do have

Karol:

one from

Karol:

Alexander

Karol:

end-to-end traceability

Karol:

whoo

Karol:

batch message splits

Karol:

that's

Karol:

I can take that one

Karol:

because I've been

Karol:

I've seen

Fran:

I'm not an expert in traceability

Fran:

but I know some

Fran:

I mean you can take it

Fran:

because

Karol:

yeah it's

Karol:

it's actually not that

Karol:

that complicated

Karol:

as long as you have

Karol:

proper logging monitoring

Karol:

and observability

Karol:

within your systems

Karol:

so basically

Karol:

if you want to trace

Karol:

your

Karol:

your

Karol:

events

Karol:

and you have this kind of

Karol:

a batch scenario

Karol:

where you

Karol:

split it up

Karol:

you need to

Karol:

just make up a

Karol:

specific pattern

Karol:

which means that

Karol:

you have some sort of

Karol:

a correlation ID

Karol:

and then when you

Karol:

split it up

Karol:

just append that

Karol:

correlation ID

Karol:

with additional

Karol:

identifiers of those

Karol:

individual

Karol:

child elements

Karol:

and that makes

Karol:

that traceability

Karol:

really pop

Karol:

so

Karol:

you can still search

Karol:

all of those

Karol:

elements

Karol:

by using the original

Karol:

batch

Karol:

identifier

Karol:

the correlation ID

Karol:

there

Karol:

and then you can

Karol:

search individual

Karol:

child elements

Karol:

by the

Karol:

appended

Karol:

identifier

Karol:

right

Karol:

so that

Karol:

will be

Karol:

sufficiently unique

Karol:

because if you

Karol:

use

Karol:

UL ID

Karol:

that will be very unique

Karol:

very nice

Karol:

with a

Karol:

timestamp

Karol:

and then

Karol:

if you

Karol:

append

Karol:

you just append

Karol:

that's not a big problem there

Karol:

right

Karol:

so that's a

Karol:

that's a good one

Karol:

for that

Fran:

and you can

Fran:

define it on

Fran:

ASIC API using

Fran:

the correlation ID

Fran:

field on

Fran:

ASIC API

Fran:

so it's covered

Karol:

yeah exactly

Karol:

that's a

Karol:

that's a good thing

Karol:

and that's also

Karol:

a very standard thing

Karol:

to do in

Karol:

open API

Karol:

spec as well

Karol:

to define those

Karol:

metadata

Karol:

and

Karol:

correlators

Karol:

usually for

Karol:

open

Karol:

API that's

Karol:

within the

Karol:

HTTP

Karol:

headers

Karol:

right

Karol:

so

Karol:

it's workable

Karol:

it's just a

Karol:

matter of

Karol:

figuring out

Karol:

what the

Karol:

mapping is

Karol:

between those

Karol:

right

Karol:

all right

Karol:

I know we do

Karol:

have a little bit

Karol:

of a delay

Karol:

between

Karol:

what we see

Karol:

in the

Karol:

stream studio

Karol:

and what is

Karol:

out on

Karol:

LinkedIn

Karol:

and

Karol:

YouTube

Karol:

but I think

Karol:

we already

Karol:

passed through

Fran:

yeah and

Karol:

if not

Fran:

if not

Fran:

if people

Fran:

leave some

Fran:

questions after

Fran:

maybe people

Fran:

are watching

Fran:

the report

Fran:

if they want to

Fran:

leave some

Fran:

questions

Fran:

ping me

Fran:

or ping

Fran:

cattle

Fran:

and if I don't

Fran:

get the notification

Fran:

please

Fran:

cattle with me now

Fran:

and I will reply after

Fran:

that so

Fran:

it doesn't have to be

Fran:

sure

Fran:

we can make

Fran:

it a synchronous

Karol:

yeah we can make

Karol:

it a synchronous

Karol:

exactly

Karol:

so for all of you

Karol:

wondering and

Karol:

willing to

Karol:

share the stream

Karol:

or if you

Karol:

found it

Karol:

captivating the stream

Karol:

will be saved

Karol:

in a

Karol:

raw form

Karol:

on LinkedIn

Karol:

it will be also

Karol:

available on

Karol:

bridging the gap

Karol:

YouTube channel

Karol:

I do plan to

Karol:

do a little bit

Karol:

of touch-ups

Karol:

here and there

Karol:

over the stream

Karol:

and release it

Karol:

as a normal video

Karol:

but for the moment

Karol:

it was

Karol:

it will be

Karol:

available

Karol:

as a

Karol:

live stream

Karol:

recording

Karol:

on YouTube

Karol:

so you can

Karol:

always come back

Karol:

rewatch it

Karol:

figure out

Karol:

what you want

Karol:

to hear

Karol:

you know

Karol:

and ask additional

Karol:

questions

Karol:

if I find those

Karol:

in the comments

Karol:

somewhere

Karol:

I'll make sure

Karol:

to relay those

Karol:

to Fran

Karol:

if you don't

Karol:

tag him

Karol:

and then

Karol:

we'll draft

Karol:

an asynchronous

Karol:

answer to those

Karol:

all right

Karol:

that's it

Karol:

because I don't see

Karol:

any more

Karol:

questions popping

Karol:

in in chat

Karol:

thank you all

Karol:

for attending

Karol:

thank you Fran

Karol:

for coming to

Karol:

the first

Karol:

edition of

Karol:

Loosely Coupled

Karol:

that's absolutely

Karol:

amazing

Karol:

having you here

Karol:

and

Fran:

thank you for inviting

Fran:

me

Fran:

that was really

Fran:

my pleasure

Karol:

and

Karol:

everybody

Karol:

have a lovely

Karol:

evening

Karol:

rest of the night

Karol:

wherever you are

Karol:

maybe rest of the day

Karol:

and

Karol:

till next time