Ibdel sistema eżistenti b'mod sigur
LestĦares il-kuntratti attwali tas-sistema waqt li tintroduċi bidla. Ikkunsidra l-clients il-qodma, id-data u l-ordni tad-deployment.
Ippubblikat minn TaigaKif niktbu
Iċċekkja kemm fhimtTibdel l-isem ta' kolonna tad-database u taġġorna l-applikazzjoni fl-istess rilaxx. X'jista' xorta jfalli?Agħmel l-eżerċizzju
X'se titgħallem
- Identifika kuntratti tas-sistema li bidla lokali fil-kodiċi tista' taffettwa.
- Spjega bidla fi stadji bil-metodu expand-and-contract.
- Iddistingwi rollback tal-kodiċi mill-irkupru tad-data.
Identifika l-kuntratti tas-sistema madwar il-bidla
Software eżistenti għandu komponenti li jsejħulu, data maħżuna, jobs skedati u proċeduri operattivi. Xi dipendenzi ma jidhrux fil-fajl li trid teditja. Aġent jista’ jipproduċi bidla korretta lokalment li tikser wieħed minn dawn il-kuntratti.
Qabel l-implimentazzjoni, identifika l-komponenti li jaqraw u jiktbu d-data affettwata. Spezzjona r-routes, il-jobs fl-isfond, ir-rapporti u l-integrazzjonijiet esterni. Iċċekkja jekk timijiet oħra jew verżjonijiet eqdem tal-clients jiddependux fuq l-imġiba attwali.
Itlob lill-aġent juri l-evidenza tiegħu għal din il-mappa. Riżultat ta’ tiftix huwa punt utli minn fejn tibda, iżda sejħiet dinamiċi u konsumaturi esterni jistgħu jeħtieġu li persuna responsabbli tikkonferma d-dipendenza.
Agħmel l-imġiba attwali osservabbli
Għal modulu b’dokumentazzjoni dgħajfa, żid kontrolli ffokati fuq l-imġiba li trid tibqa’ stabbli. Dawn il-kontrolli jiddeskrivu l-kuntratt attwali. Ma jistabbilixxux li kull imġiba eżistenti hija mixtieqa.
Jekk l-imġiba attwali tmur kontra rekwiżit, irreġistra l-kunflitt. Tħarisx difett tas-sigurtà sempliċement għax test irreġistrah. Ikseb id-deċiżjoni meħtieġa biex tiddistingwi l-imġiba intenzjonata minn difett.
Uża fixtures realistiċi u mhux sensittivi. Inkludi strutturi qodma tad-data u rekords mhux kompluti fejn jistgħu jseħħu. Skema ġdida ttestjata biss b’data maħluqa reċentement tista’ taħbi problemi fil-migrazzjoni.
Irrevedi t-tranżizzjoni bejn il-verżjonijiet
Ikkunsidra bidla fittizja fl-isem minn customer_name għal display_name. Bidla immedjata fl-isem tista’ tkisser istanza qadima tal-applikazzjoni waqt id-deployment. L-aġġornament taż-żewġ fajls f’pull request waħda ma jagħmilx id-deployment atomiku.
Approċċ fi stadji jista’ jħares il-kompatibbiltà:
- Żid il-field ġdid mingħajr ma tneħħi l-qadim.
- Iddefinixxi kif operazzjonijiet ġodda tal-kitba jżommu l-valuri meħtieġa konsistenti.
- Imla r-rekords eżistenti permezz ta’ proċess li jista’ jerġa’ jinbeda.
- Ivverifika l-kompletezza u l-imġiba tal-komponenti li jaqraw id-data.
- Mexxi l-komponenti li jaqraw id-data għall-field ġdid.
- Neħħi l-field qadim biss wara li ma jibqa’ ebda komponent jużah.
Il-metodu eżatt jiddependi fuq id-database u x-xejriet tal-kitba. Kitba kemm fil-field qadim kif ukoll fil-ġdid tista’ toħloq inkonsistenza jekk operazzjoni waħda tal-kitba tfalli. Tranżazzjoni tad-database jew metodu espliċitu ieħor ta’ sinkronizzazzjoni jistgħu jkunu meħtieġa. Tapplikax dan l-eżempju mingħajr ma tiċċekkja l-garanziji tas-sistema.
Martin Fowler jiddeskrivi din it-tranżizzjoni ġenerali bħala parallel change, magħrufa wkoll bħala expand-and-contract. L-idea ewlenija hija tranżizzjoni kompatibbli qabel it-tneħħija.
Ippjana l-irkupru separatament mir-rollback
Rollback tal-kodiċi jirrestawra verżjoni preċedenti tal-applikazzjoni. Ma jreġġax lura awtomatikament migrazzjoni tad-data. Il-verżjoni l-qadima tista’ ma tifhimx id-data l-ġdida. Migrazzjoni distruttiva tista’ tneħħi informazzjoni li rollback tal-kodiċi ma jistax jirkupra.
Identifika l-azzjoni tal-irkupru għal kull pass. Jista’ jkun sigur li tkompli backfill li jista’ jerġa’ jinbeda. Trasformazzjoni żbaljata tista’ teħtieġ korrezzjoni mid-data sors ippreservata. Operazzjoni distruttiva tista’ teħtieġ proċedura vverifikata ta’ restawr.
Staqsi min huwa responsabbli għad-deċiżjoni tal-irkupru u kemm jista’ jieħu ħin. Tittrattax ‘għandna backups’ bħala evidenza li l-irkupru jissodisfa r-rekwiżit tas-servizz.
Żomm il-bidla faċli biex tiġi riveduta
Issepara tindif mhux relatat mill-bidla funzjonali. Ipprovdi l-pjan tal-kompatibbiltà, ir-riżultati tal-verifika u l-kundizzjonijiet tat-tneħħija fil-pull request. Immarka l-punt li warajh rollback jeħtieġ xogħol addizzjonali.
Aġent jista’ jgħin jispezzjona l-komponenti li jużaw id-data u jħejji kodiċi tal-migrazzjoni. Persuna responsabbli xorta trid taċċetta l-pjan tat-tranżizzjoni u tal-irkupru. Id-disinn finali huwa biss parti waħda minn bidla sigura.
Agħmel l-eżerċizzju
Agħżel bidla żgħira f'field jew API. Elenka kull komponent li jaqra jew jikteb id-data, inklużi jobs fl-isfond. Iddeskrivi l-ewwel pass li jżid mingħajr ma jneħħi, kontroll tat-tranżizzjoni u kundizzjoni għat-tneħħija. Identifika liema pass jista' jipprevjeni rollback.
Niżżel il-folja tax-xogħol (Markdown)Jekk tneħħi din l-għażla, tħassar il-progress kollu ssejvjat f'dan il-browser.
Il-progress jibqa' f'dan il-browser. Ebda kont, ebda traċċar.