DevOps定义
DevOps是软件开发(Development,简称Dev)和信息技术运维(Information Technology Operations,简称Ops)的结合。
它强调开发和运维团队之间的沟通、协作、自动化和整合,以提高软件交付的速度和质量。
DevOps发展背景
1)单体架构+瀑布模式:早期的软件开发,通常由全栈开发者负责,开发完成后手动部署到服务器。
2)分布式架构+敏捷开发模式:随着业务增长,需要多人协同开发,引入了敏捷开发方法,测试与开发同步进行。
那么引入以下问题:
①多人协同开发问题:
随着团队成员的增加,项目需要进行合理拆分,以便每个成员可以专注于特定的部分。
敏捷开发的核心理念是将大目标拆解为可交付的小目标,并通过持续迭代来实现。
为了提高开发效率,测试环节需要与开发同步进行,确保每次交付的都是经过验证的功能集合。
②多机器问题:
随着业务的扩展,单一服务器无法承载所有业务,需要增加更多的机器,这导致架构变得更加复杂。
开发人员可能需要编写脚本来管理多台服务器上的部署,但这种方式存在效率低下和部署冲突的风险。
③开发与运维角色的对立:
开发团队的职责是不断推出新代码和功能,而运维团队则更注重系统的稳定性和安全性。
这种天然的对立导致开发和运维之间可能存在沟通和协作的障碍,影响软件交付的速度和效率。
④部署和上线流程的问题:
在没有自动化部署工具的情况下,上线新代码可能需要运维团队的介入,这可能导致部署流程缓慢和繁琐。
为了解决这个问题,需要引入自动化部署流程,减少人工干预,提高部署的频率和可靠性。
⑤监控和维护的挑战:
随着服务器数量的增加,手动监控每个服务器的状态变得不现实,需要自动化的监控工具来提高效率。
运维团队需要编写各种脚本来维护服务器,减少重复性工作。
3.)微服务架构+DevOps:进一步将应用拆分为小型服务,每个服务独立部署,通过API通信,促进了DevOps的实践。
DevOps深度理解
DevOps全流程
DevOps覆盖软件从规划到交付的整个生命周期。
端到端概念
DevOps关注从开发到产品上线的整个流程。
三大支柱
①人:跨部门团队的沟通与协作。
②流程:自动化的构建、测试、部署等。
③平台:提供工具支持流程自动化和优化。
实践意义
效率:自动化加速软件交付。
质量:及早发现问题,提升软件质量。
协作:打破开发与运维隔阂,促进团队合作。
适应性:快速响应市场和用户需求变化。
DevOps实现相关工具
项目管理:Jira
代码管理:GitLab
持续集成(CI):GitLab CI
持续交付(CD):GitLab CD
镜像仓库:VMware Harbor / Nexus
容器技术:Docker
容器编排:Kubernetes(K8S)
服务治理:Consul
脚本语言:Python
日志管理:Cat+Sentry / ELK
系统监控:Prometheus
负载均衡:Nginx
API网关:Kong / Zuul
链路追踪:Zipkin
产品和UI设计:蓝湖
内部文档:Confluence
DevOps文化
DevOps 强调跨部门合作,减少开发与运维之间的隔阂。
通过自动化工具和流程,提高软件交付的效率和可靠性。