ITPub博客

首页 > 自动化运维 > DevOps > 初识DevOps

初识DevOps

原创 DevOps 作者:天翼云开发者社区 时间:2022-05-12 15:33:59 0 删除 编辑

基本概念和延伸的思考

DevOps,是 Development (开发) 和Operations (运维)组成的复合词,一般译为 “开发运维一体化”。

 

看到这个概念,首先会产生几个问题:

开发是什么,哪些环节是开发?

运维是什么,哪些环节是运维?

开发人员写好代码在本地调试,环境出问题了自己来调整,这是开发工作还是运维工作?

系统故障后,运维人员发现是配置文件内容出错了就改成了正确的信息,这是运维还是开发工作?

这些问题不正是说明本身开发和运维本来就是一体的吗,为何还要进行开发运维一体化?

 

每个切身参与到开发和运维的员工,日常工作一定经常遇到各种界限不清晰的问题。面对这类问题,应对策略和解决方法, 大致分为如下两个方向:

1、 从管理角度,制定工作环节和流程的规章制度,规范人员行为,确保开发和运维环节的衔接。

2、 从技术研发 角度 ,研究开发过程的管理工具,减少人工的环节,从而减少问题出现的机会。

敏捷管理

管理角度上,从瀑布式开发到敏捷开发,人们一直在面对的是软件不断发生变更的需求场景,从而被动衍生出来一套应对频繁变化,快速迭代的管理模式。

 

传统的 瀑布 开发流程是:

l  需求人员 收集客户需求 ;

l  进行 需求 分析 ,输出需求规格说明书 ;

l  召集 开发部门 宣讲需求 ,开发 人员开始编写 代码;

l  写好 代码 以后,进行后续的代码构建 、测试环境部署;

l  经过测试部门测试,通过后交给实施部门;

l  实施部门进行生产环境部署。

在瀑布模式和敏捷开发共同出现的语境中,人们经常认为瀑布模式是一种过时的技术,缺点很多的技术。而通过上述的流程可以看出,瀑布模式清晰的定义出了各个环节的职责范围,保障软件开发工作无偏差、高质量的完成。

 

而敏捷开发出现不是为了颠覆瀑布模式,而是弥补瀑布模式周期较长不够灵活这一缺点。

敏捷开发并没有抛弃瀑布开发的工作环节,而是在经常发生变更的场景下,进行灵活的工作调整,来实现在变化中迭代的效果。

丰富的工具

技术角度上,开发过程的各个环节,都已经诞生出多种适用于各种不同场景的工具。有开源、有商用,供各类不同的用户选择。

 

一些常见的技术 :

版本控制&协作开发 : GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
自动化构建和测试 : Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit
持续集成&交付 : Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
容器平台 : Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/ 天翼云 )
配置管理 : Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
微服务平台 : OpenShift、Cloud Foundry、Kubernetes、Mesosphere
服务开通 : Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
日志管理 : Logstash、CollectD、StatsD
监控,警告&分析 : Prometheus、 Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana

 

可以看到工具不仅仅局限在开发环节,构建、测试、部署、运维工具也均发展出了优秀的软件和技术。

 

优秀的开发管理模式和成熟的技术的相融合,形成了今天我们看到的 DevOps模式。

实践 DevOps的原则

那么现在技术已经具备了,优秀的开发管理模式也具备了。如何结合两者,形成一个借助工具来快速、自动化的完成整个开发生命周期的模式呢?

答案就是 DevOps。

 

但需要注意的是, DevOps并非一套通用方法来做技术和流程的结合。而是技术和流程结合这一实践过程中,不断调整、探索,最终达到一个适合自己的模式。

 

每个开发者或者企业都有个性的工作和管理模式。没有一个标准的方案能够适用于每个企业,企业在践行 DevOps时应该充分考虑这样一些原则:


1、基础设施即代码(Infrastructure as Code)

DeveOps的基础是将重复的事情使用自动化脚本或软件来实现,例如Docker(容器化)、Jenkins(持续集成)、Puppet(基础架构构建)、Vagrant(虚拟化平台)等 。

 

2、持续交付(Continuous Delivery)

持续交付是在生产环境发布可靠的软件并交付给用户使用。而持续部署则不一定交付给用户使用。涉及到2个时间,TTR(Time to Repair)修复时间,TTM(Time To Marketing)产品上线时间。要做到高效交付可靠的软件,需要尽可能的减少这2个时间。部署可以有多种方式,比如蓝绿部署、金丝雀部署等。

 

3、协同工作(Culture of Collaboration)

开发者和运维人员必须定期进行密切的合作。开发应该把运维角色理解成软件的另一个用户群体。协作有几个的建议:1、自动化(减少不必要的协作);2、小范围(每次修改的内容不宜过多,减少发布的风险);3、统一信息集散地(如wiki,让双方能够共享信息);4、标准化协作工具(比如jenkins) 。

高效便捷的DevOps体验- --- 天翼云EasyCoding敏捷开发平台

阐述了这些概念之后,有没有快速实践 DevOps的方法呢?

市面上目前已经出现大量成熟的 DevOps平台供用户挑选了,很多平台都能够进行试用,让用户尝试DevOps,体验DevOps带来的进步。

 

天翼云 EasyCoding敏捷开发平台就是这样一款产品, 以产品价值在线化,交付价值自动化为设计理念,提供敏捷开发SaaS服务,助力大中型企业高价值、高质量、高效率发布产品,开启高效研发之旅 。

 

天翼云 EasyCoding平台具有这些优势:

l  灵活的编排能力

可灵活编排的工作项界面、流程和规则,支持各种复杂的业务,可编排的流水线。

l  灵活的扩展能力

支持应用、单据、属性、事件多级扩展机制,实现无代码或低代码的扩展

l  完善的开放生态

可基于丰富的前端组件和后端API、易用的公共服务定制开发衍生应用

l  快速稳定的响应

基于搜索引擎的读写分离,保障高并发、大数据量场景下稳定的性能

l  前瞻性的管理思想

交易流程在线,业务活动在线,端到端全程可视跟踪业务活动

l  稳定安全的研发环境

基于天翼云的接入安全、数据安全管理,多副本容灾架构设计

 

 

下期我们将介绍天翼云 EasyCoding的基本使用方法,带您一步步走入DevOps。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70014251/viewspace-2893737/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

注册时间:2022-02-22

  • 博文量
    1102
  • 访问量
    767969