DevOps学习

DevOps学习

目录:
1、DevOps是什么
2、为什么要采用DevOps
3、DevOps的核心理念
4、DevOps与ITIL对比
5、DevOps工作核心
6、如何实现DevOps

DevOps是什么

DevOps:

Development and Operations的组合词,其不是一种开发工具,而是一种框架,包含了许多优秀想法和原则,是一种重视软件开发人员(Dev)和IT运维人员(Ops)之间的沟通合作,通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加快捷、频繁和可靠。


为什么要采用DevOps

(1)首先,在缺乏DevOps能力的组织中,各职能人员之间存在着信息“鸿沟”:

l 运营人员:要求更好的可靠性和安全性;

l 开发人员:希望基础设施响应更快;

l 业务人员:其需求则是更快地将更多的特性发布给最终用户使用。

也就是说,开发部门的驱动力是需求变更后要交付新特性,运营部门的驱动力则是可靠性和效率。两者的目标不匹配,因此减慢了业务效率以及IT交付的速度。

(2)其次,烟囱式自动化,即数据中心是基于单个项目建设的,其特点为“烟囱式”,也就是垂直的体系结构,每一个IT系统都有自己的存储和IT设备,以及独立的管理工具和数据库,不同的系统不能共享资源,不能交付和访问,形成了资源孤岛和信息孤岛。会使得企业IT系统出现三大问题:

l IT资源的服务率非常低;

l IT基础设施复杂,难以适应业务变化的需求;

l 服务器数量和管理的总体成本太高。

而DevOps的目标就是实现流程的自动化,从而大大节省成本,其目的就是提高客户的相应能力,能够适应频繁变动的业务需求,在工程中,发现问题的速度越快,成本也就越低。

(3)使用DevOps模型,会使得这些领域从中受益:

l 自动化

l 监视

l 能力规划

l 性能

l 备份与恢复

l 安全

l 网络

l 服务提供

l ……


一句话概括:

DevOps的引用可以使得开发部门、运营部门、质量保障部门之间相互沟通、协作和整合,可以对产品交付、测试、功能开发和维护起到意义深远的影响。


DevOps的核心理念

(1)敏捷:

l 尽早地、持续地交付可评价的软件来使客户满意;

l 开发整个期间都乐于接受需求变更;

l 业务人员和开发人员在项目开发期间要朝夕工作在一起;

l 保持开发团队间面对面交谈、视频会议、电话、即时通讯、Email等;

l 可持续发展,出资人、开发人员及使用者应该总是维持稳定的开发速度。

(2)精益:

l 杜绝浪费;

l 内建质量;

l 延迟决策;

l 快速交付;

l 全局优化;

l 团队授权。

 

一句话概括:

DevOps的核心理念也就是使用最少的成本、最快的速度、最高的品质、来满足客户的各种需求场景。


DevOps与ITIL对比

(1)首先,介绍下ITIL的定义:

ITIL为企业的IT服务管理实践提供了一个客观、严谨、可量化的标准和规范,企业的IT部门和最终用户可以根据自己的能力和需求定义自己所要求的不同服务水平,参考ITIL来规划和制定其IT基础架构及服务管理,从而确保IT服务管理能为企业的业务运作提供更好的支持。

(2)DevOps与ITIL对比:

l 在支撑IT运维的业务流程方面,ITIL和ITSM流程无疑还是最好的。ITIL描述了需要被IT运维支持的功能集合,这些功能集合足以支撑DevOps式的工作流。

l 敏捷和持续集成以及持续发布是开发的输出,这些输出同时作为IT运维的输入,为了适用跟DevOps相关的快速部署的节奏,ITIL流程的很多方面,特别是围绕着变更、配置和发布流程方面,需要自动化。

l DevOps的目标不仅只是增加变更的频率,而且也支持在不中断和破坏当前服务的基础上,确保功能部署成功,同时也可以快速检测和修复缺陷。这相当于是引入了服务设计,事故和问题管理方面的ITIL新准则。


DevOps工作核心

DevOps的信条在于:“越是困难的事,需要更频繁地进行!”

(1)其工作核心为:

l 持续交付:团队确保每个变更可以部署至生产环境,但也许并不需要实际部署。

通过将每一次改动都提交到一个模拟产品环境中,使用严格的自动化测试,确保业务应用和服务能符合预期,使用完全的自动化过程来把每个变更自动的提交到测试环境。

l 持续部署:每个变更可以自动部署到生产环境。

