DevOps運維開發一體化 - 公開課筆記
DevOps 運維開發一體化
DevOps 核心思想:最大化提升工作效率,通過一系列技術棧來體現。
開發人員
產品經理
測試人員
運維人員…
分部門的傳統的開發方式,開發週期一般比較長,部門比較分散,彼此之間的溝通可能不到位。
1、敏捷開發
2、產品與質量管理軟體(運維人員,環境搭建,維護,調優等、開發人員、測試人員、產品經理、專案經理使用)
常見軟體有:
Jira,大廠都用,是收費的國外軟體。國產有禪道,是免費開源的。
Gitlab也可以,有里程碑的功能,可以用於釋出任務。
TeamBition,比較小眾
3、程式碼倉庫管理 -> GitOPS,程式碼倉庫管理方面的運維
服務端:分散式去中心化的有GitLab,GitHub,原生Git,Gitee;中心化的有SVN
客戶端:終端 Git CLI,圖形介面的 TortoiseGit
4、開發流程規範
GitLab中有工作流GitLab FLow,而且GitHub,原生Git,都有工作流。
5、自動化構建指令碼
Maven,Ant,Gradle 等等
6、虛擬化與容器化
虛擬化與容器化是不同技術的體現。
虛擬化分為硬體虛擬化、軟體虛擬化,容器化是軟體虛擬化的一個分支。
虛擬化技術:
VMWare,企業版的ESXi,cVenter,桌面級的VM Workstation
XEN,Linux中原生支援XEN虛擬化,XenServer / Xen Client 是RedHat做的虛擬化技術。
KVM,新版的Linux核心原生支援KVM
Hyper-v,Windows Server 2016 已經發展到了第二代,在Windows上是最好的虛擬化技術,在Win Server 2012 的時候釋出的第一版。
容器化技術:
LXC,LXD,兩個Linux上的虛擬化技術,是名稱空間的隔離。
Docker,早期也是基於LXC的,後來使用google開源的引擎做處理。CentOS 7.6 之後,底層對於 Docker 的支援已經發生了變化,逐漸被淘汰。為什麼呢,因為Docker是典型的CS架構,有服務端與客戶端。服務端有一個守護程序,Docker的守護程序是它的缺點。、
Podman技術,下一代容器技術,原生支援Docker所有的API,不需要和Docker一樣的守護程序。
7、持續整合和持續部署 CI / CD
CI:持續整合工具,Gitlab,Git,TeamCity
CD:持續部署工具,Jenkins
8、持續監控 / 監控管理工具 CM
持續監控工具,Zabbix,普羅米修斯
監控管理工具:單機監控;叢集監控;容器監控;日誌分析系統ELK等等
9、自動化工具
基於Python / 通過指令碼
可以使用 Python 相關工具,如 Ansible 自動化運維工具,Puppet 等
10、自動化測試
Python 自動化測試
Appium 工具
11、雲端計算技術體系
雲端計算管理平臺 opencloud,底層是虛擬化技術,相當於是一個資源池(CPU算力、儲存、網路資源)整合在一起,然後服務的形式提供給別人。
平臺:
OpenStack,服務非常重,漸漸淘汰了,收費
ZStack,國產的平臺,有免費版,收費版
容器雲,結合k8s,故障轉移,秒級啟動。程序間通訊的安全問題有待於加強。
MySQL可以在容器中做嗎?需不需要單獨的物理機?
可以在容器中,但是你公司必須有容器玩的非常明白的大牛牛才可以,否則你的資料會有可能丟,涉及到持久化等等的問題。
盲目的上雲、盲目的使用容器,會帶來很多問題。