EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、DevOps和IPD的关系
9 v8 T/ [. N5 x7 F1 a: |# y DevOps是Development和Operations这两个词的组合词,是一组过程、方法与系统的统称,你可以理解为一种软件开发管理技术/方法,采用这种软件开发管理技术能够促进软件开发人员、IT运维人员和质量保障人员之间的沟通协作,并通过自动化工具和“软件交付流程”和“架构变更流程”,来使得软件产品的构建、测试、发布软件能够更加地快捷、频繁和可靠。 . D/ s& F: C: F; H S( y: Y
q" t. P% o9 u( S
1 U0 o( R7 D# p(由此可见DevOps主要应用于软件开发领域,从跨部门协作来讲,和IPD倡导的跨部门沟通协作是一样的,只不过DevOps更多强调“软件开发人员”和“IT运维人员”之间沟通合作;从目的来看,IPD强调一次性的商业成功,避免投资风险,而DevOps强调软件开发和交付的快捷、频繁、可靠,对商业成功的关注是间接的,通常开发过程不会有高层领导的决策)
2 z$ c: N; K5 p, C! r- x& W# k. z1 a+ H) e, N5 w; p
7 L& q' l5 T4 s, k 软件工程传统的软件组织模式是将软件开发、IT运营和质量保障设为各自分离的部门,使得交付效率低下, DevOps就是解决这些问题的沟通流程和方法。这和IPD解决传统的制造性企业采用职能制导致“部门墙”,加强了跨部门协作功能是一致的,只不过DevOps范围要更聚焦,当然与软件行业的特点有关。 ' A3 ^6 j$ m: \
% v( t( I( f5 g+ E9 \8 K, R DevOps的引入能对软件产品交付、测试、功能开发和维护起到意义深远的影响。而IPD的引入是企业产品开发模式的变革,将产品开发作为一种投资行为来看待,形成跨部门的团队围绕客户需求和商业成功进行开发管理,强调一次性把事情做对。 6 n3 E4 g5 A) x+ \$ |, D5 S5 `4 U& ~
+ `% D9 t: B8 t; e2 j
0 n Q* o9 J4 G0 \* I
DevOps提升了“开发团队与运营团队之间的协作性,而IPD则提升了整个企业跨部门在产品开发方面的协作性。传统的IPD产品开发流程是瀑布式开发模式,DevOp采用了敏捷或迭代式开发模式,意味着更频繁的发布,而不像传统制造业那么在乎成本。由于DevOps强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性,也就是这种模式是“以快取胜”。
* }: S$ V3 H/ Q8 w+ g
2 x7 O f L! W/ r " V$ X8 D+ c! r1 y$ P
传统的IPD模式中,产品开发完成后交给测试团队,测试完成后对客户发布,而DevOps下,开发即运维,运维及开发。开发是由功能性需求(通常与业务需求直接相关)驱动的。运营是由非功能性需求(例如可获得性、可靠性、性能等)驱动的。运营人员希望尽量避免修改功能,从而降低满足非功能性需求的风险。这和IPD在定义产品包需求时,需要考虑下游客户的DFX需求是一致的。 : z: N& W/ C8 X- [) y& B
$ x9 h: a) |! T, M
) W. [4 z& c8 T: a$ J* { DevOps变革必须获取本组织自顶向下的全面支持,同样IPD变革更是“一把手”工程,主要对企业的创新管理思想和体系建设带来深远影响,不仅适用于传统制造业,也适用于互联网或软件企业的宏观管理。相对来说,对于互联网软件企业来讲,DevOps更具有适用价值,无论是纵向集成还是横向集成,都需要通过工具链与持续集成、交付、反馈与优化进行端到端整合。比如针对互联网软件开发,华为软件开发云提供了项目管理、配置管理、代码检查、编译构建、测试、部署、发布等端到端地覆盖软件生命周期的相关服务。
( Y2 ]0 g B# N' i ~% {; \7 D
9 ~, ` k6 ?) @& x0 I" V/ E, {, m ) W: A- a6 h( t& H o9 J4 y
二、DevOps和敏捷的区别与联系 : D. r( q* s5 s" }1 G- v( W
1 r4 Z# I4 B3 t9 F! Q1 a2 E 在两者都都没有出现前,软件开发管理流程是瀑布开发流程,主要解决的是时间、成本、范围不可控的问题,瀑布流程来源于生产和工程领域,这些领域适合线性化的流程:正如房屋封顶之前需要先盖好支撑墙。后来瀑布模型被认为对软件开发是不利的,而且违反人的直觉,因为通常直到开发流程的最后才能体现出项目的价值,这导致许多项目最终都以失败告终。而且,在项目结束前客户看不到任何可以工作的软件,这是软件开发不同于一般工程制造领域产品开发的特点。
9 G1 K- D6 ]& `# x+ l4 E
, A, d% Y) ~$ y6 ~7 j5 M - j4 P7 j% |1 ^3 ~$ I
敏捷(Agile)采用了一种不同的方法,它抛弃了规划整个项目,承诺估计的时间点,简单的遵循计划。与瀑布流程相反,它假设和拥抱不确定性。它的理念是以响应变化代替讨论过去,它认为变更是客户需求的一部分。所以敏捷开发模式相对于传统瀑布模式是一种革命。敏捷软件开发需要自适应的规划、演进式的开发和交付。许多软件开发方法、框架和实践遵从敏捷的理念,包括:Scrum、看板(Kanban)(可视化工作流)、极限编程(Xtreme Programming)(XP)、精益方法(Lean)、DevOps、特性驱动开发(Feature-Driven Development)(FDD)、测试驱动开发(Test-Driven Development)(TDD)、水晶方法(Crystal)、动态系统开发方法(Dynamic Systems Development Method)(DSDM)、自适应软件开发(Adaptive Software Development)(ASD)等。
7 m& y4 I, f$ S. _2 N6 J- @/ U% U6 a; J) g( \ t
; p6 M8 O5 [' g B3 e* ]
其中,DevOps就是其一种方法,它来源于精益和敏捷,又自成体系,是敏捷和精益实践基础上的再创造、再实践,并被上升到文化和思维方式层面,是关于软件开发和 IT或基础设施实施的共享文化和思维方式。他主要是改善软件产品的交付能力的,因为交付能力最终还好影响到组织的最终成果,例如利润、市场份额、质量、客户满意度以及组织战略目标的达成。从这个角度看,DevOps还是为IPD最终的商业成功服务的。无论敏捷也好,还是DevOps也好,都是通过这些软件开发实践来提升交付能力,为商业成功服务。
! @9 T |* }( y& j) b0 B0 n( v3 N! a+ M3 @$ r6 v
4 o8 v) F! p) x# i# {3 } l
敏捷和DevOps的相似之处:两者都是软件开发技术,两者都追求软件的快速开发,它们的理念都基于怎样在不伤害客户或运维利益的情况下快速开发出软件。不同之处在于软件开发完成后发生的事情。在 DevOps 和敏捷中,都有软件开发、测试和部署的阶段。然而,敏捷流程在这三个阶段之后会终止。相反,DevOps 包括后续持续的运维。因此,DevOps 会持续的监控软件运行情况和进行持续的开发。实际上就是DevOps 将IPD的生命周期阶段浓缩在一个不断迭代、持续精进的循环中。 4 @! D/ \! S+ D; {. W9 S* E
- i7 D5 K E* a4 V, L+ ^* ~7 I
|