Spanner 上市檢查清單

這份檢查清單列出在 Spanner 上推出正式版應用程式前,需要考慮的事項。這份指南並非詳盡無遺,但著重於說明如何盡量減少風險、提升效能,以及確保符合業務和營運目標,提供系統化方法,協助您順利且可靠地部署 Spanner。

此檢查清單分成以下部分:

設計、開發、測試及最佳化

如要充分運用 Spanner 的分散式架構,達到高效能和高擴充性,就必須最佳化結構定義設計、交易和查詢。嚴格的生產規模和端對端測試可確保系統能處理實際工作負載、尖峰負載和並行作業,同時將生產瓶頸或失敗的風險降至最低。

核取方塊 活動
❑  
設計結構定義時,請考量擴充性和 Spanner 的分散式架構。請遵循最佳做法,例如選取適當的主鍵和索引,避免資源使用率不均,並考慮針對相關資料進行最佳化,例如交錯處理表格。請參閱結構定義設計最佳做法,確保結構定義在預期工作負載下,能同時支援高效能和可擴充性。
❑  
盡量減少鎖定,並盡可能提高效能,以最佳化交易和查詢。使用 Spanner 的交易模式 (例如鎖定讀寫、強式唯讀和分區 DML 陳述式),平衡一致性、輸送量和延遲時間。使用唯讀交易進行查詢、批次處理以提高 DML 輸送量上限,或使用分區 DML 陳述式進行大規模更新和刪除,盡量縮小鎖定範圍。從具有不同隔離層級的系統 (例如 PostgreSQL 或 MySQL) 遷移時,請使用交易,避免效能瓶頸。詳情請參閱「交易」。
❑  
進行嚴格的大規模負載測試,驗證結構定義設計、交易行為和查詢效能。模擬尖峰和高並行情境,模擬實際應用程式負載,包括各種交易形狀和查詢模式。在這些條件下評估延遲時間和輸送量,確認資料庫設計和執行個體拓撲符合效能需求。在開發期間反覆進行負載測試,以最佳化及改善實作方式。
❑  
將負載測試範圍擴大至所有互動服務,而不只是獨立應用程式。模擬完整的使用者歷程,以及批次載入或存取資料庫的管理工作等平行程序。在正式版 Spanner 執行個體設定上執行測試,確保負載測試驅動程式和服務在地理位置上與預期的正式版部署拓撲一致。這種全方位做法可預先找出潛在衝突,確保實際運作期間資料庫效能順暢。
❑  
為確保查詢成效可預測,請使用已測試工作負載的最佳化工具版本。根據預設,Spanner 資料庫會使用最新版的查詢最佳化工具。在受控環境中定期評估新版最佳化工具,確認相容性並提升效能後,再更新預設版本。詳情請參閱查詢最佳化工具總覽
❑  
請確保查詢最佳化工具統計資料為最新狀態,以支援有效率的查詢執行計畫。 雖然系統會自動更新統計資料,但如果發生大規模資料修改 (例如大量插入、更新或刪除)、新增索引或結構定義變更等情況,請考慮手動建構新的統計資料套件。 為維持最佳查詢效能,請務必讓查詢最佳化工具統計資料保持在最新狀態。

遷移 (選用)

資料庫遷移是全面性的程序,需要深入瞭解每個遷移歷程的具體細節。遷移策略應考量下列事項:

核取方塊 活動
❑  
為遷移轉換作業制定詳細的標準作業程序 (SOP)。包括應用程式推出、資料庫切換和自動化步驟,盡量減少人為介入。請事先找出潛在的停機時間,並告知利害關係人。導入強大的監控和警報機制,即時追蹤遷移程序,並及時偵測任何異常狀況。確保切換程序包含驗證檢查,確認資料完整性,以及遷移後應用程式的功能。
❑  
準備詳細的回復計畫,以便在遷移期間發生重大問題時,還原至來源系統。在預先發布環境中測試備援程序,確保程序可靠,且執行時停機時間最短。清楚定義觸發備援的條件,並確保團隊已接受訓練,能迅速有效地執行這項計畫。

部署作業

妥善規劃部署作業,可確保 Spanner 設定符合工作負載的可用性、延遲和擴充性需求,同時考量地理位置和作業方面的因素。調整大小、資源管理、容錯移轉情境和自動化作業可將風險降至最低、確保最佳效能,並防止重要作業期間發生資源限制或中斷情形。