将开发机构的文化、流程和工具整合到一起,让软件交付过程中的每个人都能看到每个构建版本从提交到发布的整个过程。

 

图5.1 思路图

 

(2)通过什么方式实现这两点呢?

l 把对于发布、备份、监控、安全、配置管理和系统功能的测试作为一项独立的项目流程;

l 与客户的每一次变需求更都拥有清晰的文档概括;

l 独立于目标环境的自动化打包和部署;

l 软件的持续审计;

l 给运维人员做培训,让他们弄清楚项目的体系结构和核心代码;

l 开发人员与运维人员共同开展会议,分享项目进度,共同修订工作计划;

l 在生产级环境实现功能测试的自动化;

l 对软件组件的平台配置应进行持续集成。 


如何实现DevOps

DevOps本身不是开发工具,而是开发流程中的一次革新,为了能够成功地实施DevOps,需要借助一些工具。

开发类的DevOps工具又分为:

l 版本控制和协作,例如Git、SVN等;

l 构建和测试自动化,例如Ant、Selenium、Jmeter等;

l 持续集成和交付,例如Jenkins(开源持续集成组件)、CruiseControl等;

 

部署类的DevOps工具分为:

l 容器平台,例如Docker(开源容器组件)等;

l 配置管理,例如Chef、Puppet、Ansible等;

l 微服务平台,例如Cloud Foundry、Kubernetes(开源产品化容器编排平台)等;

l 服务开通,例如Puppet、Docker Swarm、Vagrant等;

 

维护类的DevOps工具分为:

l 日志,例如logstash等;

l 监控告警和分析,例如Nagios、Zabbix(开源自动化监控组件)、Kibana等;

 

下面列出四种工具的介绍:

A)Docker

使用Docker——以容器化的方式去部署应用,进行持续集成。Docker像集装箱一样,打包了所有依赖,再在其它服务器上部署很容易,不至于换服务器后发现各种配置文件散乱放置,这样就解决了编译时依赖和运行时依赖的问题。Docker简化了配置管理,提升了可操控性,并让横向扩展变得简单。Docker还能让容器在不同的位置自由地移动。

B)Jenkins

支持项目的自动化测试、自动化构建、自动化docker镜像打包、自动发布docker镜像到Docker registry、自动发布应用到Kubernetes容器云等DevOps核心流程。

C)Zabbix

对平台的物理主机以及虚拟主机进行监控,自动收集主机状态并产生告警,同时可以触发通知和故障修复操作。

D) Git

Git平台有助于开发者们在上面进行协作,进行统一的代码管理,如代码仓库、代码拉取等等。与GitHub的集成十分容易,几乎任何系统都可以连接到GitHub上,没有什么特殊限制。GitHub也可以放置个人信息和项目相关的数据。GitHub优于其它SCM工具的地方在于,它支持本地分支、过度区域和多工作流。


以下是一个典型的DevOps学习路线: 1. 学习基础知识: - 了解DevOps的概念和原则。 - 学习常用的DevOps工具和技术,如版本控制系统(如Git)、持续集成(CI)和持续交付(CD)工具(如Jenkins)、容器化技术(如Docker)等。 2. 学习软件开发和运维技能: - 学习至少一种编程语言,如Python、Java或Ruby,以便能够编写自动化脚本和工具。 - 学习Linux系统管理和命令行操作,以便能够管理和配置服务器。 - 学习基本的网络知识和安全性,以便能够理解和解决与网络和安全相关的问题。 3. 学习持续集成和持续交付: - 学习使用CI/CD工具,如Jenkins、Travis CI或GitLab CI/CD,来自动化构建、测试和部署软件。 - 学习编写自动化测试脚本,以确保软件质量和稳定性。 - 学习使用容器化技术,如Docker和Kubernetes,来实现可移植性和可扩展性。 4. 学习基础架构和云计算: - 学习基础架构的概念和原则,如虚拟化、负载均衡和高可用性。 - 学习使用云计算平台,如AWS、Azure或Google Cloud,来部署和管理基础架构。 5. 学习监控和日志管理: - 学习使用监控工具,如Prometheus、Grafana或ELK Stack,来监控应用程序和基础架构的性能和可用性。 - 学习使用日志管理工具,如Splunk或ELK Stack,来收集、分析和可视化日志数据。 6. 实践和项目经验: - 参与实际的DevOps项目,如构建和部署一个Web应用程序或开发一个自动化测试框架。 - 参与开源社区,与其他DevOps专业人员交流和分享经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值