云計算的樂高玩具,Docker從根本上改變應用程序開發
英文原文:4 ways Docker fundamentally changes application development
Docker 改變了應用程序開發領域的很多事情,已經成為時下最流行的開源項目之一,而且也從根本上改變了人們構建應用程序思維方式。Docker 正在改變云的開發實踐,允許任何人以整合別人容器的形式利用封裝社區的最佳實踐,這就像云組件的樂高玩具。
以下為譯文:
Docker 就像一場森林大火,這個新的 Linux 容器技術以它自己的方式點燃了周圍的一切,我們許多人難以跟上它蔓延的速度。Docker 不僅是歷史上最流行的開源項目之一,而且也從根本上改變了人們構建應用程序的思維方式。
嚴格來說,許多基于 Docker 應用程序背后的理念并不新穎,但 Docker 卻給這些舊理念帶來了新的思維角度。Docker 鼓勵像 12-Factor Applications 的最佳實踐,那么利用 Docker 到底改變了什么?且看以下四個領域。
微服務架構的崛起
單片云應用開發已經被淘汰了,取而代之的是微服務架構,它將大型應用程序拆解成通過普通 REST API 通信的更小的、 目的驅動的服務。
在 90 年代,一個類似的概念被稱為接口/基于組件的體系結構,后來,SOA 似乎勢頭很猛,到現在微服務器概念已經成為 Docker 社區一個標準的主題,它的趨勢是將應用程序拆解為解耦的、極簡的以及為做好一件事而設計的專門容器。
完全封裝的 Docker 容器能通過為微服務應用程序創建一個高效的分銷模式來提供微服務,這改變了云開發實踐模式,使得原來在 非死book 和 推ter 使用的大規模架構,在小開發團隊里的應用變得可能。
讓 dev 和 ops 更加緊密
盡管 Puppet、 Chef、 Salt 等開創了 devops 運動,這些工具在運維團隊的受歡迎度仍然比開發人員高。
Docker 是第一個 devops 工具,它在開發者和運維者之間同樣受歡迎,為什么?因為開發人員可以在容器內部工作,而運維工程師可以并行的在容器外部工作。
當開發團隊采用 Docker,他們為軟件開發生命周期添加了一個新的敏捷層。最大的區別是一致性,基于 Docker 應用程序能夠和開發階段一樣運行在筆記本電腦上。因為 Docker 封裝應用程序的所有狀態,你不必擔心由于底層操作系統的差異缺陷造成的管理或 bug 問題。
保證持續集成一致性
通過自動測試你代碼的持續集成是一個非常好的方式來減少你最終產品的 bug 數量,但持續集成有兩大缺點。
首先,很難封裝所有依賴項。傳統 CI(持續集成)/ CD(持續交付)技術如 Jenkins 或 Travis 由于 binary dependencies 或 OS-level 變更,導致代碼在開發階段和 dev /test/ QA 階段稍有出入,而 Docker 封裝了整個應用程序的狀態,這使得代碼運行在 dev /test/QA 階段和開發階段完全相同。
其次,持續集成并不是為微服務架構而構建的。CI 是基于一個 App 位于一個代碼庫的假設而構建的。然而,Docker 最佳實踐鼓勵微服務架構與各種 Docker 容器全部松散耦合,于是有了新的 CI / CD 工具 Drone 和 Shippable ,它們是基于 Docker 容器構建的。這些工具可以讓你從多代碼庫中提取測試多容器的應用程序。
最佳容器的協同
并不是改變你們自己的服務容器如 Hadoop、Nginx 或 MongoDB,Docker 鼓勵開源社區合作和在 Docker Hub 上微調容器。因為 Docker 可以封裝狀態,它們讓你更靈活的配置軟件來保證其最佳運行。
因此,Docker 由于允許任何人以整合別人容器的形式利用封裝社區的最佳實踐,從而改變了云開發實踐。這對于云組件來說就像是樂高玩具,最后總會將它們拼在一起。
云計算的樂高玩具
新技術的出現總會伴隨著打破現狀,Docker 正迅速改變云的規則和顛覆云技術領域,它改變了 CI / CD、微服務、開源協作、devops 等領域,Docker 也正在改變應用程序開發生命周期和云工程實踐。每一天,成千上萬的開發人員愉快地重構或構建新的基于 Docker 的 App。了解 Docker 已經成為企業或個人在激烈變化的世界中保持競爭力的一個關鍵因素。
<span id="shareA4" class="fl">
</span>