過去幾個(gè)星期,我的高中一年級(jí)的兒子一直很緊張。要完成多位老師布置的,上交時(shí)間為同一天的作業(yè),這樣的壓力讓他很沮喪。當(dāng)我看著他應(yīng)對(duì)大量數(shù)學(xué)作業(yè)時(shí),我想到了在物聯(lián)網(wǎng)開發(fā)中發(fā)生的類似困難。在我看來(lái),阻礙物聯(lián)網(wǎng)前進(jìn)的流程,可以總結(jié)為一個(gè)簡(jiǎn)單的數(shù)學(xué)方程式:IoT = DevOps²。
物聯(lián)網(wǎng)等于DevOps的平方?
讓我解釋一下。為了成功實(shí)現(xiàn)物聯(lián)網(wǎng)應(yīng)用的實(shí)施,你需要了解物聯(lián)網(wǎng)場(chǎng)景中的完整物理環(huán)境。與此同時(shí),你需要認(rèn)識(shí)到你要面對(duì)分散在整個(gè)企業(yè)中的多個(gè)團(tuán)隊(duì):OT開發(fā),OT運(yùn)營(yíng),IT開發(fā)和IT運(yùn)營(yíng)。
這四個(gè)不同團(tuán)隊(duì)中的每個(gè),就如同不同學(xué)科的老師,都有特定的目標(biāo)和關(guān)注點(diǎn)。團(tuán)隊(duì)之間的協(xié)調(diào)和計(jì)劃是必需的。否則,就會(huì)效率低下,甚至產(chǎn)生分歧。要讓事情順利進(jìn)行,你需要一個(gè)包含任務(wù)分配和流程的協(xié)調(diào)計(jì)劃,并不斷交換信息。
當(dāng)然,重要的是要記住為什么每個(gè)團(tuán)隊(duì)都是獨(dú)特的實(shí)體。必須考慮到他們的目標(biāo)差異。正如數(shù)學(xué)和歷史在教導(dǎo)的內(nèi)容上,有著非常不同的目標(biāo)一樣,一個(gè)企業(yè)內(nèi)的每個(gè)團(tuán)隊(duì)都有不同的目標(biāo)和指標(biāo)。雖然運(yùn)營(yíng)和開發(fā)是相似的,但是開發(fā)人員的目標(biāo)是創(chuàng)建新的,更好的軟件,并盡可能快速和高效地完成。IT運(yùn)營(yíng)人員更關(guān)心保持環(huán)境的穩(wěn)定和運(yùn)營(yíng)。無(wú)論他們決定實(shí)施什么,都必須能夠安全地融入當(dāng)前的環(huán)境。
與教育機(jī)構(gòu)的目標(biāo)一樣,實(shí)施物聯(lián)網(wǎng)項(xiàng)目的企業(yè)的目標(biāo)是確保每個(gè)人都共同,按時(shí)完成流程。如果OT開發(fā)團(tuán)隊(duì)完成任務(wù),卻沒有其他團(tuán)隊(duì)繼續(xù),或者如果IT開發(fā)團(tuán)隊(duì)準(zhǔn)時(shí)完成工作,而其他團(tuán)隊(duì)卻沒有完成,那么物聯(lián)網(wǎng)項(xiàng)目就失敗了。那么,在物聯(lián)網(wǎng)的新氛圍中如何避免開發(fā)困難呢?
X不能等同于舊的瀑布技術(shù)首先,讓我們承認(rèn),過去的軟件開發(fā)方法阻礙了支持物聯(lián)網(wǎng)所需的協(xié)作過程。我指的是花費(fèi)數(shù)月的時(shí)間來(lái)開發(fā)軟件,記錄軟件,然后對(duì)軟件進(jìn)行測(cè)試,結(jié)果發(fā)現(xiàn)(已經(jīng)太晚了)軟件問題太多,或者不再滿足客戶的期望。這個(gè)時(shí)間框架和方法論在四個(gè)不同的,重要的團(tuán)隊(duì)需求都需要滿足的物聯(lián)網(wǎng)環(huán)境下,是行不通的。物聯(lián)網(wǎng)需要真正的實(shí)時(shí)。
為了使物聯(lián)網(wǎng)工作,需要所有四個(gè)團(tuán)隊(duì)之間有力的整合和溝通。通過將這四個(gè)團(tuán)隊(duì)合并成一個(gè)能夠共同工作的團(tuán)隊(duì),你可以提前輸入需求,并確保盡早在過程中提供支持。然后,團(tuán)隊(duì)可以更輕松地理解概念,并通過不同的任務(wù)加強(qiáng)這些概念。為了更大的目標(biāo),要明確什么才是重要的,并找到在每個(gè)領(lǐng)域需要支持的部分。在下圖中,你可以看到開發(fā)(Dev)和運(yùn)營(yíng)(Ops)之間確實(shí)存在共同的需求。專注于這些需求來(lái)創(chuàng)建DevOps平臺(tái),為更高的效率和創(chuàng)新鋪平道路。
注重敏捷通過DevOps和CI/CD(持續(xù)集成和持續(xù)交付)實(shí)現(xiàn)的敏捷軟件開發(fā)改善了協(xié)作,從而改進(jìn)了創(chuàng)新。當(dāng)每個(gè)人都負(fù)責(zé)質(zhì)量管理,人員都在一起工作,而不是孤立地工作時(shí),就可以避免在其他領(lǐng)域中斷功能。當(dāng)你不斷地發(fā)布小的增量變化的產(chǎn)品,并隨時(shí)進(jìn)行測(cè)試,你會(huì)立即知道是否有問題,并能明確需要修復(fù)的問題。通過快速捕捉和解決問題,整個(gè)團(tuán)隊(duì)生產(chǎn)出更穩(wěn)定,質(zhì)量更好的軟件。
容器通常用在敏捷開發(fā)過程中。能夠?qū)Υa的“層”進(jìn)行修改而不會(huì)影響其他代碼,因此可以在保持代碼穩(wěn)定的情況下快速進(jìn)行更改。Scrum是另一個(gè)重要的敏捷項(xiàng)目管理工具。與傳統(tǒng)的瀑布式項(xiàng)目管理不同,Scrum處理實(shí)時(shí)的,面對(duì)面交互,確保與所有相關(guān)人員進(jìn)行清晰的溝通。
敏捷開發(fā)環(huán)境的擴(kuò)展性非常好,這在當(dāng)今快速變化的市場(chǎng),比如物聯(lián)網(wǎng)中至關(guān)重要。這些環(huán)境的效率要高得多,并且可以在不影響底層的情況下快速更新。
使用正確的工具對(duì)成功至關(guān)重要你可以將敏捷集成和開發(fā)流程的整體思想融入到物聯(lián)網(wǎng)的其他方面,包括你的架構(gòu)方法。我的同事Ishu Verma在他的博客文章“將敏捷集成應(yīng)用于物聯(lián)網(wǎng)”中詳細(xì)討論了這個(gè)問題。正如他指出的那樣,真正的關(guān)鍵是從定制的技術(shù)轉(zhuǎn)變到基于標(biāo)準(zhǔn)的技術(shù),并關(guān)注協(xié)作能力。這就是為什么客戶使用容器平臺(tái)和其他開發(fā)工具來(lái)更新IT基礎(chǔ)設(shè)施,并采用敏捷的DevOps方法來(lái)開發(fā)應(yīng)用的原因。
將敏捷集成與專門用于構(gòu)建和管理機(jī)器對(duì)機(jī)器或物聯(lián)網(wǎng)應(yīng)用的設(shè)備應(yīng)用框架(如Eurotech的Everyware Software Framework和Everyware Cloud)中的工具相結(jié)合,為物聯(lián)網(wǎng)開發(fā)人員提供了按需,自助服務(wù)功能,同時(shí)更容易一起工作。
如果高一的課程有這么容易就好了。