本文是WOT2016互联网运维与开发者大会的现场干货, 新一届主题为WOT2016企业安全技术峰会将在2016年6月24日-25日于北京珠三角JW万豪酒店隆重召开!!
信息化的时代大数据、物联网、人工智能等这些热词经常出现在话语间,这些概念之间相互交叉相互促进着。如物联网会产生海量数据、如机器学习会把这些数据加以分析产生更好的效果。张侠表示,云计算与数据中心(运维机房)促使这些热门行业越来越火。云计算是开发和运维的屌丝们对IT的逆袭。原来运维人员的具体分工多处在底层,但在云时代,开发运维一体化使得运维人员变得尤为重要。 运维人员需了解一些开发运维DevOps新趋势,来应对飞速的变化。
应该了解的运维新词和术语
在揭晓云时代开发运维DevOps新趋势之前,这些运维的新词和术语大家应该了解。张侠表示,开发运维在云时代会越来越火、更会有越来越多的先进内容,下面这些远远不够,但确实是必须要知道的。
新词
- Scrum, Agile, Kanban——敏捷性、灵活性、看板
- TDD、BDD、DDD——测试驱动设计、行为驱动设计、域驱动设计
- CI, CD, Cloud——持续概念、持续部署、云
- DevTestSecFinChatOps——开发一体化、测试运维、安全运维、财务金融运维等
术语
- DevOps——是一种开发、测试、运营、维护部门之间沟通、协作与整合的软件过程、方法与系统。
- 微服务 Micro Service: ——一个单纯的小型的有意义的功能。
- 容器 Container——容器是用来存储和组织其他对象的对象。
- Docker—— 一个开源的应用容器引擎
为什么需要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实践要素
从开发工具来说,AWS推出一套叫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
上图是一个操作平台,一类叫开发人员工具,一类叫管理工具,其他的基本计算服务放在前面,这是在大平台里面,这些服务在哪,现在都可以用的,都是实实在在的应用。云里面有很多其他应用,计算应用、网络应用、数据库应用、存储应用等等,包括各种的平台类的服务,甚至企业级的服务都有一些服务。
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主办的WOT2016互联网运维与开发者大会上来自亚马逊AWS首席云计算企业顾问张侠做的主题为马逊AWS云服务推动IT运维创新的精彩演讲。
大会演讲视频链接:http://edu.51cto.com/lesson/id-100764.html
讲师简介:
张侠,毕业于北京大学获学士学位, 并获得美国莱斯大学硕士和博士学位以及韦恩大学工程管理硕士学位。 张侠博士现任亚马逊AWS首席云计算企业顾问,负责帮助企业利用云计算技术进行业务创新和数字化转型。张侠于2012-2014年任北京御风云科技有限公司总裁;2006-2012年任SAP思爱普软件系统有限公司大中华区首席技术官 CTO;2002-2005年任中国银行个人金融部和银行卡中心的技术总监CTO。他曾于1993-2002年在美国福特汽车公司工作,其中 2000-2002年任福特直销FordDirect的首席信息官CIO。