Otto開發初探——微服務依賴管理新利器

【編者按】時下,VagrantDevOps 軟件開發商普遍做爲開發階段的本地軟件開發環境,而在本文,CERT Division高級研究員介紹的 Otto 則是 Vagrant 開發團隊 Hashicorp 的又一力做。本文系 OneAPM 工程師翻譯。html

在搭建運行在筆記本之上的開發環境時,Vagrant 的表現很是優秀。不過在將程序遷往生產環境之時,在 Vagrant 的配置文件中所存儲的配置環境 Vagrantfile 就不能直接用在生產服務器之上了。Otto 在 Vagrant 基礎上進行了有效的拓展,容許使用單個配置文件對開發與生產環境進行定義、配置與部署。git

Otto 在管理基於微服務的應用時,解決了服務依賴關係上的重大挑戰。在微服務架構中,系統被拆分爲許多獨立可展開的部件,而不是做爲單個龐大的應用。也就是說,咱們必須部署許多小型應用,而不是單個的大型應用,這樣一來管理複雜性也增長了。圖一展現了有多個依賴的應用。要加速本地開發環境,開發人員必須瞭解全部的依賴,並配置相應的 Vagrant 環境。經過遍歷依賴層次結構,構建適應全部依賴關係的 Vagrant 環境,Otto 簡化了基礎設置配置。若是程序所依賴的服務有依賴,Otto 會自動解決、獲取與構建這些依賴。github

Otto開發初探——微服務依賴管理新利器

擴展Otto以解支撐代理web

Otto 的入門指南包括工具的安裝,構建簡單 Ruby web 應用的開發環境,配置與部署 AWS 環境的方法。Otto 底層使用了 Vagrant,自動生成用來配置本地開發環境的 Vagrantfile。生成的 Vagrantfile 是一個運行時構件,用戶沒法修改。只有建立自定義程序,並與主要的 Vagrantfile 合併,用戶才能對 Vagrantfile 的生成產生影響。ruby

根據入門指南,在配置本地開發環境時,因爲全部出站流量必須經過公司的代理服務器,這裏遭遇了瓶頸。全部在開發 VM 上的 apt-get 安裝都失敗了。根據下面這些步驟,能夠設法利用 Otto 所產生的 Vagrantfile 來解決代理配置。服務器

第一步:首先,建立一個名爲 otto-proxy 的目錄,包括定義 vagrant-proxyconf 配置的 Vagrantfile 片斷,參見圖二。架構

if Vagrant.has_plugin?("vagrant-proxyconf")
config.proxy.http     = "http://proxy.cmu.edu:8080"
config.proxy.https    = "http://proxy.cmu.edu:8080"
config.proxy.ftp      = "http://proxy.cmu.edu:8080"
config.proxy.no_proxy = "localhost,127.0.0.1,localaddress"
end

圖二:Vagrantfile 片斷的內容定義了 vagrant-proxyconf 配置。app

第二步:接下來,我建立了定義自定義程序的 Otto Appfile,如圖三所示,自定義部分定義了一個可合併的Vagrantfile片斷。微服務

application {
               name = "otto-proxy"
               type = "custom"
}
customization "dev-dep" {
    vagrantfile = "./Vagrantfile"
}

圖三:這個 appfile 定義了一個簡單的自定義程序,簡單指出了配置開發環境時須要合併的 Vagrantfile。工具

第三步:最終,修改了 Otto 入門指南中樣例項目的 appfile。修改後的 appfile 見圖四。增長的代碼以黃色標出。

application {
           name = "otto-getting-started"
           type = "ruby"
 dependency {
           source = "../otto-proxy"
 }  
}

project {
  name = "otto-getting-started"
  infrastructure = "otto-getting-started"
}

infrastructure "otto-getting-started" {
  type = "aws"
  flavor = "simple"

圖四:修改後的 otto-getting-started appfile,包括 otto-proxy 應用。

目前,在運行 otto 開發命令來配置本地開發環境時,Vagrant 虛擬機上的軟件包管理器經過公司代理服務器搭建了出站鏈接。

點擊這裏查看 otto-proxy 項目的源代碼,點擊這裏查看修改後的 otto-getting-started 項目。

須要注意的是:Otto 在現有的 infrastructure-as-code 工具之上增長了新一層抽象。可是經過 appfile 中自定義的依賴關係與自定義標籤,若是必要的話,開發者能夠控制底層工具的運做方式。Otto 還處於初始階段,目前是 0.1 版本,除了特殊狀況,通常可能沒法知足生產環境使用,不過頗有但願成爲自動化環境配置與部署的一線工具。

原文連接:Developing with Otto: A First Look

OneAPM 是應用性能管理領域的新興領軍企業,能幫助企業用戶和開發者輕鬆實現:緩慢的程序代碼和 SQL 語句的實時抓取。想閱讀更多技術文章,請訪問 OneAPM 官方博客

相關文章
相關標籤/搜索