為智能邊緣開發(fā)系統(tǒng)的組織面臨著開發(fā)、測(cè)試和部署這些系統(tǒng)的巨大成本。DevOps實(shí)踐可以極大地提高開發(fā)人員之間的效率和協(xié)作,但是在這個(gè)領(lǐng)域采用它尤其困難。所涉及的技術(shù)數(shù)量龐大,涵蓋實(shí)時(shí)嵌入式系統(tǒng)、不可預(yù)測(cè)鏈路上的可靠通信以及彈性云基礎(chǔ)設(shè)施中的集中管理,需要跨許多專業(yè)團(tuán)隊(duì)和工具的多樣化專業(yè)知識(shí)。在這篇文章中,我們將回顧一些團(tuán)隊(duì)可以提高開發(fā)人員效率的方法。通過標(biāo)準(zhǔn)化工具、流程和開發(fā)人員體驗(yàn),嵌入式系統(tǒng)團(tuán)隊(duì)可以從自動(dòng)化、易用性、一致性以及寶貴資源、配置、組件和代碼的重用中受益。
自動(dòng)化支持嵌入式開發(fā)運(yùn)維
自動(dòng)化在DevOps實(shí)踐的成功實(shí)施中起著至關(guān)重要的作用。通過自動(dòng)化重復(fù)任務(wù),開發(fā)人員可以節(jié)省時(shí)間和精力,同時(shí)提高一致性和可預(yù)測(cè)性,使他們能夠?qū)W⒂诟邇r(jià)值的活動(dòng)。自動(dòng)化測(cè)試和部署流程支持持續(xù)交付和集成,幫助團(tuán)隊(duì)更快地發(fā)布軟件更新,而不會(huì)影響質(zhì)量。
嵌入式開發(fā)人員當(dāng)然知道這一點(diǎn),但是很難找到既能解決嵌入式特有的挑戰(zhàn),又能很好地適應(yīng)自動(dòng)化工作流的工具。例如,嵌入式編譯器可能只在特定的運(yùn)行時(shí)環(huán)境中可用,而廣泛的系統(tǒng)要求可能會(huì)在單個(gè)項(xiàng)目中施加多個(gè)可能相互沖突的約束。
Jenkins等自動(dòng)化工具旨在提供幫助使自動(dòng)化管道來構(gòu)建和部署,以簡(jiǎn)化這個(gè)過程,但它們也需要配置和維護(hù),這消耗了寶貴的開發(fā)人員帶寬。在需要在多個(gè)運(yùn)行時(shí)環(huán)境中支持工具的項(xiàng)目中尤其如此,因?yàn)槊總€(gè)環(huán)境可能需要單獨(dú)維護(hù)。
有了支持項(xiàng)目所需的各種工具的自動(dòng)化平臺(tái),嵌入式開發(fā)團(tuán)隊(duì)可以實(shí)現(xiàn)持續(xù)集成、自動(dòng)化測(cè)試和自動(dòng)部署到所有必要的環(huán)境中,從而實(shí)現(xiàn)更快、更可靠的發(fā)布。
標(biāo)準(zhǔn)化工具和流程
一個(gè)合適的自動(dòng)化平臺(tái)為工具和流程的標(biāo)準(zhǔn)化奠定了基礎(chǔ),為嵌入式系統(tǒng)開發(fā)帶來了諸多好處。它簡(jiǎn)化了新團(tuán)隊(duì)成員的入職,確保了開發(fā)實(shí)踐的一致性,并通過為每個(gè)相關(guān)人員提供一個(gè)公共基礎(chǔ)來鼓勵(lì)協(xié)作。
在持續(xù)集成和持續(xù)部署(CI/CD)平臺(tái)上實(shí)現(xiàn)標(biāo)準(zhǔn)化有助于簡(jiǎn)化構(gòu)建、測(cè)試和部署過程。通過選擇與嵌入式系統(tǒng)開發(fā)工作流程集成良好的工具,開發(fā)人員可以自動(dòng)執(zhí)行重復(fù)性任務(wù),例如編譯代碼、運(yùn)行測(cè)試以及將軟件部署到目標(biāo)平臺(tái)。
鑒于智能邊緣系統(tǒng)的多樣性,簡(jiǎn)單地訪問測(cè)試和生產(chǎn)系統(tǒng)可能具有挑戰(zhàn)性。嵌入式系統(tǒng)的開發(fā)硬件可能很少,通常需要在更廣泛的測(cè)試工具中進(jìn)行手動(dòng)配置,并且可能被隔離在專門的實(shí)驗(yàn)室中。嵌入式團(tuán)隊(duì)需要確保他們有工具,可以從自動(dòng)化管道可靠地訪問測(cè)試和生產(chǎn)系統(tǒng)。
對(duì)于云基礎(chǔ)架構(gòu)和其他更易訪問的環(huán)境,采用基礎(chǔ)架構(gòu)即代碼(IaC)實(shí)踐可以實(shí)現(xiàn)環(huán)境設(shè)置和配置的自動(dòng)化。通過在代碼中定義基礎(chǔ)設(shè)施需求,開發(fā)人員可以輕松地供應(yīng)和管理目標(biāo)平臺(tái),從而減少設(shè)置和配置時(shí)間。
一致性和易用性
對(duì)于所有開發(fā)團(tuán)隊(duì)來說,確保工具、過程和環(huán)境易于使用并對(duì)所有團(tuán)隊(duì)成員保持一致是非常重要的,尤其是對(duì)于嵌入式團(tuán)隊(duì),因?yàn)樗麄兪褂昧巳绱硕嗟膶I(yè)工具。開發(fā)人員需要無縫、直觀的體驗(yàn)來最大化生產(chǎn)力,這可以通過采用具有用戶友好界面并提供清晰文檔的工具來實(shí)現(xiàn)。
對(duì)于開發(fā)者來說,“用戶友好”往往有多重含義。他們可能希望有一個(gè)直觀的GUI供臨時(shí)使用,一個(gè)靈活的CLI供腳本和編排工具使用,一個(gè)強(qiáng)大的API供編程使用。
標(biāo)準(zhǔn)化開發(fā)環(huán)境和創(chuàng)建可重復(fù)的構(gòu)建也很重要。通過利用Docker和Kubernetes等工具的容器化等技術(shù),開發(fā)人員可以在軟件開發(fā)生命周期的不同階段創(chuàng)建一致和隔離的環(huán)境。這有助于避免配置差異,減少出錯(cuò)的機(jī)會(huì),并改善團(tuán)隊(duì)成員之間的協(xié)作。
重用資源、配置、組件和代碼
嵌入式開發(fā)項(xiàng)目中有如此多的專業(yè)團(tuán)隊(duì)和工具,重復(fù)工作是一個(gè)真正的問題。在一個(gè)通用的DevOps平臺(tái)上實(shí)現(xiàn)標(biāo)準(zhǔn)化提供了一個(gè)中心位置,在這里可以在適當(dāng)?shù)臅r(shí)候共享和重用有價(jià)值的資源、配置、組件和代碼。例如,未來的項(xiàng)目經(jīng)常利用類似的硬件平臺(tái),業(yè)務(wù)邏輯可以打包成可共享的組件。通過創(chuàng)建可重用資產(chǎn)的存儲(chǔ)庫(kù),開發(fā)人員可以利用現(xiàn)有的解決方案,減少開發(fā)時(shí)間,并最小化出錯(cuò)的風(fēng)險(xiǎn)。
此外,實(shí)現(xiàn)模塊化設(shè)計(jì)原則和開發(fā)庫(kù)和框架有助于創(chuàng)建可重用組件的目錄。這減少了冗余,簡(jiǎn)化了維護(hù)工作,并加快了開發(fā)周期。
用嵌入式系統(tǒng)實(shí)現(xiàn)開發(fā)
掌握嵌入式系統(tǒng)的DevOps藝術(shù)會(huì)給開發(fā)團(tuán)隊(duì)帶來巨大的好處。通過標(biāo)準(zhǔn)化工具、流程和開發(fā)人員體驗(yàn),開發(fā)人員可以提高效率、協(xié)作和整體生產(chǎn)力。對(duì)資源、配置、組件和代碼的自動(dòng)化、易用性、一致性和重用的關(guān)注,使團(tuán)隊(duì)能夠更有效地交付高質(zhì)量的軟件,滿足現(xiàn)代開發(fā)對(duì)智能邊緣的需求。