Julio Biason
5 years ago
4 changed files with 36 additions and 2 deletions
@ -0,0 +1,33 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - One Version To Add, One Version To Remove" |
||||||
|
date = 2019-07-30 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "versions", "upgrades"] |
||||||
|
+++ |
||||||
|
|
||||||
|
A lot of things change during development. One day you need a field, another |
||||||
|
day that field may be completely different. For those cases, use one version |
||||||
|
to add the new field and another to remove. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
You have a database with a lot of customers and their ID is numerical. But for |
||||||
|
some reason, they now need to be strings. Instead of changing the field type |
||||||
|
and doing a whole migration, make a deploy with a new field, in which you'll |
||||||
|
keep the old _and_ the new format going on and, in the next release, remove |
||||||
|
the old field. No downtime. You can even run the migration while the system is |
||||||
|
up, since the new field won't be used. |
||||||
|
|
||||||
|
(I'm simplifying the problem a lot here, 'cause the customer would have |
||||||
|
references all around your system, but you get the point, right?) |
||||||
|
|
||||||
|
I had a problem in which we store the link for an object directly in the |
||||||
|
backend (we shouldn't, that's a frontend problem, but that's a discussion for |
||||||
|
another time); our interface is changing and so should the link. If we did a |
||||||
|
change in the link directly, that would mean the backend would have to be |
||||||
|
deployed _at the same time_ as the new interface; by adding the new link |
||||||
|
format in another field, we can deploy the backend easily without breaking the |
||||||
|
current system. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/log-events", prev_chapter_title="Logs Are For Events, Not User Interface", next_chapter_link="/books/things-i-learnt/monitoring", next_chapter_title="Learn To Monitor") }} |
Loading…
Reference in new issue