注意數(shù)據(jù)模型中的關系。在設計數(shù)據(jù)模型時,添加表和列時,或者編寫查詢時,要從長遠角度考慮實體間的關系如何影響性能和可擴展性的情形。在設計數(shù)據(jù)模型時,要考慮到將來的數(shù)據(jù)庫分割和其他可能的數(shù)據(jù)需求。在實現(xiàn)了數(shù)據(jù)模型后,才發(fā)現(xiàn)它有問題,此時修復的成本很高,可能是設計階段修復它的成本的100倍。事先考慮好,仔細策劃數(shù)據(jù)模型。要采用范式,考慮將來可能如何分割數(shù)據(jù)庫及應用可能有哪些需求。 ...
利用每一次失敗來學習,吸取重要的教訓。采用事后分析方法,在故障較少的環(huán)境中推測故障。應用理由:我們從失敗中才能獲得最深刻的教訓,而不是從成功中。不要讓任何失敗浪費掉。從每次失敗中學習,發(fā)現(xiàn)需要改正的技術、人員和流程上的問題。...
要一直能回退代碼。確保所有的版本都能夠回退,在一個階段或QA環(huán)境中,要實踐回退功能。在生產環(huán)境中,當必須用它解決突發(fā)事件時,要使用回退功能整理代碼,制定幾個簡單的流程,確保能夠回退自己的代碼。 ...
使用QA降低被交付產品的成本,提高編碼生產力,識別質量變化動向,減少缺陷,但不要用QA提高質量。適用于雇用員工通過測試而不是通過編碼來提高生產力的情況。總是通過QA從過去的失誤中獲取經(jīng)驗。當雇用一個QA人員得到的價值大于一個程序員工作的價值時,就應該雇用一個QA人員。...
抓住每個機會學習。持續(xù)地從失誤和成功中學習。觀察客戶或者使用AB測試決定哪種方法可行。采用事后分析的方法,從生產環(huán)境發(fā)生的偶然事件和問題中學習。...
盡可能減少系統(tǒng)中的時間緩存。由于大多數(shù) RDBMS(關系數(shù)據(jù)庫管理系統(tǒng))具有ACID屬性,要擴展具有時間約來的系統(tǒng)非常難。要慎重考慮對于約來的需水,如要水從用戶看到物品直到購買它時它一直可用。對于某些邊緣情況,補償用戶的失望比不能拓展系統(tǒng)好得多。...
在Web服務之前部署頁面緩存。選擇一種緩存系統(tǒng)并部署它。通過緩存和響應之前生成的動態(tài)請求,迅速響應靜態(tài)對象的調用,從而降低Web服務器的負載。頁面緩存是分流動態(tài)請求并有效進行擴展的好方法。...
使用正確的HTTP響應頭,確保緩存Ajax調調用。除了絕對需要實時更新數(shù)據(jù)的Ajax調調用,其他都適用。應用方式:正確修改HTTP頭Last-Modified、ache-contro1和Expires。...
利用CND(Content Delivery Network,內客分發(fā)網(wǎng)絡)分擔站點流量。在成本合理的情況下,再選擇哪些內容最適合。大多數(shù)CDN利用DNS(域名服務或城名服務器),從而替站點來提供內容。...
盡可能減少系統(tǒng)中的時序約束。當你想添加一個約東,使某個物品或對象在用戶的兩個動作之間維持某個狀態(tài)時,放松業(yè)務原則中的約束。由于大多數(shù)RDBMS的ACID屬性,擴展具有時序約束的系統(tǒng)非常因難。...