Kubadilisha jina la tovuti bila kupoteza data
Mteja anaomba kubadilisha jina la tovuti kutoka acme-staging kwenda acme. Unabadilisha jina kwenye programu. Ghafla, nakala zote za hifadhidata (backups), picha za skrini (screenshots), na picha ndogo (thumbnails) zinatoweka.
Faili bado zipo kwenye diski. Directory mpya iko tupu tu. Data haikufuata mabadiliko ya jina.
Tulifanya kosa hili katika usanifu wetu wa awali. Tulitumia jina la tovuti kuamua mahali pa kuhifadhi faili.
Ikiwa unahifadhi faili kwenye backups/acme-staging/ na kisha unabadilisha jina la tovuti kuwa acme, programu itatafuta backups/acme/. Inapata folda tupu. Data ya zamani inabaki kwenye folda ya zamani, lakini programu inaichukulia kama data iliyopitwa na wakati kutoka kwa tovuti tofauti.
Majina ya tovuti hubadilika mara kwa mara. Wateja hurekebisha makosa ya uandishi. Timu huhamisha tovuti za staging kwenda kwenye production. Makampuni hujipanga upya.
Tulirekebisha hili kwa kutenganisha jina la kuonyesha (display name) na utambulisho thabiti (stable identifier).
Kila tovuti sasa ina ID ya kipekee. Inaonekana kama site_a1b2c3d4e5f6. ID hii haibadiliki kamwe.
Sasa tunahifadhi faili kwa kutumia ID badala ya jina. Njia ya directory inaonekana kama backups/site_a1b2c3d4e5f6/. Hata kama ukitatua jina la tovuti, njia inabaki vilevile. Data inabaki imeunganishwa.
Kuhamisha watumiaji waliopo kwenda kwenye mfumo huu ndiyo ilikuwa sehemu ngumu. Tulijenga uhamisho wa idempotent. Hii ina maana kwamba mfumo hukagua uwepo wa ID wakati wa kuanza. Ikiwa tovuti haina ID, mfumo huipatia moja. Ikiwa tayari ina moja, mfumo hauigusi.
Pia tulihamisha faili halisi. Ikiwa mfumo utapata folda iliyopewa jina la tovuti, utaibadilisha iwe katika mfumo mpya wa ID.
Hata kumbukumbu (logs) tulizirekebisha. Logs mpya zinatumia ID. Logs za zamani zinatumia jina la tovuti. UI huunganisha zote mbili ili historia yako ionekane mfululizo.
Tulijifunza somo gumu kuhusu uhakiki (validation). Baada ya sasisho, tuliongeza sheria ya kukagua mifumo ya ID. Sheria hiyo ilikuwa kali mno. Ilikataa baadhi ya ID za zamani kutoka kwenye uhamisho wetu. Ghafla, tovuti zilitoweka tena.
Somo ni rahisi: kagua data yako kabla ya kuongeza sheria mpya.
Kutenganisha kile ambacho binadamu huona na kile ambacho mfumo hutumia ni mfumo wa kawaida (classic pattern). Kufanya hivyo baada ya kuzindua ni gharama kubwa na kuna hatari. Tumia ID zisizobadilika (immutable IDs) tangu siku ya kwanza ili kuepuka mtego huu.