ADmobile首席架构师王威:广告业务云上运维最佳实践

简介: ADmobile借助阿里云提供的弹性伸缩组,通过设置自定义监控指标进行弹性的扩缩容,应对广告业务的激增流量。

12月21日,在阿里云弹性计算年度峰会上,ADmobile首席架构师王威发表了《ADmobile广告业务云上弹性计算最佳实践》的演讲,介绍了ADmobile业务云上最佳实践。

王威-小尺寸.png

【图:ADmobile首席架构师王威】


本文主要根据王威的演讲整理而成,内容分为四部分:

  1. 业务背景介绍;
  2. 业务发展中的技术痛点;
  3. 解决方案;
  4. 实践经验。

01 ADmobile(艾狄墨搏)业务背景介绍


图1.jpg


ADmobile是一家程序化的广告聚合SaaS服务商,通过自主研发的广告聚合管理系统,整合流量管理、UR工具,为APP广告变现提升收益。通过一站式广告聚合平台,ADmobile提供专业多维度的数据报表,还有聚合管理、灵活的运营方式和多样灵活的优化工具。

2-业务发展变化.jpg


上图可以看到,ADmobile业务发展中服务资源的变化:从最早期就是一台服务器、一个数据库支撑我们业务发展,到现在有200台以上的服务器,还有数据库、中间件、负载均衡等一系列云资源。业务高峰的时候,ECS数量一度达到400台,甚至曾经超过500台;业务高速发展的同时,流量也在激增,对于技术和运维都是一种极大的挑战。


02  ADmobile业务发展中的三大技术痛点


在早期的方案当中,对于流量峰值的变化,基本无法灵活应对,只能通过部署服务器去应对流量波动。一些特殊的日子,例如618、双11的大促期间,流量会出现爆发式增长,这需要技术人员提前准备足量的服务器,应对流量的激增,保证我们业务能够平稳运行。

3-早期方案.jpg


早期部署方式也比较传统,即在一台指定的服务器上,把我们的项目运营好,制定一些相应的启动脚本来生成ECS镜像,通过批量的创建ECS来保证服务正常运行。

4-早期技术架构.jpg


早期的技术架构看上去很简单,总共只有3个服务,这是我们在线运营的业务。通过负载均衡进入服务A,通过服务发现调用B和C,整体三个服务支撑了我们现在的一大块业务。这个技术架构中,所有的服务器都是固定的,所以无法根据流量变化去实时动态调节服务器资源,因此造成了服务器资源很大的冗余和浪费

5-技术痛点.jpg


服务资源冗余、突发大流量的应对困难、镜像生成非常耗时(基本上需要数十分钟甚至小时级别),这三个技术痛点导致很难应对业务实时的变化发布。


03 我们的解决方案


6-现在的方案.jpg


当前,ADmobile选择了增加了弹性服务器组,发布方式上采用了ECS自动同步最新服务,并采用了Jenkins+K8s的一键部署。在一台服务器上把服务部署好,其他的服务器会定时同步最新的服务,并重新启动服务,这样避免了重新生成ECS镜像,可以实现更加灵活的发布。

7-技术架构1.jpg


上图是我们技术架构中的一个,相比早期的架构可以明显地看到多了一个弹性伸缩组。弹性伸缩组的存在,既避免了服务器资源很大的冗余和浪费,又能更好地应对一些大量流量的突增业务。在弹性伸缩组里面还可以通过部署一部分抢占式实例,来进一步降低服务器成本。

8-技术架构2.jpg


这是另一个业务架构,它是基于K8s搭建的,现在比较流行通用的架构,分为数据层、服务层、网关层和展示层。

1. 数据层,可能包括数据库MySQL、缓存Redis、对象存储OSS等。


2. 服务层以K8s为核心,包括我们自己搭建的Kubernetes,只有在进行发布的时候才会占用一些资源,不发布的时候基本上不占用资源。


