It's also perfectly possible to split those things up, and to have them share the same database.
This causes microservice extremists' heads to pop off..
It's also perfectly possible to split those things up, and to have them share the same database.
This causes microservice extremists' heads to pop off..
So much nicer to expose a documented and versioned API (and/or published event stream), so that the consumers of data your service manages have some flexibility at which moment to migrate to the new schema.
The truth is, most things can be made to work - though there are various trade-offs ("shenanigans") involved.
e.g: In my current project, there's a bit that loads large-ish files, parses/converts the data, and loads them (order of tens of thousands of rwos) into SQL tables.
For reasons that best escape me - since after the files are parsed the entire dataset is _literally_ in memory, instead of doing a bulk sql update there- and then, thousands of messages are enqueued to be consumed by a practically unlimited number of lambda functions that then... bomb out as the SQL database hits it's connection limit and keels over.
I guess those shenanigans have better buzzword compliance!
Batching is the way to go, 100%. Remove the network as much as you possibly can.
(still, that doesn't change the fact the code is badly designed)