Loosely Coupled - Adopting Event-Driven Architecture
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:
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:
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