
Atomist遵循軟件定義交付的原則,使用開(kāi)發(fā)應用程式的工具和方法,解決軟件交付的挑戰。Atomist提到,交付的程序應該以版本化和經(jīng)測試的程式碼實(shí)作,而非大量的殼層腳本和數百行復制貼上的YAML定義。Atomist SDM主打使用者可以像軟件開(kāi)發(fā)者一樣,自動(dòng)執行部分日常的重復性工作,像是讓原始碼應用一致的格式、管理變更日志,以及在產(chǎn)品臭蟲(chóng)修復時(shí)將待處理問(wèn)題上標記,在審核時(shí)自動(dòng)合并PR并成功建置,也能更新企業(yè)中每個(gè)儲存庫中的授權許可檔案。
SDM讓使用者以撰寫(xiě)應用程式相同的工具和方法撰寫(xiě)交付流程,例如執行建置和整合測試或是管理部署和回退等任務(wù)。SDM提供工程化的交付方法,讓整個(gè)組織都使用相同的交付流程,提高整體一致性水準,還可以透過(guò)將部署相關(guān)活動(dòng)納入聊天中,與組織分享整個(gè)交付程序的資訊。SDM加入Atomist服務(wù),提供可程式化的交付工作流程,還可以與現有Git服務(wù)和持續整合工具的原生ChatOps搭配使用。
由於SDM是一個(gè)開(kāi)放且可擴展的框架,可以讓使用者自定義開(kāi)箱即用的動(dòng)作,而這種可擴展性,能讓開(kāi)發(fā)者編寫(xiě)自己的目標實(shí)作,并與Autofix、Build或KubernetesDeploy等標準目標實(shí)作一同運作,這些自定義目標可以將企業(yè)會(huì )用到的任何工具或是API,整合到交付流程中。
而且由於使用程式碼定義交付,因此可以讓使用者在開(kāi)發(fā)期間,使用IDE進(jìn)行單元測試和偵錯,而這能直接消除更新持續整合設定的大量猜測工作,不需要等到推送到持續整合伺服器,才能知道執行結果。SDM也為使用者提供一致的審計追蹤,掌握包括軟件轉移到生產(chǎn)環(huán)境的狀況,或是組織中觸發(fā)特定操作的成員,追蹤所有使用系統的流程,進(jìn)行跨問(wèn)題追蹤、SCM、持續整合和部署工具。 SDM具有事件驅動(dòng)特性,能將審計資訊建構在框架中,報告工具可透過(guò)GraphQL抓取訊息。
Atomist提到,用高階的框架來(lái)實(shí)現軟件交付的優(yōu)點(diǎn)之一,便是SDM框架能夠抽象底層Runtime環(huán)境,同時(shí)又透明地最佳化目標執行以及Runtime支援的內容。當使用者在本機模式使用SDM或是開(kāi)發(fā)SDM時(shí),系統會(huì )限制資源消耗,并且在同一程序下執行目標。一旦當SDM被部署到Kubernetes叢集時(shí),在不需要更改程式碼的情況下,SDM便會(huì )自動(dòng)使用Kubernetes高階調度功能,切分目標到各自的Kubernetes中執行。
SDM也遵循軟件定義交付的可觀(guān)察原則,使用者能整合StatsD和Prometheus等常用監控工具,揭露公開(kāi)執行時(shí)間和計數、故障率、堆疊和GC統計等相關(guān)資訊。Atomist不只開(kāi)源SDM,其他相關(guān)的專(zhuān)案也一并開(kāi)源。