
譯者丨布加迪
策劃丨徐杰承
老式的單體應用程序正逐步被微服務分解和取代。大大小小的企業都在進行這種轉型,但這并不意味著轉型就很容易。在企業進行微服務轉型的過程中是存在諸多挑戰的,但有一些選擇可以簡化工作。
轉型原因
企業向微服務轉型出于幾個原因。一個應用程序被分解成小塊后,測試起來更容易、部署起來更快速。這種模塊化還為開發人員和團隊帶來了范圍更明確的職責。
然而,即使最積極、最能干的公司也需要關注以下幾個重要的問題,才能確保成功轉型:
- 在重寫大量代碼時如何保持質量?
- 如何理解所有活動組件?
- 如何觀察自己的環境?
- 如何監測影響?
這些問題的答案歸結為兩大方面:可觀察性和監測。雖然許多開發人員將兩個術語混為一談,但兩者之間還是存在一些細微的差別的。
可觀察性首先出現在整條鏈路中。系統或應用程序必須是可觀測的,之后才能被監測。實際上,這意味著需要安裝操作系統層面的服務或代理,而對應用程序而言,則需要公開端點。一旦公開了關鍵信息,就可以對其進行監測。監測告訴您哪些內容損壞了(或即將損壞)、以及其中的損壞原因。
注意事項
從單體架構向微服務轉型應對用戶透明。為了實現這個目標,您的監測系統需要考慮一些關鍵問題。
- 是否可以通過提供足夠的正常運行時間和可用性,滿足客戶的需求?
- 應用程序響應速度是否夠快?
- 發現問題并排除問題需要多久?
- 開發人員如何管理變更?
不妨讓我們更詳細地了解以一下這些問題、以及如何應對它們:
1. 是否可以通過提供足夠的正常運行時間和可用性,滿足客戶的需求?
在大多數情況下,對于目前的單體應用程序,您已經有了這個問題的答案。接下來將介紹的是面向客戶的應用程序的正常運行時間,以及部署或計劃外中斷導致的停機時間。
就微服務而言,跟蹤正常運行時間與單體程序很相似,但在開發“關鍵路徑”微服務時需要確定更多的數據點。比如說,如果將登錄邏輯提取為單獨的微服務,前端微服務的可用性可能會上升。然而,登錄服務停機時間將對您的用戶產生重大影響。
換句話說,這個問題的答案對于微服務來說比較復雜,但是適當的工具和從始至終跟蹤請求的能力將幫助您實現這一目標。
2. 應用程序響應速度是否夠快?
在單體應用程序中,活動組件更加靠近——所有組件都在同一環境中。但在微服務中,由于請求不再通過單體應用程序來傳輸,而是可能向不同的微服務生成多個請求,因此向分布式微服務轉型將影響應用程序的響應能力。
為了解決這個問題,您需要監測自己的應用程序和基礎設施,專注于監測技術管理結構中的智能化和可視化。通過獲取從請求到結果的指標,并通過多個微服務和系統對其進行跟蹤,能夠為您提供所需的見解和答案。
3. 發現問題并排除問題需要多久?
單體應用程序中的一個重大問題可能會使整個系統陷入停頓。然而,當系統建立在解耦和模塊化的微服務架構上時,其中的問題可能是潛伏性的,這將更加難以發展。
快速識別問題的能力需要可觀察性和監測的共同支持。因此,微服務的組件需要可觀察性,以便對其進行監測。而在出現問題時,需要警告提供詳細信息,以縮短排除和解決故障的時間。比如說,沒有其他信息的“CPU使用率高”警報幾乎沒有用處。但如果警報顯示“在X時間段內系統上的CPU使用率持續保持高位”,并有能夠顯示過去幾分鐘內進程使用大量CPU資源的視圖。這種警報會大大縮短解決故障的時間。
4. 開發人員如何管理變更?
開發人員的情緒可能難以衡量,但這非常重要。減員在企業生命周期的任何階段都是一種風險,尤其是當您正在進行重大轉型時,減員對企業的影響將更加顯著。
解決這個問題的最簡單方法是,是通過與相關團隊進行非正式對話,或者對開發人員進行較正式的調查。即便您開發團隊中的大部分人都感受到了單體架構的弊端,并希望進行這種轉型,但了解團隊中每個開發人員的想法仍非常重要。
工具幫助
工具很重要,這點毫無疑問。工具有助于確定和衡量服務級別指標(SLI),這些指標會影響您的服務級別目標(SLO)。借助良好的工具,您可以實現快速的啟動運行,并減少麻煩。
向微服務轉型應該會對您的SLI/SLO帶來積極的影響,但若要做到胸有成竹,唯一的辦法是借助良好的可觀察性、更好的監測,以及對環境整體的了解。
自建or開源
決定使用哪些工具時,許多企業的本能反應是自己搞。畢竟,沒有人比自己的開發人員或SRE團隊更了解本企業的可觀察性和監測需求?事實上,“自己搞”工具(尤其是要做到有效和準確)困難重重,且容易出錯。大多數選擇自己開發工具的企業,都會后悔走這條艱難的道路。
另外的選擇是走開源路線。Prometheus + Jaeger + Grafana架構可滿足您在轉型期間的大部分需求。
在這種架構中,您將使用安裝在系統上或作為庫包含在應用程序代碼中的Prometheus客戶端。客戶端捕獲指標后將其公開,供Prometheus服務器抓取并存儲在時序數據庫中。
Jaeger執行分布式跟蹤,為通過微服務系統的事務捕獲指標和數據。
同時,Grafana與Prometheus和Jaeger數據源一起提供可視化和儀表板。
這種開源架構讓您有機會根據需要來修改和配置工具。它還可能直接支持一些基本的使用場景。當然其缺點是,對于每個工具,您都需要緊跟版本,更新安全補丁及配置變動。此外,開源解決方案常常會在以后帶來擴展方面的難題。隨著更多微服務不斷構建,管理軟件和存儲遙測數據的成本都會上升。因此在選擇工具時,建議企業還是要從自身需求角度出發。
總結
當企業從單體架構像微服務轉型時,所面臨的挑戰是確保順利轉型,同時自始至終保持(或提高)應用程序的質量。而在這個過程中,可觀察性和監測是保持質量的關鍵。


























