MSP在云运维中的DevOps实践

当企业全面步入云时代后,随之而来的还有财务、管理以及运维上的转变。对于企业的运维人员而言,云上运维与传统数据中心运维有着很大的差异。首先传统数据中心的运维人员会接触大量的硬件,服务器、设备以及风火水电等,但是在云时代,运维人员已经无法凭肉眼见到任何的物理设备。运维人员不再需要为物理硬件的稳定和可靠性所操心。云对于运维的挑战进而转向快速部署、快速更新、监控和统筹,云时代下的运维更像一个云资源的“运营者”。

云时代运维.jpg

随着技术和业务的不断发展,企业的IT架构也更趋向于双模态势,一边是对于核心业务系统稳定运行的要求,一边是对于系统快速迭代的需求。对于这些“运营者”而言,DevOps的引入能极大的提升业务的效率。

领先的公有云服务提供商在提供基础计算资源的同时也向用户提供运维服务的平台(PaaS)以及其他云软件基础设施服务。其中,AWS的DevOps体系中就有CodeCommit 代码版本控制服务,CodePipeline 持续交付服务,CodeDeploy 部署和分发等诸多适用于DevOps场景下的产品。

今天就让我们介绍下AWS的CodeDeploy。

CodeDeploy能将应用程序部署、分发到开发、测试、生产环境中。从代码的存储、管理、版本控制结合着构建、打包,然后进行分发、部署,最后完成优化、运维这一整套开发运维的流程,CodeDeploy能快速的将已经构建好的代码发布到it环境中。

CodeDeploy着眼于将大系统分解为多个SOA服务,通过部署分解后的SOA服务来处理整个系统的部署。相当于把整个系统部署分成多个局部部署,分而治之。CodeDeloy定义了基于时间部署流程接口,在接口定义中,定义多个部署文件拷贝源目标部署映射,以及部署中各个步骤以及步骤之间的执行顺序。

其优点在于:

1、自动化部署:可以将代码自动部署到任意的实例中,还会随着基础设施进行扩展,这样可以避免传统维护中手动操作带来的错误,还可以很大程度的提高部署效率,节约人力物力等。

2、最大程度减少停机时间:可以跨实例进行滚动更新,并根据可配置的规则追踪应用程序的运行状况。

3、集中控制:CodeDeploy会生成详细报告,以便能够查看每个应用程序修订版的部署时间以及部署到哪些实例中,这些都是可以通过控制台或AWS CLI轻松管理的。

4、易于采用:与平台和语言无关,可以与现有的软件发布过程或持续交付工具链进行集成。

5、与其他服务结合:CodeDeploy可以和弹性负载均衡(Elastic Load Balancer)、自动扩展组(Auto Scaling Group)等服务结合,完成无缝升级和动态部署。

场景示例:

某客户所有的工作负载都运行在AWS中,在AWS上有大量的生产环境、测试环境、开发环境,客户项目更新迭代非常快,如何快速部署、动态发布成为客户首要解决的问题。

1、我们帮助客户进行环境分组,分别划分为开发环境、测试环境以及生产环境,将这些环境独立分隔。

2、使用CloudFormation定义的CodeDeploy和CodePipeline配置创建一个部署管道,快速的将代码部署到这三个环境中。

3、CodeDeploy结合ELB做灰度测试和动态发布,解决快速迭代,整体提高it运维的敏捷性。