Don’t Build a Distributed Monolith - Jonathan "J." Tower - NDC London 2023

Don’t Build a Distributed Monolith - Jonathan "J." Tower - NDC London 2023

NDC Conferences

1 год назад

188,541 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@yarmgl1613
@yarmgl1613 - 23.11.2023 12:37

monolith could also scale horizontally by dividing it into "macro" services: api nodes, shared state manager, and background worker

Ответить
@csm2526
@csm2526 - 06.11.2023 16:08

Except theory nothing is there and I hardly understand a single thing

Ответить
@user-fg6sb3ju6x
@user-fg6sb3ju6x - 06.11.2023 06:16

Don’t forget to mention that you the owner of Trail Head and you like some business.

Ответить
@stilldreamy5181
@stilldreamy5181 - 03.11.2023 23:19

This got me thinking. Let's say you have a website and an app that communicates with your server. Isn't that at least 3 different "micro" services? The backend, the front-end, and the app? Should communicate through an event bus?

Ответить
@seven9766
@seven9766 - 28.10.2023 19:56

hmm. Public interfaces are final except for very limited circumstances. Yes. Really.

Ответить
@maneshipocrates2264
@maneshipocrates2264 - 26.10.2023 19:55

It is very expensive to start with distributed app with cost as you develop the prototype

Ответить
@arnoldhau1
@arnoldhau1 - 26.10.2023 17:40

Those migration patterns like evolution or strangler fig look cool on slides. In real life, in most applications the database is so tightly entagled that you can neither pull much out separately nor can you use a "facade" because the integration happens in the back thorough the database (and assuming instant consistency and locking/concurrency resolution via DB, of course). Now I do not want to advocate green field, I would perfer an evolutionary approach but it is very hard and I have seen it get stuck half way many times as focus shifts and buget runs out, resulting in an application more complex than before.

Ответить
@arnoldhau1
@arnoldhau1 - 26.10.2023 17:36

I did one team many services before, it worked fine and did not at all push us to monolith. We choose that architecture for a reason after all. What I see as main issue, so many people do microservices just because they are cool but do not reflect on it properly (we all learn, after all, but you need to allow for that) and people cut microservcies not by functions, but by data. Sometimes they are treated just like extended database tables.

Ответить
@user-gm2rv8tv4e
@user-gm2rv8tv4e - 23.10.2023 22:57

My tech lead is rejecting to regret have built a distributed monolith, what should I do?

Ответить
@innerthreatcircus5651
@innerthreatcircus5651 - 20.10.2023 17:37

I live in a community very similar to the picture you picked to criticize the distributed monolith. 😂 no hard feelings even though i like to live in here, its not as beautiful and pleasant as the houses of microservices.

Ответить
@Wyvernnnn
@Wyvernnnn - 19.10.2023 06:53

The thing about adding fields in event contracts, making sure the code expects unknown fields and forwards them is a good contender for some gnarly CI tests. Push out an event with a random new field, make sure it gets forwarded all the way to the end of all paths and that nothing crashes.

Ответить
@alexeynezhdanov2362
@alexeynezhdanov2362 - 13.10.2023 16:09

What a narcissistic guy! He's pretty much sure, he's the only one who knows stuff and tries to be funny to hide that. Fails on both fronts.

Ответить
@LanceBryantGrigg
@LanceBryantGrigg - 08.10.2023 23:39

Why do we call it a brownfield project. Could we not have chosen a different colour. rofl.

Ответить
@aparfeno
@aparfeno - 05.10.2023 22:56

In short: we should use common sense.

