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)。根據使用者屬性或資料值設計及套用條件式存取政策,強制執行精細的存取規則。請定期檢查並更新這些政策,以符合不斷變化的安全性和法規遵循要求。詳情請參閱「精細存取控管總覽」。
❑  
啟用資料庫防刪除功能,防止資料庫遭到意外或未經授權刪除。搭配嚴格的 IAM 控制項,將刪除權限限制在少數受信任的使用者或服務帳戶。此外,請設定 Terraform 等基礎架構自動化工具,加入防護措施,避免意外刪除資料庫。這種分層做法可將重要資料資產的風險降至最低。詳情請參閱「避免不小心刪除資料庫」。

記錄和監控

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

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

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

用戶端程式庫

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

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

支援

為盡可能縮短停機時間和降低影響,請明確定義事件角色和職責,確保能迅速協調應對 Spanner 相關問題。 詳情請參閱「取得支援」。

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

成本管理

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

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