2016 年 9 月 18 日

DevOps与阿里云容器服务(一)

前言

本篇文章是整个系列中概念最多的一篇,后续文章大部分会以具体的场景为主,但在面对不同的场景前,希望大家记住DevOps不是银弹,一定要根据自己的需求与场景甚至公司的软件开发人员的能力与公司规模来选择具体的方案。
北京网站建设资讯 - DevOps与阿里云容器服务(一) - (1)

DevOps是什么

首先我们看下wiki百科的定义:DevOps(英文Development和Operations的组合)代表一种文化、运动或实践。旨在促进软件交付和基础设施变更软件开发人员(Dev)和IT运维技术人员(Ops)之间的合作和沟通。它的目的是构建一种文化和环境使构建,测试,发布软件更加快捷,频繁和可靠。
北京网站建设资讯 - DevOps与阿里云容器服务(一) - (2)

刚接触DevOps的时候,问10个人会有10个不同的答案。在刚开始的一段时间,我一直在思考为什么每一个DevOps的专家都会有自己的回答,在了解了他们的工作环境与业务后,我逐渐明白了这其中的原因。每个IT环境的不同,开发的工具不同,部署的环境不同,人员的能力不同,要达成的目标不同都会造成Devops的方式不同,那么对于我而言什么是DevOps,严格的来讲DevOps更多的是一种文化,一种从整个产品的生命周期的角度,通过自动化的方式减少因为从前由于流程或者认为干预而造成的开发周期冗长、人员效率低下、软件质量无法保证的一种方式与思想。

DevOps没有规定什么样的流程是一个标准的流程,因为DevOps的方案是随着你的业务场景、人员的能力、软件开发的复杂度、公司的规模等等变化而变化的,只有对于自己的业务与场景而言的合适与不合适,在本系列的后续文章中将会和大家一起讨论一些常见的DevOps的实践与方案,供大家参考。

瀑布开发模式、敏捷开发模式与DevOps

在大学的计算机课程上面,软件工程的老师一定会向大家讲述的是敏捷开发与瀑布开发。毕业后进入很多大型的公司后。大家面对的基本是瀑布开发模式或者敏捷开发模式,瀑布开发模式大致的结构如下:
北京网站建设资讯 - DevOps与阿里云容器服务(一) - (3)
核心的思想就是讲软件的生命周期分割为不同的阶段,每个阶段完成不同的任务,而且大多数情况下每一个阶段是由不同的团队完成的。这种开发模式比较适合传统大型软件的开发流程,产品负责人从项目的开始阶段就便于估算,项目开发中的每一个阶段都被预先计划,每一个需求都得到确认,在代码编写之前项目的结束标准就能够确定项目是否成功。这样就保证了项目开发的目的明确性。但是瀑布开发模式的缺点也是明显的,如果项目的任何一个阶段出现问题都可能导致整个项目的问题。从产品经理的角度来讲瀑布流可以提高整个产品的规划,但是对于开发人员来讲通常情况是噩梦一样的存在,特别是当开发人员在多个项目之间共享的情况。
敏捷开发是另种在工作中场景的开发模式,敏捷开发的产生一定程度上解决了瀑布开发模式的弊端,将一个大型的瀑布开发流程切分成了非常多的小的子任务,通过连续迭代的方式一步一步的完成一个大型项目的开发。
北京网站建设资讯 - DevOps与阿里云容器服务(一) - (4)
看上去敏捷开发与瀑布开发可以解决大部分的问题,那么DevOps又要解决什么问题呢。从软件开发的角色上面来讲一个项目的上线需要有开发的人员、运维的人
员、测试的人员。

北京网站建设资讯 - DevOps与阿里云容器服务(一) - (5)
而DevOps就是用来如何解决三个不同角色之间紧密协作的方式。这句话是非常堂皇的一句口号。到底如何解决协作的问题呢?通常情况下是围绕着两个关键词:“全局观”和“自动化”。

全局观的理解:要从软件交付的全局出发,加强各角色之前的合作。具体的来讲就是,参与项目的软件开发人员、运维人员、测试人员需要了解整个交付过程的步骤和流程。用一个比较实际的例子解释:在开发一个服务器端程序的时候,开发人员需要知道如何编写测试case、最后部署的环境、回滚的方案等等。测试的同学需要知道当前软件的架构使用什么样的测试手段与case可以更好的测试软件并做到快速阻尼的自动化测试,而运维人员需要能够提供更好的运维工具与运维系统便于开发人迭代、部署、监控整个项目的生命周期。

自动化的理解:人是创造力最强的生物,但却又是大部分问题出现的根源,尽可能的利用自动化脚本或者例如puppet、chef、ansible等自动化的工具来替代原本需要人工或者半人工的操作。

容器 DevOps = ContainerOps

当大家了解了什么是DevOps的理念了之后,我们要加入一个新的元素,那就是Docker。当容器遇上了DevOps是否会有什么更多的挑战呢?
北京网站建设资讯 - DevOps与阿里云容器服务(一) - (6)
关于Docker的内容,在此不做过多的介绍,下面我们来看下ContainerOps与传统的DevOps的相比面临了那些问题。
1.对于ContainerOps的场景,container到底是作为环境使用还是作为持续集成的基本单元。
2.原本可以采用自动化部署工具例如ansible,当切换为ContainerOps后该怎么做,替换的方案是什么。
3.对于传统的监控与日志的方式,容器化了之后如何实现。
4.对于现有的持续集成工具,如何同容器相结合
5.如何将一个已有的应用程序进行容器化,并使用containerOps
6.对于复杂的部署场景与流程,如何在容器的场景下实现
等等。这些问题将会在本系列的后续文章中一一为大家揭开答案,在下一篇文章中我们将首先会讨论的是如何利用容器hub与阿里云的容器服务实现一个简单的containerOps的实践。

最新文章

  1. 北京网站建设这些前期工作不能忽视
  2. 怎样确定网站建设需求 这些事项要知晓
  3. 北京网站建设如何才有一个好的优化效果
  4. 如何才能建设出一个高端的网站
  5. 公司网站建设上线之前要做什么准备
  6. 北京网站建设时需要遵守什么原则
  7. 北京网站建设周期长短的影响因素有哪些
  8. 导致北京网站建设失败的原因主要有哪些
  9. 北京网站建设的费用受到哪些因素的影响
  10. 网站中的图片要如何进行SEO优化

最新案例