云上企业的DevOps实施云上企业的DevOps实施殷实AWS专业服务咨询师殷实AWS专业服务咨询师分享议程•理解DevOps•AWSDevOps的最佳实践•DevOps的实施之路理解DevOps理解DevOps创新性&稳定性业务开发开发运维越快越好越稳越好变更是不可避免的•变更是导致系统异常的根本原因•两种应对方式-巨大规模的交付-微小规模的迭代DevOps定义DevOpsisaculture,movementorpracticethatemphasizesthecollaborationandcommunicationofbothsoftwaredevelopersandotherITprofessionalswhileautomatingtheprocessofsoftwaredeliveryandinfrastructurechanges.DevOpsaimsatestablishingacultureandenvironmentwherebuilding,testing,andreleasingsoftware,canhappenrapidly,frequently,andmorereliably.开发人员运维人员fromWikipediafromWikipedia不同的理解,不同的DevOps•DevOps=Development(开发)+(和)Operation(运维)的集成•DevOps是实现•DevOps是分久必合,合久必分的博弈•DevOps是工具集全自动环境搭建持续集成持续交付配置管理蓝绿部署DevOps,不是一个目的地,而是一条路……DevOps重要内容•基础设施即代码•IT自动化和配置管理•版本控制的集成•持续集成和持续交付•持续部署•应用和基础设施的版本管理•监控和日志管理DevOps中的应用和基础设施最佳实践应用层基础设施层版本管理应用程序代码IT资源模板持续集成集成,构建代码测试整合模板验证模板持续交付新功能缺陷的修复新的IT环境升级的IT环境持续部署新功能从开发到上线的端到端IT环境从搭建到销毁的端到端配置管理支撑应用的多形态部署支撑环境的多结构搭建监控和日志管理应用健康状态用户的访问量……IT资源性能情况资源的使用量……DevOps的最佳实践DevOps的最佳实践AWSDevOps服务运维ElasticBeanstalkCloudWatchCloudFormationCodeDeployCodePipelineOpsworksElasticContainerService监控搭建部署测试构建开发LambdaCloudTrail版本管理持续集成持续交付持续部署自动化运维配置管理自动化监控基础设施即代码日志管理CodeCommitCodeCommit持续集成版本控制版本控制CI服务CI服务打包打包提交应用开发者基础设施开发者测试开发者获取构建,测试代码配置测试用例推送程序包配置应用包仓库构建失败,通知开发者测试失败,通知开发者代码测试用例一提交,一构建。一测试,一集成。加速给开发的反馈加深自动化的程度持续交付版本控制版本控制CI服务CI服务打包打包部署服务部署服务提交获取构建,测试准生产环境测试环境生产环境推送程序包配置应用包仓库配置模板配置构建失败,通知开发者测试失败,通知开发者应用开发者基础设施开发者测试开发者代码配置测试用例代码测试用例提高部署的适应性标准化部署的流程基础设施即代码版本控制版本控制CI服务CI服务打包打包部署服务部署服务提交获取构建,测试准生产环境测试环境生产环境推送程序包配置应用包仓库配置模板配置构建失败,通知开发者测试失败,通知开发者应用开发者基础设施开发者测试开发者代码配置测试用例IT资源模板代码测试用例环境管理中心环境管理中心IT资源模板搭建和销毁临时性环境例如,测试环境和准生产环境保证环境的一致性降低基础设施成本持续部署蓝绿部署I.当前环境(蓝环境)支撑100%的负载II.新环境(绿环境)建立并投入使用,接管10%的负载III.负载逐步由蓝环境迁移到绿环境IV.负载迁移结束V.蓝环境已经没有负载VI.蓝环境被销毁VII.新环境支撑100%的负载AmazonRoute53EC2InstancesELB100%DynamoDBMySQLRDSInstanceElastiCacheCacheNodeAmazonRoute53EC2InstancesELBEC2InstancesELB90%10%DynamoDBMySQLRDSInstanceElastiCacheCacheNodeAmazonRoute53EC2InstancesELBEC2InstancesELB50%50%DynamoDBMySQLRDSInstanceElastiCacheCacheNodeAmazonRoute53EC2InstancesELBEC2InstancesELB0%100%DynamoDBMySQLRDSInstanceElastiCacheCacheNodeAmazonRoute53EC2InstancesELBEC2InstancesELB0%100%DynamoDBMySQLRDSInstanceElastiCacheCacheNodeAmazonRoute53EC2InstancesELB100%DynamoDBMySQLRDSInstanceElastiCacheCacheNodeAmazonRoute53EC2InstancesELB100%DynamoDBMySQLRDSInstanceElastiCacheCacheNode对用户透明不止为部署红黑部署AutoScalingGroupV1ELBAmazonRelationalDatabaseService(RDS)AutoScalingGroupV2•自动扩展组根据负载量动态的调整支撑负载的所有服务器的数量•以自动扩展组为单元进行负载的迁移。当前扩展组(红组)逐渐缩小,新扩展组(黑组)逐渐增大DevOps的实施之路DevOps的实施之路企业的DevOps实施之路WhatWhenWhoHow做什么?痛点在哪?(痛点分析)需求在哪?(需求分析)能否实施DevOps以改进?(实施评估)DevOps带来的收益?(收益分析)用DevOps指导开发?(细粒度开发模式)怎么做?自动管理IT资源?(基础设施即代码)自动应用部署?(持续交付,蓝绿部署)自适应多环境?(配置管理)DevOps工具?(不同的工具,不同的做法)何时做?DevOps会带来的影响?(优先级评估)与客户规划协同进行?(企业DevOps规划路线图)实施中重要的时间点?(DevOps实施宏观计划)谁来做?谁能做?(技能评估,DevOps相关培训)自开发?AWS/合作伙伴?(DevOps团队组织结构)谁负责?(责任分析和指派)实现DevOps文化的推广DevOps流程和架构设计(最佳实践)DevOps实施的项目计划监控从DevOps,得到了什么?失去了什么?(收益比较)AWS专业服务团队的DevOps相关服务运维集成性的成熟度评估交付管道的设计和自动化基础设施自动化从问题管理,变更管理,配置管理,发布管理等多个角度评估运维模式和流程的成熟度根据评估中识别的问题提供推荐的解决方案应用和基础设施的自动化测试中心化系统管理和监控运维的事件管理集成基础设施自动化的方法论定义基础设施自动化框架的顶层设计IT环境管理的最佳实践系统监控维度定义日志管理系统顶层设计监控数据和日志的分析指导持续集成,交付,部署的流程定义持续集成,交付,部署的平台的顶层设计持续集成,交付,部署的最佳实践自动化测试的工具的选择自动化测试的流程定义自动化测试的执行优先级分类运维中的事件建立事件的通知策略和模式系统容错能力改进的建议DevOps培训DevOps团队组织结构和技能DevOps总览DevOps深入AWS的DevOps服务DevOps团队中的角色和技能需求DevOps团队中的角色的责任划分和任务指派AWS的DevOps合作伙伴持续集成与交付快速地和可靠地构建,测试,发布你的应用程序,从而改善质量并缩短进入市场的时间配置管理像维护你的代码一样对待IT基础设施,管理容器,操作系统和应用程序的配置分享总结•什么是DevOps•DevOps的重要组成部分•DevOps涵盖应用和基础设施的管理•基础设施即代码,持续集成,交付,部署,用户透明的部署方式•如何开始你的DevOps之路