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可以在容器中做吗?需不需要单独的物理机?
可以在容器中,但是你公司必须有容器玩的非常明白的大牛牛才可以,否则你的数据会有可能丢,涉及到持久化等等的问题。
盲目的上云、盲目的使用容器,会带来很多问题。