當您想到嵌入式軟體架構時,您可能會想到中斷、子產品以及輸入到輸出的映射。然而,嵌入式軟體通常被設計和部署為單片應用。Monoliths是獨立的應用程式,對嵌入式開發人員來說很友善,但有時并不能幫助企業實作其長期目标。它們可以擴充,但必須将整個應用程式重寫到閃存中,這可能會産生與健壯性、安全性和帶寬成本相關的問題。
微服務架構是一種有趣的架構方法,越來越受到嵌入式系統的關注。微服務将應用程式分解成獨立的應用程式,這些應用程式協同工作來實作産品的功能。傳統的嵌入式軟體開發人員可能會認為微服務增加了額外的複雜性,具有更長的延遲,并且需要更多的代碼空間。然而,微服務架構有七個主要的優勢是你可能會忽略的。下面我們就來簡單探讨一下。
優勢1–打破了大多數整體架構中存在的緊密耦合
您可能遇到過的單片應用程式的一個重要問題是它們是緊密耦合的。單一應用程式中的依賴關系管理充其量是糟糕的。我無法告訴你我見過多少單塊的應用程式,它們的架構已經腐爛成一個巨大的泥球。(我的示例可能會有偏差,因為作為一名顧問,我經常被請來幫助解決這些類型的架構問題)。此外,緊密耦合的應用程式很難擴充、重用和維護。
微服務本質上最大限度地減少了耦合。是的,微服務可能會互相對話并協作完成某個目标,但是每個微服務都可以獨立運作。微服務打破了單片中的緊密耦合,幫助嵌入式開發人員編寫更易維護的軟體。
優勢2——減少開發時間和工作量
微服務就像獨立的應用程式,其輸入和輸出連接配接到其他服務。如果那些輸入、輸出和行為被識别,單獨的團隊可以獨立地開發每個微服務。每個微服務都可以單獨測試,以確定滿足其要求。這些分離的結果是多重的。
首先,更多的團隊或開發人員從事單個微服務意味着更好的分工。接下來,每個微服務都可以獨立測試,進而最大限度地減少後期調試時間。最後,每個微服務比整體更簡單,這降低了複雜性,并允許編碼進行得更快。(當然,可能需要處理一些內建問題,但總的來說,這些問題通常比單一應用程式耗時少、成本高)。
優勢 3——可擴充和可重用的軟體架構
每個微服務可以被視為一個單獨的、獨立的應用程式,它有自己的輸入、輸出、資料存儲和日志記錄功能。如果您編寫了一個管理雲連接配接的微服務,您可以在任意數量的産品上重用該微服務。更好的是,如果有嵌入式開發人員編寫了那個微服務,并将其作為開源或商業産品釋出,你就不用重新發明輪子了!你利用已經存在的東西,專注于産品的核心特性。
微服務的使用可以極大地提高代碼重用和應用程式的可伸縮性。例如,假設您在現場部署了一個不支援預測性維護的嵌入式系統。但是,客戶要求添加此功能。現在,對于一個單一的應用程式來說,重要的重寫可能是必要的。有了微服務架構,添加新的微服務就能解決問題。新的微服務将從現有的傳感器微服務接收資料,并使用該資料運作預測性維護算法。是以,應用程式無需對現有代碼進行重大重寫或修改即可進行擴充。
優勢 4–獨立地單獨部署軟體元件
找到一個無需重新部署整個應用程式就可以換出軟體元件或添加功能的整體應用程式的情況并不多見。微服務沒有這個限制。相反,每個微服務都是一個獨立隔離的應用程式,可以獨立部署。
優勢5–隔離服務提高系統安全性
微服務提供了一個令人興奮的額外好處,因為它們可以用來提高系統安全性。每個微服務可以被隔離在一個容器中,或者MPU可以限制微服務對資料、外設和其他存儲位置的通路。隔離有助于限制任何單個微服務出現的攻擊面。例如,如果一個微服務被黑客攻擊,黑客可能隻能有限地通路系統的其餘部分。
優勢6–固件更新耗時更少、成本更高
您可能熟悉現場固件更新的所有工作。固件更新對于幾乎所有嵌入式産品來說都是必要的,但卻是一個總是讓嵌入式開發人員苦惱的應用程式。安全可靠的固件更新極具挑戰性。除了挑戰之外,更新通常需要在閃存中儲存應用程式的多個副本,以及複雜的後備機制,以防出現問題。
微服務架構可以降低固件更新的複雜性和成本。由于微服務可以單獨部署,是以不必擦除和重寫整個應用程式。應用程式的多個副本不必保留在系統中。結果可以在閃存和微控制器尺寸方面顯著節省成本。較小的更新也可能帶來較低的更新成本。一些裝置通過蜂窩塔或其他機制連接配接,以位元組為機關接入網絡。如果向每台裝置發送更少的資料,還可以降低這些營運成本。
優勢7–更靈活的産品定制
微服務可以為産品定制提供更大的靈活性。如果您正确設計了您的應用程式,您可以将一些功能作為微服務部署給客戶A,将其他功能部署給客戶b。是以,定制和擴充産品的能力更易于管理。以這種方式使用的微服務架構是一個重要的産品差異化因素,可以幫助企業比競争對手更好地滿足客戶的需求。
靈活性允許産品和團隊即時适應行業變化和問題。例如,在過去的幾年中,有多少團隊因為找不到他們用來建構産品的微控制器而苦苦掙紮?基于微服務的架構可以幫助減輕一些痛苦。(同時遵循編寫嵌入式軟體的一般最佳實踐)。
結論
微服務對于嵌入式軟體開發者來說是一種新的架構類型;然而,他們已經在其他軟體開發領域證明了自己的價值。雖然您可能還沒有準備好沖出去采用微服務架構,但我們已經看到了許多好處。你至少應該花些時間探索微服務,了解它們的優缺點,并決定它們是否适合你的産品。
無論如何,微服務為嵌入式開發團隊提供了一種新的軟體範式,有助于進一步提高軟體靈活性、上市時間和成本。