zlacker

[parent] [thread] 4 comments
1. 2muchc+(OP)[view] [source] 2021-06-12 12:33:08
In my experience proper abstraction is the key. If you have a clear abstraction and structure you can replace the implementation when you need to without too much disruption. If it’s too leaky you’re screwed.
replies(3): >>goodol+s >>hughrr+K7 >>aparso+P7
2. goodol+s[view] [source] 2021-06-12 12:38:32
>>2muchc+(OP)
100%! Create a good enough solution and put it behind an abstraction that remains stable when you later create an ideal solution
3. hughrr+K7[view] [source] 2021-06-12 13:51:34
>>2muchc+(OP)
Yes. Use a queue abstraction for which there are numerous queues available off the shelf for!
4. aparso+P7[view] [source] 2021-06-12 13:52:35
>>2muchc+(OP)
In my experience, great abstractions without a good data migration blueprint is as about as useful as no abstraction at all.

In this example - great, you have a “queue” abstraction. When you switch to RabbitMQ or Postgres, how do you move your existing data without a quality of service or data loss? It can be difficult with production datastores even if the abstraction within your service is beautiful.

replies(1): >>lolind+dd
◧◩
5. lolind+dd[view] [source] [discussion] 2021-06-12 14:45:31
>>aparso+P7
Isn't migrating a queue super simple? Have a window in which you only add to the new system and you listen to both. When the old queue is empty, delete it.

If you need to keep track of old data, then yes, migration is hard. But queues don't save old data—that's the point of a queue.

[go to top]