QCon 速递:亚马逊 AWS 技术应用实践

  • 包研

2015 年 4 月 25 日

话题:PythonAWSDevOps语言 & 开发架构

2015 年 4 月 23 日,为期 3 天的QCon 全球软件开发大会(北京站)正式拉开帷幕。在『亚马逊 AWS 技术应用实践』专题中,讨论了亚马逊 AWS 热门服务与工具及典型架构,涉及自动化运维、混合云、移动应用开发和 Python 开发,也讨论了 TCL 通讯、猎豹移动、小米在 AWS 上的应用实践。本专题从两个角度来输出价值:

  • 以 AWS 的视角,帮助大家更合理的理解云上的服务和工具,以及针对特定的业务和场景将这些服务搭建成自己的架构,并通过 AWS 提供的工具及第三方工具提升技术设施管理、应用部署过程中的效率。
  • 猎豹移动、TCL 通讯、小米在 AWS 上的实践经验,包括需求分析、选型、实践及优化成长之路、踩过的坑等。

让我们来详细回顾下本专题的内容:

“基于 AWS 的 DevOps 实践指南”——亚马逊 AWS 解决方案架构师代闻

AWS 提供了实现 DevOps 的平台和工具支持,包括:代码和命令行工具、CloudFormation、CodeDeploy、OpsWorks、ElasticBeanstalk 及第三方服务支持。可以通过三种方式控制 AWS,包括管理控制台、API 和 SDK、命令行接口(CLI),其中后两者可用于 DevOps。

在 AWS 看来,对大规模基础架构实现 DevOps 除了需要 CloudFormation、CodeDeploy、OpsWorks、ElasticBeanstalk 及第三方服务支持,还需要 IAM 安全认证工具。

CloudFormation 可以让基础设施变成一段代码,他带来的好处是:

  • 简化 AWS 服务的部署,快速部署一个 Stack
  • 模板化基础平台
  • CloudFormation 自动解决资源部署的先后和依赖关系
  • 版本控制
  • 第三方管理工具可以通过 API 集成 CloudFormation

通过 CloudWatch 和 IAM 实现贯彻始终的监控与安全。

“猎豹在 AWS 上的运维自动化实践分享”——猎豹移动海外运维经理王琰

在搬上 AWS 之前,猎豹移动的基础设施为自建方式。在 AWS 上,猎豹移动使用了部分 AWS 工具和第三方工具,ansible 负责操作系统的重启和按装,配置管理,部署,上下游关联。Nagios 和 Zabbix 负责基础监控。CloudWatch 负责监控 http 业务状态,数据库和 cache。

“用 AWS 云平台搭建混合云的最佳实践”——亚马逊 AWS 首席云计算企业顾问张侠

为什么会有混合云,混合云的优势是:

  • 继续使用已经建设的设施
  • 在投资 CapEx 和运营 OpEx 之间控制支出
  • 合规或行业性要求
  • 降低单个供应商风险
  • 实现独特的功能性能
  • 商业授权维护支持的限制
  • 兼得私有云和公有云的好处

AWS 提供了工具集来支持混合云:

  • VPC
  • DirectConnect
  • VPN
  • Directory 服务
  • AWS Import/Export
  • AWS Storage Gateway

在 AWS 实现混合云的集中典型的场景:

  • 存储扩展
  • 备份和存档:冷数据可以从 S3 向 Glacier 备份,充分利用现有的投资
  • 使用各种 AWS 的托管服务(EMR 等):灵活快速,弹性,安全,自动维护升级
  • 灾难恢复
  • 开发与测试验证

小米米粉节案例分析

  • AWS 的工程师与小米的员工一起工作
  • 针对每 2 个小时一次抢购,提前开启预热实例
  • 小米承担了小部分流量,AWS 承担了大部分流量

“AWS 云平台的移动应用服务与移动应用开发最佳实践”——亚马逊 AWS 解决方案架构师、区域主管张荣典

通过 AWS,让移动开发团队拥有:

  • 快速:应对新趋势;支持新设备;新的硬件和软件功能(向下兼容,精准定位)
  • 市场:全球市场

在具体的功能方面 AWS 提供:

  • 认证与授权
  • 数据 API
  • 消息推送
  • 用户分析

具体的服务:

  • 认证:Cognito
  • 同步数据:DynamoDB
  • 搜索:CloudSearch
  • 多媒体:S3
  • 后端通知:SQS
  • 移动应用分析:Mobile Analytics
  • 商业智能:Redshift 和 Amazon SNS

“TCL 全球移动平台架构演进”——TCL 通讯云平台技术总监陈峻

TCL 通讯面临的挑战:

  • 全球不同国家访问
  • 提供全球 app 分发渠道
  • 提供付费下载的 app 加速
  • 不同国家隐私保护需求
  • 海内外数据同步
  • Log 统计分析

2008 年 -2012 年的架构:

  • 2G/3G 网络
  • 只是用 EC2 和 S3

2012 年 -2014 年的架构:

  • 智能手机 + 应用商店
  • EC2 +S3+RDS+CloudFront

2014 年 -2015 年的架构:

  • 增加 VPC + ELB +DynamoDB

未来:

  • 增加 Multi-region Route53

Route53 带来的优化可能包括:

  • 按 region 来提供目标用户服务,根据 Geo location 来判断
  • 根据权重等指标指向,不同的 ELB 或者域名
  • 甚至根据不同国家 CDN 检测,情况将请求指向其他 CDN

统计分析

  • Flume 插件开发 collector 收集至 HDFS
  • MR/Hive/Streaming 方式均有使用
  • Oozie 进行调度,sqoop 导入 db 进行 dashboard 展示

日志分析

  • CloudFront Raw log 分析,Geoip2 数据统计国家下载耗时
  • Nginx/Tomcat 请求耗时分析,判断后台性能瓶颈  
  • Appcenter log 分析,运营提供支持

海内外的数据同步

  • 同步 VPN
  • 端口限制
  • 新加坡 AWS 代理

DB 数据库的同步

  • Otter

HDFS 上的 log 数据  

  • DistCP/FastCopy

EMR

  • 尝试 EMR 的 job 执行方式
  • 比对成本

Auto scaling

  • 大容量弹性 webserver,如 onetouch stream

“如何利用云开发原生的 Python 应用”——亚马逊 AWS 首席云计算技术顾问费良宏

Python 是一种发展比较平稳的语言:

  • 一种通用的、高级程序设计语言
  • 一个荷兰人 (Guido van Rossum ) 的设计 / 1991 年
  • 一个榜单 (TIBOE ) 上排名第 8 的语言 / 2015 年 4 月
  • 一大批公司在使用它

但 Python 充满争议,由于 Python3 并不兼容 Phthon2。

Yelp! 的大数据应对之道:

  • 每天产生 250GB 压缩的日志文件,数据库超过 7TB,二级存储达 TB 级
  • 通过 EMR 和 mrjob 分析数据

Netflix 的在 AWS 上开发了系列测试工具 https://netflix.github.com/

云计算应用开发利器 BOTO

  • 面向 Python 开发的 AWS SDK
  • 支持 40+ AWS 服务 (S3, EC2, EMR...)

最后,费良宏分享了自己收藏的 Python 资源:

  • 数据分析:iPython,Numpy,Pandas,Scipy,Matplotlib
  • 机器学习:Scikit-learn
  • web 数据获取:Scrapy
  • web 框架:Flask
PythonAWSDevOps语言 & 开发架构