在这信息化时代大数据、物联网、人工智能等这些经常出现在话语间,这些概念之间相互交叉相互促进着。如物联网会产生海量数据、如机器学习会把这些数据加以分析产生更好的效果。张侠表示,云计算与数据中心(运维机房)促使这些热门行业越来越火。云计算是开发和运维的屌丝们对IT的逆袭。原来运维人员的具体分工多处在底层,但在云时代,开发运维一体化使得运维人员变得尤为重要。 运维人员更需要了解一些开发运维DevOps新趋势,来应对飞速的变化。
应该了解的运维新词和术语
在揭晓云时代开发运维DevOps新趋势之前,这些运维的新词和术语是大家应该了解的。张侠表示,开发运维在云时代会越来越火、更会有越来越多的先进内容,下面这些远远不够,但确实是必须要知道的。
为什么需要DevOps?最主要原因是原来开发后交给运维人员,两个团队之间貌似有一堵墙,各干各的活。这种开发一般是一两个月搞出一个版本,在传统行业,如金融银行,有时一季、半年出一个版本就很不错了。但在互联网时代,需要快速的创新、快速的迭代,一天可能就要推出多少个版本那就需要DevOps的方法。
微服务,是支撑DevOps方法的手段,传统开发是在一个服务器里面,把各种元素装在一起组合成一个程序,但微服务是每一个服务是一个单独的单元,可以部署在不同的服务器上,通过SOA的方法,把它连接起来,再提供整个功能。
①从单体架构到微服务架构 (Microservices)
如上图类似一个光纤的截面,每一个小光纤点是一个微服务,微服务构造的程序变成下面的结构,很多小结点密密麻麻连在一起。微服务面向服务的架构由单一原生的小的服务来构成,再通过APIs调用它们,使得这个程序从这个层次上,把它更加的结构化,一个一个的单元化,然后再可以重新组合。
②从单体到微服务开发生命周期
微服务如何做开发?传统开发者分成很多团队,整个工作常用程序,做好后涉及到整个建造、编辑、退出、测试,直到部署。微服务是由一个个团队组成,每团队有自己的服务,做好后,可以独立的进行测试、开发、部署,然后整个应用组合到一起。张侠表示,开发运维一体化和微服务,和Container等是共同的,只有组合起来,加上云的手段才成为可能。DevOps不光是一个简单的技术手段,实际上是一个方法理念。
基础设施即代码 Infrastructure as code
张侠表示,运维还有一个很重要的一个概念那就是Infrastructure as code。传统系统部署,从服务器开始装操作系统,装应用,升级补丁,网络配置好等事都是由运维人员来操作,一旦离开就会出现问题。但在不就的将来这些工作都会被程序来实现,所以技术人员要了解什么是前途?学哪些有价值?如还是原来原来的技术,就可能就被一些程序代替。 因为机器实现可拓展性、可靠性、重复性、一致性、能够审计、能够记录、安全,当然都比人更好。在云里面正确操作,比传统IT安全很多。
③Infrastructure as Code 基础设施即代码示例
张侠表示,亚马逊云有很基础的服务叫做Infrastructure as code,是一个基础架构的部署服务。如果要开一些机器,全套架构,从网络,从服务器,这是一个真正的文件,比如说Packages是什么,升级一下相关操作系统,重要的原文件放在什么地方等。通过这一个方式整个一套基础设施在云里运行,包括底层架构、网络架构,虚机上运行,装什么系统、装什么应用、装什么服务器都可以进行。
④从软件开发的角度看DevOps
⑤AWS对DevOps的全面支持
从DevOps的角度讲,还需要很多层次,逻辑控制、多编程语言支持等整个一套操作系统。也有一些开源的工具,平时说的Docker的一些平台,基本上是对应的关系,这些都要靠API,还有很多基础服务,如安全服务,是机器做、还是人为、在什么时间进行。
⑥ 基于AWS的DevOps实践要素
从开发工具来说,推出一套叫Code Commit,把原代码管理放到版本管理的工具里面。Code Pipeline可以持续交付做一些测试工具,Code Deploy把它真正的推出来。ECS,是云里面做的Docker的容器的服务。CodeDeploy是做应用部署的,它来直接部署,可以部署的开发测试,直到生产各种环境中,从一个部署到上千个实例中,也可以部署在本地的,就是说传统的机房,或者电信托管的机房,连公有云带私有云,混合架构上任何一种全都能实现,然后集中的控制和监控。CodeDeploy部署分为包装 app、指定目标和部署三部。
从虚机到容器
⑦从虚机到容器
张侠表示,原来大家都熟悉的VM虚机模式,模式虽然不错,但是有很多问题,最主要是可移植,部署的速度、灵活性等方面比较专门。在虚拟化的基础上,容器是进一步虚拟化,把应用在虚机上准备好,不光是脱离它的硬件,还脱离它的操作系统,还脱离它的所有的基础设施的软件,搭建的平台。Docker就是封装的群,在不同OS上快速部署,文件系统简化升级和迁移。
那在云上如何操作呢?这里张侠提到EC2 Container services,是云、EC2虚机、Container各自的好处结合在一起的服务。
⑧Amazon EC2 Container Service
ECS是如何使用的?首先选择一些集群,这是一组机器,不是一台机器,一组虚机,里面有四个虚机,一个上面装了三个Container,然后把任务定义清楚,又是一个清单,这是一个要部署的应用,然后就开始做这个事情了。可以通过任务的执行器,把这些任务在虚机的组成的群里面,先有一个代理实现这些,知道谁都管什么,然后这里面有一些Container,然后把这些任务定义应用一个一个放到容器里,这个容器就跑起来。
⑨ECS Service Scheduler – 升级你的应用
上图为蓝绿升级,如果这个任务原来是一个版本,把这个任务改成另一个版本重新部署一遍,在这些容器里重新部署,又实现了滚动的升级,所以这是第二个方法。在容器的时代,使用公有云现成的ECS的容器怎么样做应用的滚动的升级和部署,又可以完成这些事情。所以大家看到自动化所起的作用。
⑩ AWS couldTrail
11AWS 全球提供的服务 控制台
上如是一个操作平台,一类叫开发人员工具,一类叫管理工具,其他的基本计算服务放在前面,这是在大平台里面,这些服务在哪,现在都可以用的,都是实实在在的应用。云里面有很多其他应用,计算应用、网络应用、数据库应用、存储应用等等,包括各种的平台类的服务,甚至企业级的服务都有一些服务。
两个图
11 AWS 全球提供的服务 控制台
本文整理自由51CTO主办的《 WOT2016互联网运维与开发者大会 》 上来自亚马逊AWS首席云计算企业顾问张侠做的主题为《 马逊AWS云服务推动IT运维创新 》的精彩演讲。
张侠,毕业于北京大学获学士学位, 并获得美国莱斯大学硕士和博士学位以及韦恩大学工程管理硕士学位。 张侠博士现任亚马逊AWS首席云计算企业顾问,负责帮助企业利用云计算技术进行业务创新和数字化转型。张侠于2012-2014年任北京御风云科技有限公司总裁;2006-2012年任SAP思爱普软件系统有限公司大中华区首席技术官 CTO;2002-2005年任中国银行个人金融部和银行卡中心的技术总监CTO。他曾于1993-2002年在美国福特汽车公司工作,其中 2000-2002年任福特直销FordDirect的首席信息官CIO。