首页  ·  知识 ·  IT治理
云时代,你需了解开发运维DevOps新趋势
王雪燕  51cto  IT运维  编辑:修洁   图片来源:网络
在这信息化时代,云计算与数据中心(运维机房)是大数据、物联网、人工智能等的基础。云计算是开发和运维的屌丝们对IT的逆袭。运维人员需要了解一些开发运维DevOps新趋势,来应对飞速的

信息化的时代大数据、物联网、人工智能等这些热词经常出现在话语间,这些概念之间相互交叉相互促进着。如物联网会产生海量数据、如机器学习会把这些数据加以分析产生更好的效果。张侠表示,云计算与数据中心(运维机房)促使这些热门行业越来越火。云计算是开发和运维的屌丝们对IT的逆袭。原来运维人员的具体分工多处在底层,但在云时代,开发运维一体化使得运维人员变得尤为重要。 运维人员需了解一些开发运维DevOps新趋势,来应对飞速的变化。

应该了解的运维新词和术语

在揭晓云时代开发运维DevOps新趋势之前,这些运维的新词和术语大家应该了解。张侠表示,开发运维在云时代会越来越火、更会有越来越多的先进内容,下面这些远远不够,但确实是必须要知道的。

新词

  • Scrum, Agile, Kanban——敏捷性、灵活性、看板

  • TDD、BDD、DDD——测试驱动设计、行为驱动设计、域驱动设计

  • CI, CD, Cloud——持续概念、持续部署、云

  • DevTestSecFinChatOps——开发一体化、测试运维、安全运维、财务金融运维等

术语

  • DevOps——是一种开发、测试、运营、维护部门之间沟通、协作与整合的软件过程、方法与系统。

  • 微服务 Micro Service: ——一个单纯的小型的有意义的功能。

  • 容器 Container——容器是用来存储和组织其他对象的对象。

  • Docker—— 一个开源的应用容器引擎

blob.png

为什么需要DevOps?

为什么需要DevOps?最主要原因是原来开发完成后就交给运维人员,两个团队之间貌似有一堵墙,各干各的活。这种开发一般是一两个月搞出一个版本,像金融银行这样的传统行业,有时一季、半年出一个版本就很不错了。但在互联网时代,需要快速的创新、快速的迭代,一天可能就要推出多少个版本,那这里就需要用到DevOps的方法。

微服务,是支撑DevOps方法的手段,传统开发是在一个服务器里面,把各种元素装在一起组合成一个程序,但微服务是每一个服务是一个单独的单元,可以部署在不同的服务器上,通过SOA的方法,把它连接起来,再提供整个功能。

blob.png

如上图类似一个光纤的截面,每一个小光纤点是一个微服务,微服务构造的程序变成下面的结构,很多小结点密密麻麻连在一起。微服务面向服务的架构由单一原生的小的服务来构成,再通过APIs调用它们,使得这个程序从这个层次上,把它更加的结构化,一个一个的单元化,然后再可以重新组合。

blob.png

从单体到微服务开发生命周期

微服务如何做开发?传统开发者分成很多团队,整个工作常用程序,做好后涉及到整个建造、编辑、退出、测试,直到部署。微服务是由一个个团队组成,每团队有自己的服务,做好后,可以独立的进行测试、开发、部署,然后整个应用组合到一起。张侠表示,开发运维一体化、微服务和Container是同等的,把它们组合起来,加上云的手段才成为可能。DevOps不光是一个简单的技术手段,实际上是一个方法理念。

基础设施即代码 Infrastructure as code

张侠表示,运维还有一个很重要的一个概念那就是Infrastructure as code。传统系统部署,从服务器开始装操作系统、装应用、升级补丁、网络配置等事都是由运维人员来操作,一旦离开就会出现问题。但在不久的将来这些工作都会被程序来实现,所以技术人员要了解什么是前途?学哪些有价值?如还是维持原来技术,就可能就被一些程序代替。 因为机器实现可拓展性、可靠性、重复性、一致性、能够审计、能够记录、安全等,也会比人做的好。而且在云里面正确操作,比传统IT安全很多。

blob.png

Infrastructure as Code 基础设施即代码示例

张侠表示,亚马逊云有很基础的服务叫做Infrastructure as code,是一个基础架构的部署服务。如果要开一些机器,全套架构,从网络,从服务器,这是一个真正文件,比如说Packages是什么,升级一下相关操作系统,重要的原文件放在什么地方等。通过这个方式整个一套基础设施在云里运行,包括底层架构、网络架构,虚机上运行,装什么系统、装什么应用、装什么服务器都可以进行。 

