一同进步 发表于 2020-3-18 16:13:48

深度剖析DevOps系列(4)-- Devops in Cloud

本帖最后由 adminlily 于 2020-3-18 16:43 编辑

// /upload_images/2324445-f154f07e63b1e3c3.png

1.理论基础

本篇是基于公司内部的一次DevOps分享,PPT是自己准备的一些内容。


目前主流的开发模型相信大家都清楚,这边简单介绍一下:


• 瀑布开发模型:生命周期很长,一般会完整的走如下流程:需求调研->详细设计->编码->测试->部署->运维,且下一环节需要等上一环节完成后才可以继续进行,往往需求阶段和测试阶段会占据很长时间,且需求调研结束后很少再做修改,因此,在一个长周期的开发完成之后反馈给客户,往往会进行一次较大的修改和调整,后期修改成本及其大。


• 敏捷开发模型:这种开发模式以一种不断迭代的方式缩短开发周期,把一个整体大的需求分成若干小的需求,进行迭代开发,并将产品反馈给客户的时间缩短,不断从客户得到反馈,并且不断修改直至客户满意,这种方式大大缩短了客户和开发测试之间的距离,把修改的成本缩短到一个小需求的生命周期,节省了修改成本。但是并没有解决开发和运维之间的协同合作,因此,DevOps应运而生。


• DevOps模式:该模式强调一个运维和开发不断沟通的能力环,在开发阶段我们沿袭敏捷的开发模式,在运维阶段,我们强调自动化的运维,并不断讲已经上线的产品中的问题反馈给开发,以进行问题修复。


我们可以看到,对于一个软件的生命周期,基本流程都类似,只是在各个阶段我们做了不同的优化,而且这种优化也是经历过考验的可以实施的最佳实践。


// /upload_images/2324445-c802e0ec1a228626.png



1.1 软件工程模型演变





2.什么是DevOps




那么什么是DevOps呢?有人认为DevOps是运维+开发,有人认为是自动化,也有人认为是Ias,当然,这些认识都是有其道理,也是DevOps中不可或缺的一部分,但大多都是盲人摸象,没有对DevOps有个整体的认识,对于DevOps的认识,


请转至第一章:深入剖析DevOps系列(1)

// /upload_images/2324445-1415f6a7a621186c.png



1.2 谁应该关心DevOps?



3.Develop和Operation的历史问题


开发和运维人员素来就被一种叫做部门墙的隐形之墙所隔离,这种问题由来已久,


原因1:开发和运维的目标不一致,开发的目的是不断的增加新功能,不断完善需求,不断发布新版本,总之对于开发来说,唯一不变的就是变化,但是,对于运维来说,首要的问题是要求稳,因为一切问题的来源都是变化。


原因2:两个角色所在的部门考核标准不一样,对于开发来说,新开发一个需求考核就递增一点,是个累加的过程;而对于运维来说,即使将发布工作做的极致,起点也只是0,因为,这本来就是运维应该做的,一旦出了问题,便会从0开始递减,是个递减的过程。


// /upload_images/2324445-c6dfdf50df160fe3.png



1.2.1DevOps 是一角色



4.DevOps要解决的问题



DevOps首要解决的问题就是Develop和Operation间的这堵部门墙,一种模式就是借鉴敏捷开发的模型,将运维人员纳入到整个团队,之于团队的定义,就是有着共同目标的一群人


亚马逊有一种模式,叫做2 pizza team,用2个pizza就能搞定的Team定义为DevOps Team,当然,这个是一种抽象,目前最佳实践的DevOps team比例为1:4:1:1,即一个需求,4个开发,一个测试,一个运维,当然,可以根据不同公司的不同需求做一些调整。


// /upload_images/2324445-a3c7011b5af43d43.png





1.2.2 DevOps 是一种工作方式





5.DevOps遇到的强力阻碍




对于现在很多公司来说,存在很明显的责任推脱问题,相互推诿,相互指责,屡见不鲜,对于DevOps乃至整个公司来说来说,这不是一种好的工作状态,所以DevOps强调信任,沟通,相互学习和责任共担。开发,测试和运维之间的各种活动都需要把其他人作为关键干系人,做到测试和运维了解需求,开发和运维了解测试,测试和运维了解开发等等,当然,了解并不是让开发去做测试的事情,或者运维去做开发的事情,我们强调的,是沟通和相互了解~





1.2.3 Devops是一种组织文化



// /upload_images/2324445-d4aab0eef7ef0886.png



1.2.4 DevOps 是一组技术/实践



// /upload_images/2324445-a00c8d00f8c80e3f.png



1.2.4 DevOps 是一组技术/实践(1)



// /upload_images/2324445-b5b7570ab211ddf6.png



1.2.4 DevOps 是一组技术/实践(2)



// /upload_images/2324445-f4c9fd421eb4e735.png



1.2.4 DevOps 是一组技术/实践(3)



// /upload_images/2324445-a2e10d0b4853927d.png



1.2.4 DevOps 是一组技术/实践(小结)



// /upload_images/2324445-6668129c0bc04ee5.png



1.2.5 小结: 什么是 Devops



// /upload_images/2324445-cc8d210fa50d066b.png


// /upload_images/2324445-d986b846c7dfc530.png



2.1DevOps in Cloud(AWS)



// /upload_images/2324445-4ee20e58f76fac06.png



2.1.1DevOps in Cloud in AWS



// /upload_images/2324445-d8d7cc30bec69cae.png



2.1.1DevOps in Cloud in AWS



// /upload_images/2324445-0e3476b8ed987554.png



2.2AWS 持续集成(CI)模型


// /upload_images/2324445-1203fde9b673f9e2.png



2.2.1CI – Code Commit



// /upload_images/2324445-02ccfa5b1dfb1c53.png



2.2.2CI – Code Build



// /upload_images/2324445-a61147cfc37ac215.png



2.2.3CI – Code Pipeline



// /upload_images/2324445-bdedf989c18af288.png



2.3AWS持续集成(CD)模型



// /upload_images/2324445-c0451ee2d0a2fb14.png



2.3.1CD – Elastic Beanstalk



// /upload_images/2324445-f8945483c0934241.png



2.3.2CD – OpsWorks



// /upload_images/2324445-fa4c325b9e9bb8b1.png



2.3.3CD – Cloud Formation



// /upload_images/2324445-d1473e47ddc059ff.png



2.3.4CD - CodeDeploy



// /upload_images/2324445-273678cd94ced2f3.png



2.3.5CD – 小结



// /upload_images/2324445-273d025d425e19ff.png



2.5Sample Pipeline in DevOps






页: [1]
查看完整版本: 深度剖析DevOps系列(4)-- Devops in Cloud