可觀察性驅(qū)動(dòng)開(kāi)發(fā)與測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
可觀察性的概念涉及通過(guò)檢查日志、指標(biāo)和跟蹤來(lái)了解系統(tǒng)的內(nèi)部狀態(tài)。這種方法提供了一個(gè)全面的系統(tǒng)視圖,允許進(jìn)行徹底的調(diào)查和分析。
雖然將可觀察性整合到系統(tǒng)中似乎令人望而生畏,但好處是巨大的。一個(gè)著名的例子是 PhonePe,通過(guò)實(shí)施數(shù)據(jù)可觀察性解決方案,它的數(shù)據(jù)基礎(chǔ)架構(gòu)增長(zhǎng)了 2000%,數(shù)據(jù)管理成本降低了 65%。這有助于緩解性能問(wèn)題并最大限度地減少停機(jī)時(shí)間。
可觀察性驅(qū)動(dòng)開(kāi)發(fā) (ODD) 的影響不僅限于 PhonePe。許多組織都體驗(yàn)到了 ODD 的好處,發(fā)現(xiàn)問(wèn)題的可能性提高了 2.1 倍,解決問(wèn)題的平均時(shí)間縮短了 69%。
什么是ODD?
可觀察性驅(qū)動(dòng)開(kāi)發(fā) (ODD) 是一種將左可觀察性轉(zhuǎn)移到軟件開(kāi)發(fā)生命周期最早階段的方法。它使用基于跟蹤的測(cè)試作為開(kāi)發(fā)過(guò)程的核心部分。
在 ODD 中,開(kāi)發(fā)人員在編寫(xiě)代碼的同時(shí)聲明您查看系統(tǒng)內(nèi)部狀態(tài)和過(guò)程所需的輸出和規(guī)范。它適用于組件級(jí)別和整個(gè)系統(tǒng)。ODD 也是一種標(biāo)準(zhǔn)化儀器的功能??梢钥缇幊陶Z(yǔ)言、框架、SDK、API。
什么是 TDD?
測(cè)試驅(qū)動(dòng)開(kāi)發(fā) (TDD) 是一種廣泛采用的軟件開(kāi)發(fā)方法,強(qiáng)調(diào)在編碼之前編寫(xiě)自動(dòng)化測(cè)試。TDD 的過(guò)程包括通過(guò)創(chuàng)建測(cè)試用例來(lái)定義軟件的預(yù)期行為,運(yùn)行測(cè)試以確認(rèn)其失敗,編寫(xiě)最少的必要代碼使測(cè)試通過(guò),并通過(guò)重構(gòu)改進(jìn)代碼。針對(duì)每個(gè)新功能或需求重復(fù)此循環(huán),由此產(chǎn)生的測(cè)試可作為防止未來(lái)潛在回歸的保障。
TDD 背后的哲學(xué)是編寫(xiě)測(cè)試迫使開(kāi)發(fā)人員考慮手頭的問(wèn)題并生成重點(diǎn)突出、結(jié)構(gòu)良好的代碼。遵守TDD可以提高軟件質(zhì)量和需求合規(guī)性,并有助于及早發(fā)現(xiàn)和糾正錯(cuò)誤。TDD被認(rèn)為是提高軟件系統(tǒng)質(zhì)量、可靠性和可維護(hù)性的有效方法。
可觀察性和測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的比較
相似之處
可觀察性驅(qū)動(dòng)開(kāi)發(fā) (ODD) 和測(cè)試驅(qū)動(dòng)開(kāi)發(fā) (TDD) 致力于提高軟件系統(tǒng)的質(zhì)量和可靠性。這兩種方法都旨在確保軟件按預(yù)期運(yùn)行,最大限度地減少停機(jī)時(shí)間和用戶面臨的問(wèn)題,同時(shí)促進(jìn)對(duì)持續(xù)改進(jìn)和監(jiān)控的承諾。
差異
- 重點(diǎn): ODD 的重點(diǎn)是實(shí)時(shí)持續(xù)監(jiān)控軟件系統(tǒng)及其組件的行為,以識(shí)別潛在問(wèn)題并了解系統(tǒng)在不同條件下的行為。另一方面,TDD 會(huì)在錯(cuò)誤對(duì)系統(tǒng)或用戶造成損害之前優(yōu)先檢測(cè)和糾正錯(cuò)誤,并驗(yàn)證軟件功能是否滿足要求。
- 時(shí)間和資源分配:實(shí)施 ODD 需要投入大量時(shí)間和資源來(lái)設(shè)置監(jiān)控和日志記錄工具和基礎(chǔ)設(shè)施。相比之下,TDD 需要在開(kāi)發(fā)階段投入大量時(shí)間和資源來(lái)編寫(xiě)和執(zhí)行測(cè)試。
- 對(duì)軟件質(zhì)量的影響: ODD 可以通過(guò)提供對(duì)系統(tǒng)行為的實(shí)時(shí)可見(jiàn)性來(lái)顯著影響軟件質(zhì)量,使團(tuán)隊(duì)能夠在問(wèn)題升級(jí)之前檢測(cè)并解決問(wèn)題。TDD 還有可能通過(guò)在錯(cuò)誤進(jìn)入生產(chǎn)環(huán)境之前檢測(cè)和修復(fù)錯(cuò)誤來(lái)顯著影響軟件質(zhì)量。但是,如果測(cè)試不全面,錯(cuò)誤仍可能逃避檢測(cè),從而可能影響軟件質(zhì)量。
在生產(chǎn)中從 TDD 轉(zhuǎn)向 ODD
在軟件開(kāi)發(fā)中從測(cè)試驅(qū)動(dòng)開(kāi)發(fā) (TDD) 方法轉(zhuǎn)變?yōu)榭捎^察性驅(qū)動(dòng)開(kāi)發(fā) (ODD) 方法是一個(gè)重大變化。多年來(lái),TDD 一直是在將軟件發(fā)布到生產(chǎn)環(huán)境之前對(duì)其進(jìn)行測(cè)試的既定方法。
雖然 TDD 通過(guò)重復(fù)測(cè)試提供一致性和準(zhǔn)確性,但它無(wú)法深入了解整個(gè)應(yīng)用程序的性能或真實(shí)場(chǎng)景中的客戶體驗(yàn)。通過(guò) TDD 進(jìn)行的測(cè)試是孤立的,不能保證實(shí)時(shí)應(yīng)用程序中沒(méi)有錯(cuò)誤。此外,TDD 依賴于一致的生產(chǎn)環(huán)境來(lái)進(jìn)行自動(dòng)化測(cè)試,這并不代表真實(shí)場(chǎng)景。
另一方面,可觀察性是 TDD 的進(jìn)化版本,它提供對(duì)基礎(chǔ)設(shè)施、應(yīng)用程序和生產(chǎn)環(huán)境的全??梢?jiàn)性。它通過(guò)日志、跟蹤和指標(biāo)等遙測(cè)數(shù)據(jù)確定影響用戶體驗(yàn)和產(chǎn)品發(fā)布的問(wèn)題的根本原因。這種持續(xù)監(jiān)控和跟蹤有助于預(yù)測(cè)最終用戶對(duì)應(yīng)用程序的看法。
此外,有了可觀察性,就可以在代碼到達(dá)源代碼控制之前編寫(xiě)和發(fā)布更好的代碼,因?yàn)樗枪ぞ摺⒘鞒毯臀幕囊徊糠帧?/p>
實(shí)施 ODD 的最佳實(shí)踐
以下是實(shí)施可觀察性驅(qū)動(dòng)開(kāi)發(fā) (ODD) 的一些最佳實(shí)踐:
- 從一開(kāi)始就優(yōu)先考慮可觀察性:從一開(kāi)始就在開(kāi)發(fā)過(guò)程中考慮可觀察性。這將幫助您及早發(fā)現(xiàn)潛在問(wèn)題并實(shí)時(shí)進(jìn)行必要的更改。
- 采用端到端方法:確??捎^察性涵蓋系統(tǒng)的所有方面,包括基礎(chǔ)設(shè)施、應(yīng)用程序和最終用戶體驗(yàn)。
- 監(jiān)控和記錄一切:從所有來(lái)源收集數(shù)據(jù),包括日志、跟蹤和指標(biāo),以全面了解系統(tǒng)的行為。
- 使用自動(dòng)化工具:利用自動(dòng)化的可觀察性工具實(shí)時(shí)監(jiān)控系統(tǒng)并提醒您任何異常情況。
- 與其他團(tuán)隊(duì)協(xié)作:與DevOps、QA 和生產(chǎn)等團(tuán)隊(duì)協(xié)作,以確保將可觀察性集成到開(kāi)發(fā)過(guò)程中。
- 持續(xù)監(jiān)控和改進(jìn):定期監(jiān)控系統(tǒng),分析數(shù)據(jù),并根據(jù)需要進(jìn)行改進(jìn)以確保最佳性能。
- 擁抱持續(xù)改進(jìn)的文化:鼓勵(lì)開(kāi)發(fā)團(tuán)隊(duì)擁抱持續(xù)改進(jìn)的文化,并持續(xù)監(jiān)控和改進(jìn)系統(tǒng)。
結(jié)論
可觀察性驅(qū)動(dòng)開(kāi)發(fā)(ODD)和測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)都在確保軟件系統(tǒng)的質(zhì)量和可靠性方面發(fā)揮著重要作用。TDD 側(cè)重于在 bug 損害系統(tǒng)或其用戶之前檢測(cè)并修復(fù)它們,而 ODD 側(cè)重于實(shí)時(shí)監(jiān)控軟件系統(tǒng)的行為以識(shí)別潛在問(wèn)題并了解其在不同場(chǎng)景下的行為。