3. 网关层,主要是通过负载均衡对外提供服务,目前在尝试将服务网格应用到业务中,还处于测试阶段,接下来如果测试稳定,可能就会把负载均衡全部切到服务网格上。


4. 展示层,包括PC端、移动端、小程序等。在这种架构中间,还使用了阿里云的平台服务,像注册中心、日志记录等服务穿插在整个业务的所有过程中。

以下介绍我们在实际工作中遇到的常见问题及解决方案。


1、如何应对流量激增

9-常见问题1.jpg


这是很多业务运行过程中都会碰到的问题,流量激增可以分为两类:一类是可预测的流量,例如,早高峰或者晚高峰由于用户量的增加导致流量激增,这种可预测的流量激增,可以定时的扩容的策略来保证业务运行;另一类是不可预测的流量,一般可以通过API或者SDK方式自定义监控指标,借用阿里云的接口提前进行扩容,即根据指标的波动、变化进行相应的扩容或者缩容。实现方式是根据自己的业务结合阿里云的SDK 、API相应的脚本进行编写。


2、如何选择监控指标

10-常见问题2.jpg


伸缩容过程中的一些监控指标,例如平均负载、CPU使用率、内存使用率、网络流量、磁盘IO等,可以根据不同的应用类型来选择不同的监控指标。以JAVA应用为例,它是比较占用内存的,当内存占比到70%-80%,它的CPU占用可能还很小;如果我们监控它的CPU使用率,尽管CPU占用处于正常范围,而内存可能已经用到90%或者更高,这种监控指标的选择是不太恰当的,我们应该根据不同的应用灵活地选择监控指标。


3、如何选择扩容和缩容的指标值

11-常见问题3.jpg


这个主要是指阿里云弹性伸缩组的扩容和缩容的指标值。根据我们的实践,不建议设置相等值,例如,当CPU使用率大于50%的时候进行扩容,CPU使用率小于50%的时候进行缩容。这是因为扩容或者缩容都有冷却时间,如果CPU的使用率就在50%左右上下波动,可能最终导致我们的扩容或者缩容的目的无法实现。

 

04  四大实践经验总结


12-实践经验总结.jpg


我们总结的实践经验有4点:


第一,不要把所有的ECS都交给弹性伸缩组来控制。因为弹性伸缩组是比较灵活的,如果我们设置的指标不太严格,可能导致ECS出现无序的扩容,或者出现ECS数量变成零等异常情况,从而对业务造成影响。


第二,弹性伸缩组里面设置合适的实例上限。这个和第一个类似,如果不设置上限或者上限值设置的不合理,可能会导致无序扩容,应用异常或者监控指标持续上升,最终导致服务器数量异常,对成本带来负担。


第三,部署适当比例的抢占式实例。抢占式实例的折扣在活动中可能低到1折,如果业务结构合适,通过分配一定比例的抢占式实例,可以有效地降低成本。


第四,善用云上运维自动化服务。阿里云提供了很多好用的工具,例如使用ECS云助手,可以对服务器进行批量的漏洞修复或者软件升级。

13-实例展示.jpg


最后,分享一个弹性伸缩组的案例。在上图中,最高峰的时候,ECS数量应该有45台,最低的时候有10台,并且最低10台的时候我们做了一定的冗余处理。如果放开限制,ECS数量会变得更少,通过这样的部署方案,经过测算,成本总共降低了约30%。


