小桔灯
1. 项目介绍
近年来互联网技术的不断发展与普及化,分布式云计算同时也得到了广泛应用,场景化实践在各行各业中都有所体现,汽车&房地产行业对业务创新、经营管理、风险控制、客户服务的能力要求越来越高。小桔灯科技有限公司在美业务快速稳固增长,用户不断激增,对小桔灯科技有限公司业务系统支撑架构的灵活性、可靠性,适应业务和管理发展的能力方面提出了更高的要求。
2. 项目背景
此方案是为解决小桔灯科技有限公司ADX/DSP等广告平台系统在AWS云的需求、痛点以及未来规划等方面,系统性地提出相应的解决办法和应对措施。
客户希望基于AWS全球的网络及产品架构,来推动广告业务的全球本地化落地及运营。利用部署靠近客户的系统和服务,全面提升支持能力。
小桔灯业务应用经常面临突发性事件,难以提前预估突发业务量,发生时出现不足或过剩(资源设施准备过剩,虽然满足了峰值需要,但长时间闲置);还有提前规划的促销活动推广的在线增长,也偶有出现不足的情况,通常遇到过剩资源的长周期闲置问题;持续时间越长,问题越发突显,也会造成资源浪费。
3. 系统架构目标
综合目前核心系统与外围系统现状,以及业务可用性和连续性考虑,决定采用replatform的方式来构建小桔灯客户ADX/DSP业务,以实现以下几点目标:
• 保障业务架构不变的情况下,提升系统整体可用性。
• 可更精准横向/纵向的对系统瓶颈功能触发资源扩充机制,提升资源利用率。
• 可支持开发运维一体化工具,加快开发效率,提升交付能力。
• 可支持灰度发布功能,功能变更后可根据用户代码,用户机构等Session信息开放给部分用户先行验证。
4. AWS云部署架构图
为小桔灯客户的AWS云架构设计中AWS,设计原则遵循可扩展性,高可用性,可靠性,自动化,松耦合管理服务,以及灵活的数据存储选型等。
根据小桔灯客户的应用业务特点、以及目前面临的实际问题与挑战,从以下几个维度进行裁剪规划:
生产环境规划多可用区,三层网架构规划设计(包括:Public、Service、DB)。在公有子网部署NAT网关,将业务服务层、数据库、缓存等部署在多可用区的私有子网中,实现系统的安全和高可用。
客户所有业务组件部署在一个VPC中的多个可用区. 以实现业务网络上的低延迟。其中广告平台服务前端服务部署在私有子网中, 平台的逻辑处理服务器部署在私有子网中, 数据库以及Redis缓存服务部署在DB subnet 私有子网中, 所有服务/组件均在私有子网中, 确保各服务和组件的安全, 私有子网通过部署在公共子网的NAT Gateway 来访问公共资源, 添加严格的安全组控制, 方便管理人员管理服务器资源。
1. 使用Amazon ALB 来对网络请求进行负载均衡, 确保网络流量均衡分配。
2. 客户VPC之间的ADX等系统需要互通访问,使用VPC peering可以连接VPC访问,所有访问将不走公网。
3. 客户VPC中系统访问S3,使用网关终端节点通过私有网络通道访问S3桶,提高了效率、实现了高可靠。
4. 客户广告系统有可能需要高性能的磁盘IOPS,为了避免因为磁盘的性能(IOPS、吞吐量)导致服务的性能收到影响,推荐客户服务器存储EBS卷采用gp3类型,运行后再基于IOPS和吞吐量的监控进行调整。
5. 所有部署在AWS环境中的EC2均采用多可用区部署,当一个可用区发生故障时,其它可用区可以提供服务,使用 Auto Reboot 功能实现应用实例自动恢复。通过Autoscaling组实现自动伸缩。
我们采用了Microsoft IIS, Microsoft SQL Server, 和 Microsoft Active Directory作为核心服务,以支持一个电商平台的稳定运行和安全管理。详细见文档:客户案例-北京小桔灯科技有限公司-补丁自动化管理.docx
Microsoft IIS 承担着为ADX/DSP等广告平台系统提供可靠运行环境的重任。为内部员工提供网站前端和数据交互。它不仅确保了网站前端页面的持续可访问性,而且还负责处理用户与网站之间的动态数据交互。
Microsoft SQL Server,Amazon RDS for SQL Server的高性能和可靠性确保了后台交易数据的快速读写操作,同时其高级安全特性保障了数据的安全性。
Microsoft Active Directory作为安全模块,为Windows Server操作系统提供了强大的身份验证和权限控制功能。通过精心设计的用户账户和组策略,我们实现了对Windows资源的精细化管理,确保了只有经过验证的用户才能访问相应的系统资源。Active Directory的集成不仅简化了身份验证流程,还提升了整个系统的安全性和合规性。
我们通过部署Amazon EC2实例并采用Windows Server 2019的基础AMI镜像,为客户快速搭建了一个强大的Windows Server操作系统环境。利用Amazon EC2的弹性,客户可以根据业务需求动态调整资源。此外,通过Session Manager或远程桌面服务,客户能够轻松地进行远程管理和操作,极大地提高了运维效率。
并使用了Amazon Directory Service中的AWS Managed Microsoft AD来无缝集成Microsoft Active Directory。这种集成使得SQL Server数据库能够利用Windows身份验证,从而提高了身份验证流程的安全性和便捷性。当用户尝试访问加入信任域的SQL Server数据库时,身份验证请求会自动转发到AWS Directory Service,确保了身份验证过程的顺畅和安全。
6. 使用AWS CloudTrail跟踪用户活动和API使用情况,以便进行审计和遵从性报告。
7. 使用AWS Cost Explorer来监控和控制AWS的使用成本。使用预留实例来减少长期使用的成本。
1. 方案设计
1.1 账号设计
设计AWS IAM(Identity and Access Management)账号时,考虑以下几个关键因素:
l 最小权限原则:根据“最小权限原则”,为每个用户分配最少的权限来完成其工作。使用IAM策略来定义适当的权限,只授予用户所需的访问特定服务或资源的权限。
l 角色分离:根据不同的职责和角色,创建不同的IAM用户和IAM角色。IAM角色是一种特殊类型的身份,它可以被临时附加到其他IAM实体(如用户、组或服务)上,并通过IAM信任策略限制访问。
l 多因素身份验证:启用多因素身份验证(MFA)以增加账号的安全性。在IAM中,您可以配置MFA设备并要求用户在登录时提供验证码,以确保只有经过授权的用户能够访问敏感资源。
l 访问审计:启用AWS CloudTrail以记录所有IAM操作和事件。这将提供一份详细的审计日志,帮助您监视和审查账号的活动,并检测任何潜在的异常行为。
l 密码策略:通过IAM密码策略来强制实施强密码规则,例如密码复杂度要求、密码到期和密码历史限制等。这有助于确保用户账号的密码安全性。
l 外部身份提供商:通过集成外部身份提供商(如Active Directory、LDAP等)来实现单一登录(Single Sign-On,SSO)功能。这样可以简化用户管理,并提供对AWS资源的无缝访问。
l 定期审查和维护:定期审查和维护IAM账号是确保账号安全的重要环节。应定期检查并更新权限,删除不再需要的用户和角色,并监视账号的使用情况。
1.2 安全设计
Ÿ 账户安全:按企业组织架构使用IAM创建用户组和相关权限,并附加角色设置访问策略,所有用户启用MFA,提高账号安全性。
Ÿ 网络安全:通过规划VPC和子网对不同环境资源隔离规则,给服务给应用提供最大程度的保护。网络层可使用ACL策略开启黑白名单保护应用安全和三层架构之间的隔离。
Ÿ 数据安全:为S3开启数据加密,保护客户数据安全。以最小权限原则规划设计存储桶访问策略和数据库安全组规则。
1.3 数据存储设计
S3
AWS的对象存储服务,以极低的成本提供业内领先的可用性、性能、安全性和无限的可扩展性。存储广告系统中多种类型的资源数据。包括:
l 广告素材:存储广告所需的图片、视频、音频等素材;
l 广告数据:存储与广告相关的各种埋点数据,如点击率、曝光量、转化率等;
l 统计报表:存储大数据所需的统计报表原数据,如流量分析、转化率分析、用户行为分析等;
l 配置文件:存储广告系统的配置文件,如系统设置、插件配置等;
Amazon RDS
AWS上的托管数据库服务,以高可用性、高吞吐量和高存储可扩展性支持不断增长的应用程序。存储广告系统中的业务数据。包括:用户信息、广告信息、投放策略、投放数据、竞价信息等等;
1.4 统一监控设计
采用AWS CloudWatch 监控资源,收集和跟踪EC2、网络等指标,设置警报(基于CPU、内存、磁盘使用率、磁盘IO、网络),根据系统模块创建自定义仪表板等。可以使用AWS SNS (Simple Notification Service)发送邮件告警通知。同时可结合部署或使用AWS的Pormethes服务收集自定义监控指标以满足应用的特定监控需求。使用AWS Managed Grafana服务可按监控需求定制看板,集中采集各区域的Promethes监控指标,实现监控数据可分析、报表和大屏视图管理等功能。详细见文档:客户案例-北京小桔灯科技有限公司-监控日志告警处理手册.docx / 客户案例-北京小桔灯科技有限公司-监控指标说明.xlsx
1.5 统一Tag设计
客户的多个系统,分别由多个技术部门分别进行负责,在前期调研中会有按照不同部门和项目来分配成本的需求。客户的负责人需要分析哪些业务部门、团队或项目在成本上的支出和消耗。我们推荐客户配置成本分配标签来满足这些需求,客户可以通过标签来定义和管理以什么样的维度来查看用量和成本,再使用Cost Explorer来查看相关维度的成本和用量。这样就可以很容易的了解内部各个部门的云成本支出,有助于客户做好下一步的业务及财务规划。标签设计的规划按 所属项目、业务系统、业务部门、产品归属、开发团队、环境划分等。
2. 最佳实践
2.1 整体架构
ü 使用路由服务Route53实现智能DNS解析域名
ü 使用AWS WAF或AWS Shield替代原架构硬件的安全防护
ü 使用AWS CloudFront实现静态内容的全球加速
ü 使用应用负载均衡ALB实现自动分发访问流量
ü 使用多可用区的部署方式实现应用业务服务的高可用
2.2 最佳计算实例
ü 根据应用业务场景、模型及技术架构选择不同的实例类型
ü 堡垒机(JumpServer)选用C5.xlarge实例
ü Redis选用cache.m5.2xlarge实例
ü 购买预留实例,以确保有足够资源科长期可靠运行
ü 使用AWS AutoScaling,按业务峰值实现弹性伸缩
2.3 最佳存储
ü 使用AWS S3对象存储,实现数据的安全且高可靠性
ü 使用AWS EBS块存储—gp2类型SSD存储卷
2.4 最佳数据库
ü 增加数据库存储容量
ü MySQL集群采用预配置3000 IOPS存储性能
ü 数据库启用存储自动扩展能力
ü 采用集群模式Redis,存储配置为2副本
3. 运维优化
ü 平台监控采用Amazon CloudWatch,监控AWS云资源和应用程序 的操作和性能指标。
ü 启用AWS CouldTrail,, 对AWS 账户进行监管、合规性检查、操作审核和风险审核。
ü 启用S3 logging服务,资源的访问记录全部保存至S3
ü 使用 Amazon S3 API 或控制台检索日志文件;适合于安全分析,AWS资源跟踪,解决操作问题与合规性支持。
ü 配置AWS Config,提供AWS资源清单以及资源的配置更改历史记录。
4. 卓越运营
小桔灯客户需要在AWS云中建立完善的监控检测体系,通过使用Amazon CloudWatch来实现。Amazon CloudWatch是一种面向开发运营工程师、开发人员、站点可靠性工程师 (SRE) 和 IT 经理的监控和可观测性服务。
CloudWatch为您提供相关数据和切实见解,以监控应用程序、响应系统范围的性能变化、优化资源利用率,并在统一视图中查看运营状况。CloudWatch以日志、指标和事件的形式收集监控和运营数据,让客户能够在统一查看在AWS上运行的资源、应用程序和服务。还可以使用 CloudWatch 检测环境中的异常行为、设置警报、并排显示日志和指标、执行自动化操作、排查问题,以及发现可确保应用程序正常运行的见解。
轻松收集和存储日志
Amazon CloudWatch Logs 服务让您能够以近乎实时的方式收集和存储来自资源、应用程序和服务的日志。
ü 内置指标
从分布式应用程序(例如使用微服务架构构建的应用程序)收集指标非常耗时。借助 Amazon CloudWatch,您无需执行任何操作即可从超过 70 种 AWS 产品(例如 Amazon EC2、Amazon DynamoDB、Amazon S3、Amazon ECS、AWS Lambda 和 Amazon API Gateway)收集默认指标。
ü 自定义指标
Amazon CloudWatch 允许您从自己的应用程序收集自定义指标,以监控运行性能,排查问题和发现趋势。用户活动是您可以在一段时间内收集和监控的自定义指标的示例。
Ÿ 通过控制面板查看统一运作视图
Ÿ 通过 Amazon CloudWatch 控制面板,您可以在统一视图中创建可重复使用的图表并可视化云资源和应用程序。
5. 成本优化
5.1 全生命周期的管理
ü 使用IAM的角色进行最小资源权限管理与授权
ü 使用Tag标签,全面对AWS资源进行管理,如在账单中可以显示每个资源的Tag标签信息,然后进行分类
ü 配置预生产域,生产域进行资源隔离
5.2 定期回收空闲资源
ü 通过Tag标签规范,追踪IAM用户使用资源情况
ü 根据Amazon Trusted Advisor成本优化检查
ü 当负载降低时 Auto Scaling 自动释放因达到阈值所新增资源
5.3 低频存储优化管理
ü 定时对账单进行分析,预期花费进行对比,确保资源没有浪费并被合理使用
ü 按需实例使用超期,可考虑提升为预留实例
ü 对于访问率低的的S3,可降为-低频访问标准
5.4 定期评估资源成本
ü 设计架构时利用AWS Cost Explorer估算成本
ü 对比不同Region价格差异,选择合适的区域
ü 根据环境(生产、准生产)购买不同计费资源(预留、按需)
6. 小桔灯网客户收益
6.1 可用性提高
使用AWS并利用多区域(Region)和可用区(Availability Zone),使整体架构更为稳定,保证了客户业务产品竞争力。用户主要业务运行在全球Region,通过北美多Region部署异地灾备中心,从而满足业务系统运营持续性要求。
6.2 成本优化
迁移是一个整体技术架构的优化改造过程,通过本次迁移,客户整个业务无单点,无耦合,花更少的钱,性能提高。详细见文档:客户案例-北京小桔灯科技有限公司-成本估算.xlsx
6.3 合规性提高
利用VPC、安全组服务,提高业务系统安全可靠;利用AWS S3,灵活应用存储服务,归档成本低,用户长期保存数据,符合国际监管要求。
6.4 减小运维压力
客户使用了EC2、RDS成熟产品,减少数据库上的运维压力,将重心放在业务创新上。