核取方塊 活動
❑  
請確保 Spanner 執行個體設定 (單區域、雙區域或多區域) 符合應用程式工作負載的可用性和延遲時間需求,同時也考量地理位置因素。根據預期儲存空間大小、流量模式和建議使用率上限,計算目標運算容量,確保區域或地區發生中斷時有足夠的容量。啟用自動調度資源,因應流量高峰。您可以設定運算能力上限,建立費用安全防護機制。詳情請參閱「運算能力、節點和處理單元」。
❑  
如果您使用雙區域或多區域執行個體設定,請選擇主要區域,盡量減少從延遲時間最敏感的位置部署的服務,寫入應用程式時的延遲時間。 測試不同領導者區域對作業延遲的影響,並進行調整以提升應用程式效能。規劃容錯移轉情境,確保應用程式拓樸能夠在區域中斷期間,適應主要區域的變更。詳情請參閱「修改資料庫的主要區域」。
❑  
適當設定標記和標籤,以利作業清晰度,並追蹤 Google Cloud 資源。使用標記依環境或工作負載類型將執行個體分組。使用中繼資料標籤,協助進行費用分析和權限管理。詳情請參閱「使用標記控管存取權及整理執行個體」。
❑  
評估是否需要 Spanner 暖機,尤其是預期服務推出後流量會突然暴增的情況。 在高初始負載下測試延遲時間,可能會發現需要預先啟動暖機,才能確保最佳效能。如果需要暖機,請產生人為負載。詳情請參閱「在應用程式啟動前預先為資料庫暖機」。
❑  
部署前請先查看 Spanner 限制和配額。 如有必要,請在 Google Cloud 主控台中申請增加配額,以免在尖峰時段受到限制。請留意硬性限制 (例如每個資料庫的資料表數量上限),以免部署後發生問題。詳情請參閱配額與限制
❑  
使用 Terraform 等自動化工具佈建及管理 Spanner 執行個體,確保設定有效率且不會出錯。如要管理結構定義,建議使用 Liquibase 等工具,避免在更新期間意外捨棄結構定義。詳情請參閱「搭配使用 Terraform 和 Spanner」。

災難復原

建立完善的災難復原 (DR) 策略,對於保護資料、盡量減少停機時間,以及確保業務在發生意外故障時能持續運作,至關重要。定期測試還原程序並自動備份,有助於確保作業準備就緒、符合復原目標,以及根據機構需求提供可靠的資料保護措施。

核取方塊 活動
❑  
為 Spanner 定義完善的災難復原策略,包括資料保護、復原目標和故障情境。根據業務持續性要求,訂定明確的復原時間目標 (RTO) 和復原點目標 (RPO)。指定備份頻率、保留政策,並使用時間點復原 (PITR) 功能,盡量減少故障造成的資料遺失。請參閱「災害復原總覽」,找出合適的工具和技術,確保應用程式符合可用性、可靠性和安全性規定。詳情請參閱「Spanner 中的資料保護和復原解決方案」白皮書。
❑  
建立備份和還原程序的詳細說明文件,包括各種復原情境的逐步指南。定期測試這些程序,確保作業準備就緒,並驗證 RTO 和 RPO 規定。測試應模擬真實的故障狀況和情境,找出缺口並改善復原程序。詳情請參閱「還原總覽」。
❑  
實作自動備份時間表,確保資料保護作業一致且可靠。設定頻率和保留設定,以符合業務需求和法規義務。使用 Spanner 的備份排程功能,自動建立、管理及監控備份。詳情請參閱「建立及管理備份排程」。
❑  
根據應用程式的執行個體設定拓撲調整容錯移轉程序,盡量減少服務中斷時的延遲影響。測試災難復原情境,確保應用程式在領導者區域移至容錯移轉區域時,仍能有效運作。詳情請參閱「修改資料庫的主要區域」。

查詢最佳化工具和統計資料管理

管理查詢最佳化工具版本和統計資料,對於維持可預測且有效率的查詢效能至關重要。使用經過測試的版本並保持統計資料最新狀態,可確保穩定性、防止效能發生非預期的變化,並最佳化查詢執行計畫,尤其是在進行重大資料或結構定義修改時。