blob.png

blob.png

从DevOps的角度讲,需要很多层次逻辑和控制、多编程语言支持等整个一套操作系统。也有一些开源的工具,平时说的Docker的一些平台,基本上是对应的关系,这些都要靠API,还有很多基础服务,如安全服务,是机器做、还是人为、在什么时间进行。

blob.png

基于AWS的DevOps实践要素

从开发工具来说,AWS推出一套叫Code Commit,把原代码管理放到版本管理的工具里面。Code Pipeline可以持续交付做一些测试工具,Code Deploy把它真正的推出来。ECS,是云里面做的Docker的容器的服务。CodeDeploy是做应用部署的,它来直接部署,可以部署的开发测试,直到生产各种环境中,从一个部署到上千个实例中,也可以部署在本地的,就是说传统的机房,或者电信托管的机房,连公有云带私有云,混合架构上任何一种全都能实现,然后集中的控制和监控。CodeDeploy部署分为包装APP、指定目标和部署三部。

从虚机到容器

blob.png

从虚机到容器

张侠表示,原来大家都熟悉的VM虚机模式,模式虽然不错,但是有很多问题,最主要是可移植,部署的速度、灵活性等方面比较专门。在虚拟化的基础上,容器是进一步虚拟化,把应用在虚机上准备好,不光是脱离它的硬件,还脱离它的操作系统,还脱离它所有的基础设施的软件,搭建的平台。Docker就是封装的群,在不同OS上快速部署,文件系统简化升级和迁移。

那在云上如何操作呢?这里张侠提到EC2 Container services,是把云、EC2虚机、Container各自的优点结合在一起的服务。

Amazon EC2 Container Service

ECS是如何使用的?首先选择一些集群,这是一组机器,不是一台机器,一组虚机,里面有四个虚机,一个上面装了三个Container,然后把任务定义清楚,又是一个清单,这是一个要部署的应用,然后就开始做这个事情了。可以通过任务的执行器,把这些任务在虚机的组成的群里面,先有一个代理实现这些,知道谁都管什么,然后这里面有一些Container,然后把这些任务定义应用一个一个放到容器里,这个容器就跑起来。

ECS Service Scheduler – 升级你的应用

上图为蓝绿升级,如果这个任务原来是一个版本,把这个任务改成另一个版本重新部署一遍,在这些容器里重新部署,又实现了滚动的升级,所以这是第二个方法。在容器的时代,使用公有云现成的ECS容器怎么样做应用的滚动的升级和部署,又可以完成这些事情。所以大家看到自动化所起的作用。

AWS couldTrail

上图是一个操作平台,一类叫开发人员工具,一类叫管理工具,其他的基本计算服务放在前面,这是在大平台里面,这些服务在哪,现在都可以用的,都是实实在在的应用。云里面有很多其他应用,计算应用、网络应用、数据库应用、存储应用等等,包括各种的平台类的服务,甚至企业级的服务都有一些服务。

AWS 十年云运维经验分享 – CTO Werner Vogel

1、构建可发展型系统

基于网络服务可扩展的架构, 如同飞机在空中飞行中升级

2、时刻准备好迎接意外情况

可以随时拥抱失败的系统, 但有效控制失败的“爆炸半径”

3、提供多样化且可塑的“基础型”服务

向用户提供多样化可塑的“基础型”服务,让用户 “量体而择”。

4、自动化是关键

建立起自动化管理的机制,摒除容易出错的人为操作。

5、API的构建务要一步到位,因为一旦上线就不可更改

一旦用户开始利用我们的API,API就不能再更改。

6、建立聪明的收费机制才能保证可持续运转

建立收费机制时,必须对运营所需成本了如指掌。如存储 “请求数量” 。

7、安全从源头抓好安全

保护用户安全始终是,并将永远是AWS的头号任务和优先投资方向。

8、加密技术是重中之重

逐步掌握将加密技术整合进服务的最好方式。如Amazon CloudHSM和KMS 。

9、网络、网络、网络

让网络基础设施保持高度灵活,如能支持SR I/O V的NIC,以降低虚拟额外负载。

10、用途不设限

为客户缔造了一个极深极广的平台,为用户营造一个极为丰富的生态系统。


本文作者:王雪燕 来源:51cto
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的