重點摘要#

  • 應用程式的初始設計是基於當前的業務需求和條件,但未來會變化
  • 透過拉伸關鍵維度(用戶量、資料量、交易量等)來找出設計中的隱藏極限
  • 在設計還是虛擬的時候重新設計,比上線後再改要便宜得多
  • 維度應該單獨拉伸,也要組合拉伸,以找出不同的斷裂點

詳細內容#

一個應用程式的設計最初是基於指定的業務需求、現有技術、預期資料量和可用資源。這個解決方案在當前環境中能夠正常運作,但這只是起點。

拉伸關鍵維度#

取出這個解決方案,拉伸關鍵維度,看看什麼會斷裂。例如:系統變得非常受歡迎、客戶數大增、交易量翻倍、或者資料保留從一週變為六個月。

透過拉伸,架構師可以驗證:

  • 基礎設施容量:計畫中的基礎設施是否能容納這些增長?極限在哪裡?
  • 處理時間餘裕:每天是否有足夠的時間完成預期的處理量?是否有應對「忙碌日」或故障恢復的餘裕?
  • 資料存取方式:保存一週資料時有效的存取方式,在六個月資料量下是否仍然可用?
  • 水平擴展路徑:當負載增加時,應用程式如何跨硬體擴展?過渡路徑是什麼?
  • 災難復原:如果資料量增加且分散在更多基礎設施上,還能順利復原嗎?

基於這些拉伸測試的結果,可以在設計階段就識別出需要重新設計的部分。在設計還是虛擬的、技術選擇尚未鎖定、業務資料尚未儲存的時候重新設計,成本遠低於上線後再改。

— By Stephen Jones