在非容器環境中實現DevOps
採用DevOps方式實現軟體交付的原因之一是為了消除生產部署過程中的瓶頸,對於伺服器端軟體,通常涉及以下部分:
應用程式環境,如作業系統引數第三方元件,如應用程式伺服器,web伺服器和資料庫頂部執行的應用軟體
為了消除部署瓶頸,DevOps旨在打破開發人員和IT運營人員之間的障礙(也是DevOps得名的原因),以促進協作的工作環境。因此,需要確保生產環境與開發環境保持同步,並且所有部署過程一起執行。實現這一目標的方式之一是通過使用容器,如Docker或Kubernetes。事實上,很多人將容器和DevOps理解成了同義詞,並且將這兩者建立了依賴的關係。
但是,這兩者不需要依賴關係:完全可以在非容器環境下實現DevOps。
為什麼容器很重要
容器是管理執行軟體的作業系統的輕量級的抽象,它能夠將程式彼此隔離,對資源使用加以限制,並幫助打包軟體依賴。容器不會替代虛擬化,因為容器的操作更接近應用程式級別,而不是物理級別。
容器的高效率使得它應用非常廣泛,通過容器使用者可以快速部署並實現軟體元件聯機,與虛擬化相比它能夠以較低的成本啟動新的應用案例,使用者可以更緊密地控制應用程式環境。例如,如果開發人員在容器中編寫和構建軟體,則容器及其中的一切都可以被打包並傳輸到生產伺服器。效率和自動化使得DevOps和雲執行良好。
容器中好的DevOps用例始終圍繞著快速上線新伺服器連線的需求,這通常是微服務部署的案例。容器可以非常有效地快速啟動和破壞微服務和開發/測試環境,除此以外,在DevOps中使用容器更多的是一個選擇,而不是一個需求,DevOps遠不止目前這些。
非容器環境下無痛部署
不管容器能帶來多少好處,有很多理由支援我們不採用容器化的方法來進行軟體部署。包括:
缺乏容器技能或相關知識特殊應用效能要求(即實時系統)實用軟體環境下不支援的硬體(即嵌入式系統,專用或傳統作業系統)公有云部署等等
不依賴容器來實現DevOps的成功,需要關注以下3點:
1、自動化:通過工具儘可能地實現自動化,無論是大型機應用程式還是微服務,都可以通過工具來減少手動工作量及其失誤。
2、持續整合:連續測試軟體模組、元件、服務等,不要等到開發結束之後才整合和部署系統。
3、連續測試:通過持續整合,確保系統始終可用、可測試且理論上可釋放,測試開發工作的結果是反饋迴圈的一部分。
特定的構建和部署工具是有幫助的,並且通常需要達到使部署簡化的自動化水平。然而,DevOps的最大成就主要來自於三個方向的努力:
持續開發構建和測試周期更頻繁地部署到生產伺服器直接和即時反饋給開發人員
通過這三個努力,軟體永遠不會被孤立地構建,元件不斷地進行整合,而且每個人都能知道需要改進的地方一切正常。因此,開發和IT部門可以保證正在構建的內容將按照預期的方式進行部署和執行。業務上線的過程中就在不斷地突破瓶頸,因為在部署過程和生產環境中伴隨著軟體的測試,因此在開發週期結束時可以正常使用。
人員是DevOps成功的關鍵
成功的關鍵不是工具集,而是人員、溝通和度量。因為使用DevOps實踐,當開發新版本的軟體時間被限制在幾周或者幾個月內,在最終期限到來的時候,使用者不用擔心軟體的部署對生產造成的影響,因為在開發過程中一直在進行測試。
這就是為什麼它被稱為DevOps實踐,而不是DevOps過程、DevOps組、DevOps工具集或DevOps環境。容器可是成為DevOps實踐的一個補充,幫助管理生產環境,但它不應該是DevOps必須的。相反,專注於DevOps實踐,並在這個過程中使用容器才有意義。
本文轉自d1net(轉載)
相關文章
- 容器雲多叢集環境下如何實踐 DevOpsdev
- 在騰訊雲容器服務 TKE 中實踐 DevOpsdev
- 在容器環境搭建mysql備庫MySql
- 容器化環境中,JVM最佳引數配置實踐JVM
- 探秘Kubernetes:在本地環境中玩轉容器技術
- 在 kubernetes 環境中實現 gRPC 負載均衡RPC負載
- 在雲環境中實現成功的現代資料分析平臺
- 快速指南:在DevOps中實現持續交付dev
- DevOps: 使用Maven外掛實現分環境配置和版本檢查devMaven
- 在Jboss Cluster環境下如何實現Singleton?
- 2.10.1 在non-CDB(非多租戶)環境中克隆資料庫資料庫
- 在Docker容器環境中用Let's Encrypt部署HTTPSDockerHTTP
- docker 修改執行容器環境變數,如何修改容器中的環境變數env使長期有效Docker變數
- 在工業環境中透過預測性維護實現價值
- 非k8s環境下,進入docker某個容器內部K8SDocker
- 如何在雲原生環境中實現安全左移?
- 在AIX中設定中文環境AI
- 【唯實踐】容器環境應用一鍵拉起實踐
- 在Weblogic環境下的servlet中實現應用級身份認證 (轉)WebServlet
- 如何檢視Docker容器環境變數,如何向容器傳遞環境變數Docker變數
- 微前端中實現沙箱環境的方案調研前端
- 在ARC環境中autoreleasepool(runloop)的研究OOP
- 在AIX中設定中文環境(轉)AI
- Oracle 10.2的單機(非RAC)環境中建立ASM的實驗記錄OracleASM
- 在windows系統環境下實現NBU異機恢復Windows
- Dubbo Mesh 在閒魚生產環境中的落地實踐
- 如何在測試環境中實現 API 模擬呼叫API
- 基於DevOps的容器安全實踐dev
- docker(podman)容器設定中文環境Docker
- uboot環境變數實現分析boot變數
- 利用 trap 在 docker 容器優雅關閉前執行環境清理Docker
- 你問我答:DevOps完美實現一定要用容器嗎?dev
- 在Mac OS中搭建superset開發環境Mac開發環境
- 在debian中安裝Java環境(轉)Java
- 在DevOps中容器發揮很大作用,但也要注意安全風險dev
- 非域環境下SQL Server mirror建立SQLServer
- 如何在生產環境執行容器
- lamp環境搭建與phpwind,wordprss實現LAMPPHP