Managing Data in Microservices

  Рет қаралды 141,970

InfoQ

InfoQ

Күн бұрын

InfoQ Dev Summit Boston, a two-day conference of actionable advice from senior software developers hosted by InfoQ, will take place on June 24-25, 2024 Boston, Massachusetts.
Deep-dive into 20+ talks from senior software developers over 2 days with parallel breakout sessions. Clarify your immediate dev priorities and get practical advice to make development decisions easier and less risky.
Register now: bit.ly/47tNEWv
--------------------------------------------------------------------------------------------------------------------------------------
Download the slides & audio at InfoQ: bit.ly/2wVAkdN
Randy Shoup shares proven patterns that have been successful at Google, eBay, and Stitch Fix. Shoup covers managing data, the need to isolate a microservice's data store behind the service interface, using events as a first-class tool in the architectural toolbox, techniques for service extraction from a monolithic database and much more.
This presentation was recorded at QCon New York 2017.

Пікірлер: 108
@ClimbAClassic
@ClimbAClassic 6 жыл бұрын
Rewind to 28 minutes to get to the topic
@wartem
@wartem 6 жыл бұрын
ClimbAClassic thanks
@neuemage
@neuemage 6 жыл бұрын
*forward
@tansudasli
@tansudasli 5 жыл бұрын
is that make sense :)
@sn20
@sn20 4 жыл бұрын
@@tansudasli the talk was good. minus the does it make sense. ofcourse I saw it from 28+ climbclassic thanks.
@user-ud8hw4gp6t
@user-ud8hw4gp6t 2 ай бұрын
@@tansudasli does it
@darkopz
@darkopz 5 жыл бұрын
The sad reality is to the initially question is that sometimes we DO have time to do it twice. Why? Because projects set unrealistic expectations for code freezes and release but build in obscene “testing” cycles in which you can essentially rewrite the entire Feature as long as you’ve said you finished the first time. I’ve come across quite a few of these types of companies. As much as one pushes to do it right the first time, it’s not always possible given the project dynamics.
@lironlevi
@lironlevi 3 жыл бұрын
The problem with "do it right the first time" approach is that its an all or nothing mindset. You sometimes dont have the time or knowledge to do it right the first time so you do a far from perfect solution that is still enough to drive the business forward and thats all that matters. The second problem i have with his database approach is that resolving data inconsistencies via compensating actions can quickly become a major source of data inconsistency bugs. Its a lot harder to maintain data consistency without the help a relational database provides in terms of transaction support.
@GiovanniSosa
@GiovanniSosa 5 жыл бұрын
Great advice on TDD and why it's important "Do it right the first time"
@matimon
@matimon 4 жыл бұрын
I really REALLY like this talk and keep coming back to watch it again every few months
@wepranaga
@wepranaga 3 жыл бұрын
I'm really rooting for the quote. don't have time to do it right. but have time to do it twice
@lifedesignguru
@lifedesignguru 3 жыл бұрын
Fantastic talk! Thank you so much.
@l_karuhanga
@l_karuhanga 4 жыл бұрын
'I'm gonna talk about joins'- finally!
@zpengh
@zpengh 3 жыл бұрын
That’s the question I have when I see he separated tables
@umaradilov1489
@umaradilov1489 Жыл бұрын
Great speech !
@vimalneha
@vimalneha 5 жыл бұрын
Excellent talk
@osamaa.h.altameemi5592
@osamaa.h.altameemi5592 3 жыл бұрын
That was awesome talk. Thank you.
@koredeaderele1666
@koredeaderele1666 3 жыл бұрын
good talk, clearly presented
@chrisstakutis6574
@chrisstakutis6574 5 жыл бұрын
Fantastic and so well-done. Especially loved how to think of ACID transactions as a series of events (and backwards to unroll)
@solmonr
@solmonr 3 жыл бұрын
Great talk, but one has to have a great ROI to choose Micro Services.. Sometimes or most of the time it is a showoff from the point of architect, trying to force
@rdean150
@rdean150 6 жыл бұрын
Wait, back up, that last part didn't make sense. Seriously though, great talk. This is a topic that is much harder in practice than the theoretical ideals make it sound, and the speaker clearly understands that and highlights the key aspects that teams must keep in mind throughout their design and implementations. At times it can make you question the ultimate benefits of such an architecture vs the new challenges it creates. And I think that the key is the understanding the problem domain, resources, and true requirements.
@kejiaosui791
@kejiaosui791 4 жыл бұрын
really awesome talk and solved our problems!
@hanifa205
@hanifa205 4 жыл бұрын
Can I Know what problem you have and what solutions you got in this video and worked for you
@alvaromoe
@alvaromoe 3 жыл бұрын
You must work at stitch fix
@joepage3065
@joepage3065 6 жыл бұрын
Great presentation, thanks.
@tansudasli
@tansudasli 5 жыл бұрын
is that make sense
@tmustafad
@tmustafad 6 жыл бұрын
Does it make sense? ahaha . ı really liked the way he expresses the topic and himself. so cool and mind catching session.recommend everyone!
@kaushikvelidandla7010
@kaushikvelidandla7010 2 жыл бұрын
Around 38:41, for materializing the view , he says bunch of items and feedback about each item is a many to many relationship. How ? 1 item can have N feedbacks. Can 1 feedback to associated with M items ? ( Understandable if it's order feedback and each order feedback consists of multiple item feedbacks)
@mdanetzky
@mdanetzky 5 жыл бұрын
What should we do when the transaction rollback fails?
@CronosTsHastaroth
@CronosTsHastaroth 5 жыл бұрын
Cry in a fetal position ?
@SiddharthKulkarniN
@SiddharthKulkarniN 5 жыл бұрын
Waiting for a serious answer.
@VishalGupta9
@VishalGupta9 4 жыл бұрын
What you could do is say the transaction rollback is happening from service D -> C -> B -> A. For example if there was a failure when D sent the event to C. You could have a journal of events. D would send the event once and maybe receive a confirmation whether the event was consumed or not. If D didn't receive a confirmation, it could retry sending the event again. On service C side, let's say it received the event, it could store it in its local journal and try to consume it. If for any reason the event consumption failed, it could retry consuming failed events later or maybe a patch fix could be sent to service C after identifying the bug. Since the failed event is still present in its local journal. It would again try consuming it and maybe succeed now. After succeeding it would pass the event down to event B and so forth.
@zpengh
@zpengh 3 жыл бұрын
Vishal Gupta the rollback could fail too . I think this is a serious problem when it involves money transactions.
@Dth091
@Dth091 3 жыл бұрын
@@zpengh What if the action you take when the rollback fails also fails? What if the code that handles that failure also fails? There's no real guarantee on consistency if you accept the fact that any part of your system can fail, but having good testing and resilience of your systems combined with a good set of tools for your operations teams is a solid way of keeping on top of things. Good alerting, tracing, and logging will be essential to this, along with making sure that your systems/services are written defensively to notice malformed or inconsistent data and fail gracefully.
@zpengh
@zpengh 3 жыл бұрын
The part for shared data is in 31:10
@basilio100
@basilio100 5 жыл бұрын
Not clear abt sagas - how you do "rollback" (compensating) if process broke somewhere in between ? who initializes rollback process? Will that compensation event go to both direction - to A and to D services?....
@robfielding8566
@robfielding8566 5 жыл бұрын
Create[A][t0]
@AndrewBerezovskiy
@AndrewBerezovskiy 5 жыл бұрын
For those thinking to replace transactions with Sagas: don't! ACID was mentioned in the talk but Sagas are NOT ACID! en.wikipedia.org/wiki/ACID_(computer_science). Sagas don't deal with isolation, the I in ACID! Atomicity would also be hard to guarantee because systems can fail on rollback.
@robfielding8566
@robfielding8566 5 жыл бұрын
transactions have existed before computers and RDBs. you can get transactions by having data structures that are amenable to everybody converging on the same state. (ie: compensating transactions). when you are mutating existing records in a DB (which you dont have to do), you are creating a problem that requires the transactions in the first place; namely, undoing updates made to records. more abstractly: if you use a sharpie marker to draw out immutable functional data structures, you have not lost information when you add more structures (ie: extending a linked list where new nodes backpoint to old nodes). if you number new nodes with the current transaction, you can see that if you can't complete the transaction by adding the final node, then you just delete (or ignore) the new objects you were adding. if you use immutable append-only structs, "rollback" is trivial. of course if you have an actual side-effect (ie: launch the missles), then you can't roll back. but an RDB won't solve that problem either. if you want a consistent and mutable database, then you are saying that it's ok for all updates to stop once two halves of the network become isolated, and a vote on what the next state change is cannot pass.
@sandipshrestha7170
@sandipshrestha7170 2 жыл бұрын
what does it mean to have read-only, non authoritative cache? The fulfilment service doesn't store customer's data in it's database right? where is it stored?
@danielschmider5069
@danielschmider5069 3 жыл бұрын
what he says on 30:00 is basically "get rid of all your joins"? decouple your databases, then cache all the data that you WOULD have available?
@f135ta
@f135ta 2 жыл бұрын
Thats what I did! Life without joins - its bliss
@JimmyZ0
@JimmyZ0 2 жыл бұрын
Yep,that is also what I am doing. Use cache instead, your life will be much easier!
@dattannguyen4093
@dattannguyen4093 5 жыл бұрын
The way he talked is super attractive
@ziadirida
@ziadirida 2 жыл бұрын
I wonder if the “private database” for a service in postgresql is also a separate cluster! Is it a separate schema, database or cluster?
@singarajusreedhar
@singarajusreedhar 3 жыл бұрын
How is the SAGA handle failures?
@felipealvarez1982
@felipealvarez1982 6 жыл бұрын
Feel free to give your own talk on the subject.
@MrGYPSYSPADE
@MrGYPSYSPADE 5 жыл бұрын
where is the link to this new open source tech which can check the architectural efficiency of the microservices based systems...this DTMS he mentions? DTMS(Does This Make Sense) Jokes apart...great insight. thanks.
@NikhilDhiman
@NikhilDhiman 6 жыл бұрын
hi, i just want to know how to handle real time data that requires join. If we use a some event to propagate data from services to maintain cache in some other service. How we maintain consistency
@nagyzoli
@nagyzoli 5 жыл бұрын
You have to change the way you think. Leave SQL behind when you go distributed. You have to reuse the old architecture of hierarchy that was the norm before SQL (Think foxPRO, dBase). So basically key value pairs, mongoDB and friends. The "re-creating" of the join mechanism seems stupid a bit.
@tdrake59
@tdrake59 6 жыл бұрын
How many times can you ask "does this make sense?"
@elektrixmk
@elektrixmk 6 жыл бұрын
I wish other speakers did the same instead of just "reading from the prompter".
@lztverygood
@lztverygood 5 жыл бұрын
i kinda like he keep asking this
@Carl-yu6uw
@Carl-yu6uw 5 жыл бұрын
Is a bit condescending I say..does that make sense?
@sn20
@sn20 4 жыл бұрын
I can't believe people like this -"Ask me does it make sense" every 3 sentences. I am surprised and I cannot have sex for 6 months.
@really6717
@really6717 3 жыл бұрын
@@sn20 lol! wth?!
@AI7KTD
@AI7KTD 4 жыл бұрын
Something tells me he's not sure if what he says makes any sense!
@-Jason-L
@-Jason-L 2 жыл бұрын
if you don't start with microservices, you are in reality falling prey to "you don't have time to do it right ? Do you have time to do it twice?". Migrating to microservices is far more complex and time consuming than just doing it right to first time. This is totally avoidable tech debt.
@danielschmider5069
@danielschmider5069 4 жыл бұрын
the audience must be looking absolutely clueless for him to verify if it makes sense every 3 minutes
@JeffChentingwei628
@JeffChentingwei628 3 жыл бұрын
40:38 saga
@bsuperbrain
@bsuperbrain 4 жыл бұрын
Is eBay still on board? 16K methods in a single class?! Applause...
@erenxbjk
@erenxbjk 4 жыл бұрын
i doesn't make sense at all. since i am waiting for him to say this makes sense instead of understanding what he's saying?
@yuchen52
@yuchen52 3 жыл бұрын
It is good talk over all. But why saying "dose this make sense" so many times?
@deepalisuhag
@deepalisuhag 3 жыл бұрын
To gain your confidence 😁
@godblessCL
@godblessCL 4 жыл бұрын
I am not quite sure that every microservice project must used its own database and did all that problematic corrections to have consistence data. If you project is big and you want to scale or you need performance out of db, then you can do that.
@f135ta
@f135ta 2 жыл бұрын
The point is that microservices should be individually scalable. If you have a shared database, thats a single point of failure and also a shared dependency. You can't scale the database without affecting all the connected services. That breaks the rules of microservices being independent. Take this example: You use STRIPE for your payments processing. You share the database with Stripe because "it makes everything easier", then STRIPE decides it needs to take their database offline to update it or scale it or even change it to another technology. That now affects YOU. That is the fundamental point of microservices - you bring all those dependencies into a single place that relates to one service and you communicate with the other services in your application by decoupled methods
@manderskutz
@manderskutz 2 жыл бұрын
Three sentences worth of valuable information stretched across an hour :(
@kaveee971
@kaveee971 6 жыл бұрын
So basically you are sacrificing all the built in features of relational databases such as transactions and implementing your own version of transactions - to me seems like lots of extra work and architectural burden to maintain.
@dovh49
@dovh49 6 жыл бұрын
Muhammad Kamran, if you listen to the speaker he is saying that you do this when you need to scale. It doesn't make sense if you don't need to scale. So, this isn't a problem for most companies and shouldn't be implemented at most companies.
@FellshardYT
@FellshardYT 6 жыл бұрын
I think Muhammad has a point here, though, because what seems silly here as that the primary recommendation is to split core tables to 'service-per-table', which is likely to end up being pretty naive for most monolithic databases. Considering bounded contexts and domains may be more effective _and_ more efficient.
@clray123
@clray123 6 жыл бұрын
dovh49 seems like there are other ways to scale without throwing out decades of database technology and research (clustering? sharding?), but maybe that's just me
@ArchimedesTrajano
@ArchimedesTrajano 6 жыл бұрын
Unfortunately those scaling technologies cost a lot of money and effort to run. Thankfully we have Amazon RDS that does quite a bit for us and even if it is costly, at least they provide that service that can scale up much better than an in-house database team for the most part.
@clray123
@clray123 6 жыл бұрын
Archimedes Trajano reinventing the wheel is surely going to be more costly in the long run than leasing someone else's working wheel. When you are in APPLICATION development, you should be caring about business application logic, not about conundrums of distributed systems design.
@markemerson98
@markemerson98 3 жыл бұрын
Nope: 4 months to deliver a perfect system; How to do that right? Software is never complete, it’s just a version... in reality we do not have time to do it right in all cases...
@nareshgb1
@nareshgb1 6 жыл бұрын
So instead of managing one database (availability, backup and recovery, administration [capacity,performance,deployment,upgrades]) you manage "N" databases. "Makes sense". Makes even more sense with sharded databases - then you multiply "N" by "M" (number of shards)
@clray123
@clray123 6 жыл бұрын
When I watched some early presentations about this shit, I thought they were contriving examples to make them more approachable, but they actually seem serious about it. One database per table?!...
@yahorsinkevich4451
@yahorsinkevich4451 5 жыл бұрын
That's the way to make things scalable. You can't scale single database (well, when it is traditional relational database, not cassandra or so)
@yahorsinkevich4451
@yahorsinkevich4451 5 жыл бұрын
@@clray123 Nobody have mention one single database per table, that is insane. One database per service might have tens ot tables.
@clray123
@clray123 5 жыл бұрын
@Yahor Sinkevich For the great majority of applications scalability of this kind is not an issue at all. The pain in the ass caused by implementing caching and consistency management not to mention simple joins with distributed data without ACID properties is, on the other hand, quite certain. And what is a "service", how do you defined which data belongs to one service and which to another - when it's most likely that you will need to join it at one time or another (else you would have two different applications).
@f135ta
@f135ta 2 жыл бұрын
What are you expecting when you ask "Is this making sense"? A bunch of people to start yelling "No"? - Mildly irritating.
@KenGormanGuitar
@KenGormanGuitar 4 жыл бұрын
By the time this company completes moving all of their entities from the monolithic shared database he references into separate databases, microservices will no longer be in style.
@kungfu71186
@kungfu71186 5 жыл бұрын
This is how you don't do microservices.
@alexeystaroverov4804
@alexeystaroverov4804 5 жыл бұрын
Cut bragging off, please
@TheNikavashnika
@TheNikavashnika 2 жыл бұрын
I don't usually comment on tech talks but I'm a bit upset I wasted an hour or so. Long exposition, contrived examples, zero useful information. The only way this whole talk really makes sense (pun intended) is if you consider it to be a show-off for potential investors.
@abdullahkauchali3896
@abdullahkauchali3896 4 жыл бұрын
"Don't use 2PC for managing ACID transactions - bad for scalability" and then proceeds to re-invent a distributed transaction management system with what he calls "SAGA" and events and state machines! What if the compensating "rollbacks" themselves fail??
@MrMikomi
@MrMikomi 4 жыл бұрын
Stitch Fix has a pretty meh rating of 2.5 stars out of 5 on consumer affairs. 100 data scientists and 100 software engineers can't do anything but polish a turd. Typical wall of greedy VC money in desperate (failed) search for an idea that will make a ton of cash.
@berndeckenfels
@berndeckenfels 5 жыл бұрын
The rhetoric question if you make sense is super annoying to me.
@hotplugin
@hotplugin 6 жыл бұрын
Lame conference.
@DeepakPandey-ij3bz
@DeepakPandey-ij3bz 4 жыл бұрын
Worst
Design Microservice Architectures the Right Way
48:30
InfoQ
Рет қаралды 707 М.
Designing Events-First Microservices
51:30
InfoQ
Рет қаралды 67 М.
ИРИНА КАЙРАТОВНА - АЙДАХАР (БЕКА) [MV]
02:51
ГОСТ ENTERTAINMENT
Рет қаралды 4,2 МЛН
Универ. 13 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:07:11
Комедии 2023
Рет қаралды 6 МЛН
Stupid Barry Find Mellstroy in Escape From Prison Challenge
00:29
Garri Creative
Рет қаралды 20 МЛН
The Evolution of Reddit.com's Architecture
33:11
InfoQ
Рет қаралды 89 М.
Designing Path of Exile to Be Played Forever. Chris Wilson at GDC 2019
59:12
Authentication as a Microservice
50:26
Oracle Developers
Рет қаралды 214 М.
Teen Speaks Over 20 Languages
8:54
THNKR
Рет қаралды 12 МЛН
Scaling Instagram Infrastructure
51:12
InfoQ
Рет қаралды 277 М.
Developing microservices with aggregates - Chris Richardson
1:09:50
SpringDeveloper
Рет қаралды 275 М.
ПОКУПКА ТЕЛЕФОНА С АВИТО?🤭
1:00
Корнеич
Рет қаралды 3,1 МЛН
🔥Идеальный чехол для iPhone! 📱 #apple #iphone
0:36
Не шарю!
Рет қаралды 1,3 МЛН
Какой ПК нужен для Escape From Tarkov?
0:48
CompShop Shorts
Рет қаралды 269 М.
Samsung S24 Ultra professional shooting kit #shorts
0:12
Photographer Army
Рет қаралды 30 МЛН
Игровой Комп с Авито за 4500р
1:00
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 163 М.
Хотела заскамить на Айфон!😱📱(@gertieinar)
0:21
Взрывная История
Рет қаралды 3,8 МЛН