I've been developing software by that parable for over 20 years and I've been ahead of industry wisdom by 5-10 years.
Xtreme programming -> 90% garbage
J2ee beans - garbage
Microsevices -> special use, otherwise mostly garbage.
Scrum and agile -> 80% garbage
Mockup- based tests - very expensive garbage (you'll see)
And so on.

USE YOUR HEAD and you'll be fine

Here's example if people using their head: Loki' s deployment model. Check it out.

Ответить
@Link-ho8yq
@Link-ho8yq - 05.10.2023 13:47

This is the best introduction to microservices I've found so far: It explains what microservices are, are not, and when to and not to use them.

Ответить
@alexleung842
@alexleung842 - 04.10.2023 11:15

Smart contract Virtual Machines are a modular monolith.

Ответить
@aslkdjfzxcv9779
@aslkdjfzxcv9779 - 29.09.2023 05:10

if you have trouble with MSA youll probably still have trouble with monolith.

ie, it has less to do with the pattern and more to do with the org.

Ответить
@successdev8457
@successdev8457 - 29.09.2023 01:17

Hi
Is Ocelot gateway with Rabbit MQ a ggod solution ?

Ответить
@andrewfigaroa7031
@andrewfigaroa7031 - 26.09.2023 15:53

This is great! I wish I was able to convey these concepts to teams where I have been part of. I was never able to convince team members to take a decoupled approach.

Ответить
@iampuff7
@iampuff7 - 26.09.2023 00:02

I got fired from a job for arguing with the DBA who wanted to have a single database for all the microservices xD

Ответить
@kahnfatman
@kahnfatman - 25.09.2023 18:29

Monoliths are not our nemesis. Microservices could be enemies of the enemies.
And the real enemies are the stake holders and YOU yourselves.

Ответить
@TheGameMakeGuy
@TheGameMakeGuy - 25.09.2023 01:48

Yeah dont build a distributed Monolith. Just build a Monolith.

Ответить
@DominikZogg
@DominikZogg - 14.08.2023 22:33

I often miss the argument that microservices are much easier to replace.

Ответить
@SheeceGardazi
@SheeceGardazi - 07.08.2023 20:37

gRPC?

Ответить
@laughingvampire7555
@laughingvampire7555 - 17.07.2023 06:29

First rule about the microservice club: don't. Our hardware ain't designed for microservices, is designed for multithreaded monoliths.

Ответить
@NibsNiven
@NibsNiven - 09.07.2023 22:50

We need to sell more cloud services... let's turn "monolith" into a dirty word!!

Ответить
@brujua7
@brujua7 - 03.07.2023 05:24

Great talk! Thanks

Ответить
@AlgoristHQ
@AlgoristHQ - 26.06.2023 14:34

I’ve worked on both Greenfield and Brownfield products… The Brownfield products were always more difficult. I completely believe that Brownfield product would be easier if Software Engineering were a more robust field where Clean Code and BDD were understood and the default method of development but I can’t keep up with 1000 line methods in 150 different classes.

Ответить
@adriankal
@adriankal - 24.06.2023 00:42

I don't understand how someone might change table name, yet they can't change message or channel on which they send update. Event bus doesn't solve problems with lack of policy and guards in a team. I would never write a piece of code that changes db structure at runtime. There is no immediate consistency within a monolith in that example either.

Event bus is one of tools that we have, but it's just a tool not holly grail.

What he calls distributed monolith also can work well. The problem is that someone needs to figure out how it works and set rules. The other choice is to take policies and rules from Kafka. First option can be much faster because can be optimized using domain knowledge. Kafka is resource hungry option that gives the safety.

Ответить
@DragonRaider5
@DragonRaider5 - 23.06.2023 12:39

How'd one go about solving the 7th example (order service getting customer data from the customers service)? In my head even if the data is duplicated into the orders service, inserting a lot of customers would lead to the orders service also needing to duplicate them (by listening to some CustomerCreated event), meaning it'd still be impacted by this kind of load on the customers service?

Ответить
@vikramkrishnan6414
@vikramkrishnan6414 - 22.06.2023 13:01

Easiest way to avoid doing microservices wrong: don't do it until it absolutely needs to be done. Debugging distributed calls in real time during prod outages is no joke.

Ответить
@doBobro
@doBobro - 20.06.2023 18:59

It's a very strange dichotomy HA vs IC in the context of microservises/monolith. It's completely orthogonal. You can make HA monolith and IC microservice perfectly fine without any hurdles.

Ответить
@doBobro
@doBobro - 20.06.2023 18:29

If the only issue of monolith (by author words) is deployment issues I take monolith approach 24/7. It's pretty solved class of problems by modern infra.

Ответить
@ethreix800
@ethreix800 - 07.06.2023 20:41

Not having a previous application running for comparison doesn't mean you can only judge the new project by your feelings. There's also deductive reasoning that is used in science all over the place, including math. Sure, actually confirming old and new tech in an experiment is even better, but don't dumb it down to mere feelings either.

Ответить
@EldonElledge
@EldonElledge - 04.06.2023 18:16

Great talk J. Thank you.

Ответить
@nieminenj
@nieminenj - 02.06.2023 11:25

Oh damn i'm strugling with these. Can you come to speak our internal conference about these issues @jonathantower ? :)

Ответить
@simonk1844
@simonk1844 - 27.05.2023 18:35

Thanks very much J.! I started a big microservices project about 4 years ago, and spent a lot of time reading articles and watching presentations; I wish your presentation had existed then as you've summarized the most important parts of all that I learned the long way in just 50 minutes. As always, there is so much more, and I'd love to see a followup presentation with more details, but I'll definitely be passing this link on to anyone who says to me "I'm thinking about using microservices".

Ответить
@pompiuses
@pompiuses - 26.05.2023 09:49

Without execption every monotlih I've worked on the last two decades has been a ball of mud monolith. It requires skill and disipline in application architecture to keep a monolith in good shape over many years. In my experience most developers don't have that. This is where micro services really shine. When the application get small then application architecture matters less (but system architecture matters more).

Ответить
@georgebeierberkeley
@georgebeierberkeley - 25.05.2023 19:24

Sometimes I think microservices is all about politics / management. Everyone wants their own team, their own turf. You can operate independently and choose your tools, data structure, etc. But managing all the cross-talk on the data via the event bus seems like a nightmare. I'm sure I don't know enough about it but it sure seems complicated. Great talk.

Ответить