核取方塊 活動
❑  
根據預設,Spanner 資料庫會使用最新版的查詢最佳化工具。為確保查詢成效可預測,請使用已測試工作負載的最佳化工具版本。定期在受控環境中評估新版最佳化工具,確認相容性並提升效能後,再更新預設版本。詳情請參閱查詢最佳化工具總覽
❑  
請確保查詢最佳化工具統計資料為最新狀態,以支援有效率的查詢執行計畫。 雖然系統會自動更新統計資料,但如果發生大規模資料修改 (例如大量插入、更新或刪除)、新增索引或結構定義變更等情況,請考慮手動建構新的統計資料套件。 為維持最佳查詢效能,請務必讓查詢最佳化工具統計資料保持在最新狀態。
❑  
在某些情況下,例如大量刪除後,或產生新統計資料可能會對查詢效能造成無法預測的影響時,建議釘選特定統計資料套件。這樣一來,直到產生並測試新套件前,查詢效能都能維持一致。請定期檢查是否需要固定統計資料,並在更新的套件通過驗證後取消固定。詳情請參閱「查詢最佳化工具統計資料套件」。

安全性

實施存取控管措施是保護機密資料,以及防止未經授權存取 Spanner 的必要做法。透過強制執行最低權限存取精細的存取控管機制 (FGAC)資料庫刪除保護機制,您可以將風險降至最低、確保法規遵循,並防範意外或惡意行為,保護重要資產。

核取方塊 活動
❑  
為所有存取資料庫的使用者和服務帳戶,按照最低權限原則審查及實作 Identity and Access Management (IAM) 政策。只指派執行特定工作所需的必要權限,並定期稽核存取權控管權限,確保符合這個模式。使用權限最少的服務帳戶執行自動化程序,降低未經授權存取的風險。詳情請參閱 IAM 總覽
❑  
如果應用程式需要限制存取資料表中的特定資料列、資料欄或儲存格,請實作精細的存取權控管 (FGAC)。根據使用者屬性或資料值設計及套用條件式存取政策,強制執行精細的存取規則。請定期檢查並更新這些政策,確保符合不斷變化的安全和法規遵循需求。詳情請參閱精細存取權控管總覽
❑  
實作自動備份時間表,確保資料保護作業一致且可靠。設定頻率和保留設定,以符合業務需求和法規義務。使用 Spanner 的備份排程功能,自動建立、管理及監控備份。詳情請參閱「建立及管理備份排程」。
❑  
啟用資料庫防刪除功能,避免有人意外或未經授權即刪除資料庫。搭配嚴格的 IAM 控制項,將刪除權限限制在少數信任的使用者或服務帳戶。此外,請設定 Terraform 等基礎架構自動化工具,加入防護措施,避免資料庫遭到意外刪除。這種分層做法可將重要資料資產的風險降至最低。詳情請參閱「避免誤刪資料庫」。

記錄和監控

有效的記錄和監控功能對於掌握資料庫作業、偵測異常狀況及確保系統健康狀態至關重要。透過稽核記錄、分散式追蹤、資訊主頁和主動式快訊,您可以快速找出並解決問題、提升效能,以及符合法規遵循要求。

核取方塊 活動
❑  
啟用稽核記錄,擷取資料庫活動的詳細資訊。根據法規遵循和作業需求,適當設定稽核記錄層級,以便監控存取模式並有效偵測異常狀況。請注意,稽核記錄可能會變得很大,尤其是 DATA_READDATA_WRITE 要求,因為系統會記錄這些要求的所有 SQL 和 DML 陳述式。詳情請參閱「 Spanner 稽核記錄」。

將這些記錄檔轉送至使用者定義的記錄檔值區,可讓您最佳化記錄檔保留費用 (前 30 天不收費),並使用記錄檔檢視畫面精細控管記錄檔存取權。
❑  
使用 OpenTelemetry 檢測應用程式邏輯,以收集用戶端指標,並分配追蹤記錄和觀測資料。設定 OpenTelemetry 檢測作業,從 Spanner 擷取追蹤記錄和指標,確保全面掌握應用程式效能和資料庫互動情形。詳情請參閱「使用 OpenTelemetry 擷取自訂用戶端指標」。
❑  
建立及設定監控指標,以視覺化方式呈現查詢效能、延遲時間、CPU 使用率和儲存空間用量。 您可以使用這些指標即時追蹤及分析資料庫效能。詳情請參閱「使用 Cloud Monitoring 監控執行個體」。
❑  
為重要指標定義以閾值為準的監控快訊,主動偵測及解決問題。針對高查詢延遲、儲存空間可用性偏低或流量異常暴增等情況設定快訊。將這些快訊與事件回應工具整合,以便迅速採取行動。詳情請參閱建立 Spanner 指標的警告