点击大会官网,观看王威的精彩演讲视频。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3天前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
4天前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
29 10
|
6天前
|
运维 监控 安全
天财商龙:云上卓越架构治理实践
天财商龙成立于1998年,专注于为餐饮企业提供信息化解决方案,涵盖点餐、收银、供应链和会员系统等。自2013年起逐步实现业务上云,与阿里云合作至今已十年。通过采用阿里云的WA体系,公司在账号管理、安全保障、监控体系和成本管控等方面进行了全面优化,提升了业务稳定性与安全性,并实现了显著的成本节约。未来,公司将持续探索智能化和全球化发展,进一步提升餐饮行业的数字化水平。
|
6天前
|
运维 监控 BI
卓越架构之FinOps最佳实践
本文探讨了云成本管理的趋势和FinOps的最佳实践。随着云计算的普及,传统的IT管理模式已无法适应按需使用和按量付费的新模式,导致企业面临资源浪费和成本失控的风险。FinOps作为一种管理理念,强调运维、财务和技术团队的合作,通过数据驱动和业务价值驱动的方式优化云成本。文章介绍了FinOps的核心挑战、最佳实践及技术工具的应用,帮助企业有效管理和优化云成本,实现降本增效。
|
10天前
|
Kubernetes 安全 数据安全/隐私保护
云卓越架构:容器安全最佳实践
本次分享由阿里云智能集团解决方案架构师张玉峰主讲,主题为“云卓越架构:容器安全最佳实践”。内容涵盖容器安全的挑战、云原生容器安全架构及典型场景。首先分析了容器安全面临的问题,如镜像漏洞和权限管理。接着介绍了容器安全架构的五个维度:身份权限管理、配置安全检查、运行时防护、镜像安全检测及发布的安全管控。最后通过具体场景展示了容器身份与权限管理、密钥管理、运行时防入侵等最佳实践,强调了安全左移的重要性,确保从开发到运行的全生命周期安全覆盖。
|
2月前
|
运维 监控 安全
自动化运维的利剑:Ansible在现代IT架构中的应用
在数字化浪潮中,企业对IT系统的敏捷性和可靠性要求日益提高。Ansible,一种简单但强大的自动化运维工具,正成为现代IT架构中不可或缺的一部分。它通过声明式编程语言YAM,简化了系统配置、应用部署和任务自动化的过程,显著提升了运维效率和准确性。本文将深入探讨Ansible的核心特性、应用场景以及如何有效整合进现有IT环境,为读者揭示其在自动化运维中的实用价值和未来发展潜力。
|
2月前
|
消息中间件 监控 安全
构建高效微服务架构:最佳实践与挑战
在现代软件开发中,微服务架构因其高度的可扩展性、灵活性和敏捷性而受到青睐。本文深入探讨了构建高效微服务架构的关键策略,包括服务的划分、通信机制、数据管理、部署与监控等方面的最佳实践。同时,文章也分析了在实施过程中可能遇到的挑战,如服务间的依赖管理、数据一致性问题、安全考量及性能优化等,并提出了相应的解决方案。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们在构建微服务系统时能够有效规避风险,提升系统的健壮性和用户体验。
|
2月前
|
运维 Devops 应用服务中间件
自动化运维的利剑:Ansible在现代IT架构中的应用
【10月更文挑战第42天】本文旨在揭示自动化运维工具Ansible如何革新现代IT架构,通过简化配置管理和部署流程,提升效率和可靠性。我们将探索Ansible的核心功能、语言特性以及其在DevOps文化中的角色。文章还将展示如何借助Ansible构建模块化和可重用的配置代码,实现快速迭代与部署,并确保系统一致性。通过阅读本文,运维人员将了解如何利用Ansible优化日常任务,加速产品上线速度,同时提高系统的稳健性。
47 5
|
2月前
|
机器学习/深度学习 运维 监控
智能运维在现代IT架构中的转型之路####
【10月更文挑战第29天】 本文旨在探讨智能运维(AIOps)如何成为现代IT架构不可或缺的一部分,通过分析其核心价值、关键技术及实践案例,揭示AIOps在提升系统稳定性、优化资源配置及加速故障响应中的关键作用。不同于传统运维模式的被动响应,智能运维强调预测性维护与自动化处理,为企业数字化转型提供强有力的技术支撑。 ####
82 0
|
1月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。