構(gòu)建云規(guī)模軟件的10項基本實踐(二)

云規(guī)模團隊將其大部分設(shè)計和開發(fā)用于避免、處理、測試和自動從故障場景中恢復(fù),尤其是那些源自他們無法控制的系統(tǒng)的故障場景。

本文來自開源云中文社區(qū)。

開發(fā)

有無數(shù)的資源可以幫助團隊改進軟件開發(fā)實踐。編碼最佳實踐甚至有自己的維基百科頁面。雖然所有這些實踐都很重要,但在比較常規(guī)開發(fā)團隊和云規(guī)模開發(fā)團隊時,兩種不同的實踐尤為突出。

實踐7——故障場景專職工程師

分布式系統(tǒng)越大,系統(tǒng)中至少一個獨立組件發(fā)生故障的可能性越大??紤]一個10步工作流,它依賴于10個獨立服務(wù),每個服務(wù)的可用性預(yù)期為99%。純粹基于服務(wù)可用性,你認(rèn)為該工作流的失敗概率會超過9%嗎?將所有服務(wù)的可用性提高到99.9%,仍會使整個工作流有近1%的失敗機會。這似乎并不重要,但如果該工作流每天執(zhí)行數(shù)百萬次,而你對此負(fù)責(zé)的話,就得重視了。

提高服務(wù)可用性和可靠性會有所幫助,正如我們在前面的示例中看到的那樣,每個服務(wù)都添加了一個額外的“9”。但是,很多時候,服務(wù)交互涉及到團隊控制之外的服務(wù)或完全超出其組織的服務(wù)。盡管分布式系統(tǒng)中的故障普遍存在,但許多團隊在設(shè)計和妥善處理這些故障時,都會減少時間、精力和對細(xì)節(jié)的關(guān)注。這部分是因為實踐1和實踐2中存在差距。畢竟,團隊可能不具備分布式系統(tǒng)知識,無法理解錯誤處理故障的級聯(lián)效應(yīng)。同樣,團隊可能不太了解他們的庫和云服務(wù)選擇,無法涵蓋所有可能的故障場景。

常規(guī)團隊使用基本技術(shù)開發(fā)捕獲和處理基本故障的代碼,可能會忽略不太常見但更具影響力(如果處理不當(dāng))的故障場景。

云規(guī)模團隊將其大部分設(shè)計和開發(fā)用于避免、處理、測試和自動從故障場景中恢復(fù),尤其是那些源自他們無法控制的系統(tǒng)的故障場景。

實施8——頻繁進行廣泛的代碼審查

代碼審查補充了小批量工作的團隊和基于主干的開發(fā)。它們通常在開發(fā)期間(用于定期反饋)和拉取請求期間(在合并到主干之前)應(yīng)用。這允許開發(fā)人員在代碼成為每個人的代碼庫的一部分之前,征求團隊成員的反饋。

有很多代碼審查清單,但大多數(shù)只關(guān)注審查代碼。一些檢查表將范圍進一步擴大,以涵蓋測試和文檔。以上所有內(nèi)容都很重要,但為了增加代碼審查的價值,請通過使用其他鏡頭來擴大審查范圍:

設(shè)計——從代碼本身后退一步,了解所開發(fā)的代碼是否/如何適合總體設(shè)計,以及在進行更改的情況下,設(shè)計是否仍然有效。

可用性——考慮正在構(gòu)建的功能的用戶體驗,如果它面向用戶;適用于web界面和命令行界面(包括內(nèi)部和外部工具)。

一致性——驗證代碼和應(yīng)用程序中的一致性,從變量命名約定到按鈕名稱、命令行參數(shù)和縮寫,再到文檔中的術(shù)語。

可擴展性——推斷出當(dāng)一種方法不再足夠時為預(yù)測所做的更改,并尋求在潛在的可擴展性問題存在之前解決這些問題。

常規(guī)開發(fā)團隊使用代碼評審來提高代碼質(zhì)量。而云規(guī)模團隊使用代碼審查來提高代碼質(zhì)量、軟件設(shè)計、操作可見性、用戶體驗、自動化和工具工具。

幫助他人

實踐9——在第一天提供開發(fā)人員環(huán)境

2019年DORA報告發(fā)現(xiàn),72%的“精英”團隊(在評估中發(fā)揮最高水平的團隊)“自動化測試環(huán)境的資源調(diào)配和部署”,但自動化性能和安全測試要少得多(分別為28%和31%)。性能和安全測試通常不自動化的原因之一是環(huán)境設(shè)置和拆卸的復(fù)雜性。

這些統(tǒng)計數(shù)字與幫助他人有什么關(guān)系?

軟件開發(fā)團隊不斷變化,包括當(dāng)新的團隊成員加入時。通常,云規(guī)模團隊是高增長組織的一部分,在一年內(nèi),這些團隊的規(guī)模是已知的兩倍(或三倍)。當(dāng)一個新的團隊成員加入時,擁有一組他們可以操作的環(huán)境可以讓該團隊成員快速跟上進度。還有什么比通過自動化性能測試來了解大型、復(fù)雜的分布式系統(tǒng)如何工作更好的方法呢?這種自主性與DORA中提到的團隊實驗實踐相一致。更好的是,對于開發(fā)云原生軟件的團隊,團隊成員在第一天就可以訪問單個云賬戶,并擁有足夠的權(quán)限使其有用。

常規(guī)團隊通常會被允許其運行的環(huán)境所限制,新團隊成員通常需要等待數(shù)天或數(shù)周才能訪問所需的系統(tǒng),以提高效率。而當(dāng)加入云規(guī)模團隊時,你擁有快速提升、頻繁交付價值和自由試驗所需的工具。

實踐10——通過開源回報

如實踐4所述,內(nèi)部能力的開源通常是一種有益的強制功能,使能力值得共享。知道自己的工作可能會被成千上萬甚至數(shù)百萬的開發(fā)人員使用,這通常是令人畏懼的,但分享工作對其他人來說是一個巨大的幫助。

常規(guī)團隊嚴(yán)重依賴開源庫,但很少做出貢獻。而云規(guī)模團隊廣泛使用開源庫并創(chuàng)建自己的庫,他們知道,通過這樣做,他們正在改進自己的手藝和其他人的手藝。

關(guān)鍵要點

云規(guī)模開發(fā)團隊在許多方面與常規(guī)開發(fā)團隊相似。在某些情況下,云規(guī)模團隊對現(xiàn)有實踐(如運維可見性)應(yīng)用額外的(或兩個)嚴(yán)格性。在其他情況下,它們擴展了通用實踐的范圍,或?qū)⑵鋺?yīng)用于以前不打算使用的領(lǐng)域(代碼審查)。當(dāng)結(jié)合一組優(yōu)秀的基礎(chǔ)實踐時,上面定義的10個實踐足以將云規(guī)模團隊與其他團隊區(qū)分開來。

努力實現(xiàn)云規(guī)模并不適合每個團隊或每個應(yīng)用程序。將本文概述的實踐執(zhí)行到云規(guī)模所需的程度是時間、精力和資源密集型的。然而,無論其解決方案的預(yù)期規(guī)模如何,任何開發(fā)團隊都可以選擇性地或在適當(dāng)?shù)某潭壬蠎?yīng)用這些實踐。更妙的是,因為其他人已經(jīng)掌握了這些實踐,并繼續(xù)尋找新的方法來滿足大量用戶或工作負(fù)載的需求,大多數(shù)團隊可以通過依賴與這些實踐一起開發(fā)的云、平臺和軟件來獲得這種掌握的好處。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論