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