用戶端程式庫

設定作業標記、工作階段集區和重試政策,對於最佳化效能、偵錯問題及維持 Spanner 的復原能力至關重要。這些措施可提升可觀測性、減少延遲,並確保有效處理工作負載需求和暫時性錯誤,使系統行為符合應用程式需求。

核取方塊 活動
❑  
設定用戶端程式庫,使用有意義的查詢要求和交易標記。您可以使用要求和交易標記,瞭解查詢、讀取和交易。 建議您在代碼中使用應用程式元件、要求類型或使用者情境等內容比對中繼資料,以便進行強化偵錯和內省。確保代碼顯示在查詢統計資料和記錄中,方便進行效能分析和疑難排解。詳情請參閱「解決要求標記和交易標記問題」。
❑  
在用戶端程式庫中啟用工作階段集區,即可最佳化工作階段管理。設定集區設定 (例如工作階段下限和上限),以符合工作負載需求,同時盡量縮短延遲時間。定期監控工作階段用量,微調這些參數,確保工作階段集區能持續提供效能優勢。詳情請參閱「工作階段」。
❑  
在少數情況下,您需要設定重試的預設用戶端程式庫參數 (包括最大嘗試次數和指數輪詢間隔),以平衡復原能力和效能。請詳盡測試這些政策,確保符合應用程式需求。詳情請參閱「設定自訂逾時和重試」。

支援

為盡量減少停機時間和影響,請明確定義事件角色和職責,確保能及時協調回應 Spanner 相關問題。 詳情請參閱「取得支援」。

核取方塊 活動
❑  
建立明確的事件應變架構,定義所有參與管理 Spanner 相關事件的團隊成員角色和職責。指派事件角色,例如事件指揮官、通訊主管和主題專家 (SME),確保事件期間的協調和溝通效率。制定並記錄識別、提報、減輕及解決問題的程序。請參閱這份 Google SRE 工作手冊,瞭解事件回應和事件管理的最佳做法。定期進行事件回應訓練和模擬,確保團隊已做好準備,並提升團隊有效管理高壓情境的能力。

成本管理

實作自動調度資源和增量備份等成本管理策略,可確保資源得到有效運用,並大幅節省成本。根據工作負載需求調整資源佈建,並最佳化非正式環境,進一步降低支出,同時維持效能和彈性。

核取方塊 活動
❑  
評估及購買 Spanner 適用的 CUD,降低可預測工作負載的費用。與以量計價模式相比,這些承諾可大幅節省費用。分析過往的使用模式,判斷最佳的 CUD 承諾。詳情請參閱「承諾使用折扣」和「Spanner 定價」。
❑  
監控運算能力使用率,並調整佈建的資源,以維持建議的 CPU 使用率。過度佈建運算資源可能會導致不必要的費用,而佈建不足則可能影響效能。請按照建議的Spanner CPU 使用率上限指南操作,確保資源配置符合成本效益。
❑  
啟用自動調度資源功能,根據工作負載需求動態調整運算容量。這可確保在負載尖峰期間發揮最佳效能,同時在活動量較低的期間降低成本。設定具有上下限的調度政策,控管費用並避免過度調度。詳情請參閱自動調度總覽
❑  
使用增量備份來降低備份儲存空間成本。 增量備份只會儲存上次備份後出現的資料異動。與完整備份相比,這可大幅降低儲存空間需求。將增量備份納入備份策略。詳情請參閱「增量備份」。
❑  
選取最合適的執行個體設定,並在環境閒置時取消佈建資源,以最佳化非正式環境的成本。舉例來說,您可以在下班後縮減非重要環境的規模,或是自動調整開發和測試情境的資源規模。這種做法可將成本降到最低,同時維持作業彈性。