云时代还有哪些宝典?AWS云平台下的开发运维DevOps

748 阅读7分钟
内容来源:2017年7月8日,亚马逊AWS解决方案架构师毛郸榕在“不止云计算,云时代还有哪些宝典?”进行《公有云-基于公有云的开发运维DevOps实践》演讲分享。IT 大咖说(id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2157 | 5分钟阅读

嘉宾演讲视频回顾及PPT:suo.im/1Oc59p

摘要

在DevOps的领域上,只要有想法,把想法写成代码。后续一系列的部署构建,包括代码的迭代和发布这些过程全部可以变成自动化。让您真正可以聚焦在业务创新层面上,所有底层需要用到的基础设施全部可以交给亚马逊AWS。

客户分享

musical.ly公司成立于2013年,是一家互联网创业公司致力于打造全球化的娱乐社交平台。其开发和运营的音短视频musical.ly和视频直播平台live.ly已经成为欧美国家的主流移动社交网络,在全球超过 20 多个国家和地区的App Store总榜上排名第一,其用户规模仅次于Snapchat、Instagram、Twitter和Facebook等老牌社交应用,成为欧美 13~20 岁年轻人最喜爱的移动社交应用之一。目前, musical.ly的音乐短视频社交平台的日活用户数已经超千万,用户总数过1.5亿。

从一台Amazon EC2 、几百位用户起步,经过短短的三年, musical.ly的日活用户数就超过了千万,同时使用的Amazon EC2数量也超过了2000台。在寻找业务方向、尝试在不同领域开展业务的过程中, AWS云平台给 musical.ly提供了充足的灵活性。

在运营系统中, musical.ly采用:

(1)Amazon EC2作为主要的计算资源以支撑前端应用;

(2)Amazon S3作为统一的存储以放多媒体资料及系日志信息;

(3)Amazon CloudFront用来进行全球化的内容分发,降低访问时延以提升用户的使用体验;

(4)Amazon EMR作为灵活开关的大数据处理平台来完成必要分析任务;

(5)AWS Lambda、用于完成对新户的推送服务。

这些产品的使用极大地降低了musical.ly自己的应用开发工作量,在系统可靠性、稳定方面也远超过自己搭建的系统。

目前,musical.ly所使用的AWS云平台产品包括Amazon EC2、Amazon S3、Elastic Load Balancing、Amazon CloudFront、Amazon Route53、Amazon Kinesis 、Amazon ElastiCache、Amazon EMR、Amazon VPC等,打造出一个稳定、可靠、响应迅速的全球化娱乐社交平台。

选择AWS云平台带来的好处主要体现在三个方面。首先AWS云平台提供的各项服务稳定性和可靠非常高,在系统运行的三年多来,从未出现过因云服务不稳定而导致的系统中断。其次是 AWS云平台提供了非常全面的云服务,这使得 musical.ly可以随着业务的增长随时调用新服务来添功能和扩展系统。例如, musical.ly平台最初并不具备大数据分析和处理能力,但随着用户量的激增海信息,为用户提供更有针对性的就成musical.ly的紧要任务。有了AWS云平台提供的Amazon EMR、Amazon Lambda等服务,musical.ly就能够快速地完成产品的迭代更新和功能扩展,节省了大量时间成本。还有就是AWS优异的技术支持服务帮助musical.ly节省了大量的人力成本。

一天内代码发布多次,迭代创新。我们希望用户聚焦业务创新,不用把时间浪费在搭建环境上。所以我们需要基于公有云方式的开发运维工具。

怎么样实现DevOps

如上图所示,最下面已经提供了平台层Platform,再往上就有了API,它的API全面程度非常广。AWS还提供了各种各样版本语言的SDK,然后是一些框架,最上面是核心的code代码。

针对每一个层面,亚马逊都提供了一些列甚至是托管的服务,可以帮用户直接解决一些问题。

亚马逊电商怎么做DevOps?

最早期我们也是一个单体的架构,现在演变到如何更好地去做微服务化,甚至都不用使用服务器进行管理。

AWS Code Services

上图在基本所有的互联网公司都是通用的。从最开始的开发、代码的托管,到代码的构建、测试,再到部署、搭建、监控,从而实现整个过程的自动化。

自动化部署服务——AWS CodeDeploy

作为DevOps和微服务的深入践行者,Amazon在内部积累了许多持续集成、交付和部署的自动化工具和平台。其中, Apollo作为代码部署的自动化平台,每年进行超过5000万次部署。

为了能够让广大开发者和企业用户使用到功能丰富且久经考验的代码部署平台,在Apollo的经验基础上,AWS发布了自动化部署服务——CodeDeploy。

AWSCodeDeploy旨在帮助用户完成应用的快速部署,按照用户指定的策略将代码部署在一组EC2服务器上。用户策略可以包括集群部署速度、部署事件通知、警报处理策略等。此外,CodeDeploy还可以和弹性负载均衡(Elastic Load Balancer)、自动扩展组(Auto Scaling Group)等服务结合,完成无缝升级和动态部署。

AWS CodeDeploy——代码部署

CodeDeploy这个服务与我们的开发人员和运维人员比较贴近,目前,这个服务在由光环新网运营,亚马逊AWS中国(北京)区域也是可用的。它有两个重要的概念,一个是application,另一个是deployment groups。在deployment groups可以定义成多个环境,比如有开发环境、测试环境,还有生产环境。

怎么使用CodeDeploy服务进行部署——此处用tomcat举例

准备代码,此处用 tomcat应用举例。解压代码,在工程目录里添加scripts目录和一个appspec.yml。例如上图这样的目录结构,scripts里面放部署时使用的脚本,appspec.yml文件定义代码部署到哪个,用什么用户在什么阶段执行什么脚本。

首次部署,需要安装依赖软件和环境,之后做代码更新时就不需要了。

AWS基础设施DevOps Services

我们有一些基础设施层面的服务。ElasticBeanstalk是一个类似于容器概念的服务,要起一个环境的时候可以直接用ElasticBeanstalk进行托管。

CloudFormation——一键部署所有云端资源

CloudFormation是一个JSON的文件,把模版定义好后放到CloudFormation做一次部署,所有需要的资源可以一键创建好。

初创企业支持计划

AWS为初创企业提供支持上云的云创计划到后续为云创成员专设的GTM全方位支持。

GTM(go-to -market)支持计划:

帮助硬件类初创企业在全球市场快速部署渠道;

独享推广页面,支持影音视频内容播放;

享受亚马逊物流、客服及支付等全方位支持;

云创计划成员可获得2,500美元Facebook广告 credits,以及AlexaFund投资的优先推荐资格;

AlexaFund是亚马逊旗下专注于声音科技的早期投资基金(基金规模1亿)

今天的分享就到这里,谢谢大家!