DevOps 致简之道 - MaxCloud + EKS 让开发回归开发

数据库
DevOps
Amazon Elastic Kubernetes Service (EKS)
云原生
0
0
Mobvista 汇量科技成⽴于 2013年,作为全球性技术平台,致⼒于为全球客⼾,尤其是中国出海客⼾,提供发展移动互联⽹⽣态所需要的⼴告技术服务和营销技术服务。 Mobvista 是 All in Cloud 架构,程序化移动⼴告平台拥有包括 DSP、ADX、SSP、DMP等全栈式产品服务。Mobvista 采⽤了亚马逊云科技的很多服务, 其中有两点需要跟⼤家特别介绍, ⼀是采⽤亚马逊云科技的 ASG,来确保拥有合适的容量以满⾜当前流量需求。 通过⼤量使⽤ Spot EC2, 也带来了成本上的节省。 ⼆是从2020年开始我们将 Container 作为主要技术⽅向,开始使⽤亚马逊云科技的 EKS 服务,逐步把 workload 迁移到 EKS。在迁移过程中 Mobvista 也⾯临了⼀些挑战和新的需求, 下⾯跟⼤家分享下,我们在应对这些需求和挑战中总结下来的基于 EKS 的 DevOps 最佳实践。 我们选择 EKS,是有两个⼤的技术背景,⼀是 DevOps,我们⼴告业务的快速迭代,竞价算法效果的快速实验与发布,都需要研发与运维紧密的协作来完成;⼆是微服务与容器化,我们为了实现灵活的微服务架构演进,需要将 ASG EC2 的部署⽅式转向基于容器的调度⽅式,以适应多 Region 和多 AZ 的灵活调配。 ![image.png](https://dev-media.amazoncloud.cn/0848f717bd9945fc86b6c1816147d586_image.png "image.png") *图1:EKS 集群数、节点数* 这张图是我们最近半年 EKS 集群资源情况。在⼤规模使⽤ EKS 时我们也遇到了新的需求与挑战,⼤体来⾃四个⽅⾯: - 产品业务上,迭代密集,需要做到版本的 Daily 发布,包括分钟级上线与回滚; - 在技术上,容器微服务对运维和研发有新的要求,需要熟悉 k8s 与 container 下的开发⽅式; - 在规模上,要⾯对庞⼤的 EKS 和 EC2 集群,同时我们的业务是潮汐伸缩,时刻发⽣变化的; - 最重要的,我们做这些不是为了容器⽽容器,⽽是要切实的带给研发团队好的研发体验。 基于解决上述需求和挑战,我们构建起⼀个内部云原⽣平台产品,称为 MaxCloud,下⾯分别阐述⼀下 MaxCloud 具备的产品特点和取得的效果。 ## **1. MaxCloud 集成了容器最佳的研发实践** 云原⽣技术栈是有着“陡峭”的学习曲线的,并且技术也是⽇新⽉异的。下图是 CNCF 基⾦会的技术版图,社区应⽤数⽬⾮常的庞⼤。即便基⾦会推荐了容器化实践的路径,但是也需要不⼩的学习成本。 ![image.png](https://dev-media.amazoncloud.cn/75c6f6fdf25640b3aa88929fdc4b399c_image.png "image.png") *图2:CNCF Landscape 截图⼀⻆* 因此 MaxCloud ⾸要⽬标是简化云原⽣技术栈,让研发⼈员可以做到提交代码即可发布到全球 kubernetes 集群。如下图⽰,构建好⼀个新项⽬后,提交代码可以⾃动的打包、推送到全部应⽤集群,同时环境中还可维护多个历史版本。 ![image.png](https://dev-media.amazoncloud.cn/751255d83ef6413ba89571bd91cc64c0_image.png "image.png") *图3:GitOps ⾃动打包、推送应⽤* 除此之外,MaxCloud 也给予研发⼈员最佳的部署建议: - 构建最⼩体积的 Container,体积⼩意味着更安全、更快速的伸缩。 - 全⾯管理 Pod 的 Lifecycle ⽣命周期,充分利⽤ Init container、Poststart hook、Readiness Probe、 Liveness Probe、Prestop hook 等; - 统⼀进⾏包管理,并做好弹性伸缩,其中要充分利⽤ HPA 和 CA,它们也都属于应⽤的⼀部分,需要统⼀的进⾏版本化管理起来。 ## **2. MaxCloud 统⼀了容器应⽤的“研发语⾔”** ![image.png](https://dev-media.amazoncloud.cn/10a36cd11d9a4f0e8915e69d59cfaee7_image.png "image.png") *图4:任意将资源制作成 Bundle* 为了使⼴⼤研发团队快速融⼊容器⽂化,我们创新的引⼊了“Bundle”概念。之前,statefulset、configmap、service 这些资源是零散管理的,有些同学可以学习使⽤ Helm 来进⾏打包,但这需要学习成本,不是所有研发都会使⽤。通过我们引⼊的 Bundle 概念,研发⼈员可以很轻松的将任意 EKS 资源打包到⼀起,然后对这个 Bundle 做整体的升级和回滚管理,学习成本为0。 借助这个 Bundle 概念,我们研发⼈员还可以从应⽤视⻆看待 EKS、看待容器,同时,遇到报警、遇到问题时,⼤家也可以通过这个 Bundle 做统⼀的⼊⼝,迅速的深⼊到详细的资源层,查看⽇志,诊断应⽤,修复问题。 ![image.png](https://dev-media.amazoncloud.cn/7e012e1b357f4f7b810e508db91fcdb5_image.png "image.png") *图5:应⽤的⾼级视⻆与细节视⻆* 上图的左侧是应⽤ Bundle 图,可以很直观的看到应⽤信息和包含的资源;右侧是 Bundle 对应的详细信息,并且可以做⾮常多的容器操作,⽐如查看⽇志、delete 掉 pod、伸缩扩容等等。 ## **3. MaxCloud 促成了研发团队的⽆缝协作** 研发团队协作⾄关重要,也是 MaxCloud 重点⽀持的,只有把握住容器下的团队协作,才能真正形成、“传染”容器⽂化。容器下的团队协作是 MaxCloud 核⼼价值之⼀。 ![image.png](https://dev-media.amazoncloud.cn/bac9860a471d42efae723b90635bfe2e_image.png "image.png") *图6:团队与资源的映射关系* 为了达到⽆缝的团队协作,我们将研发⼈员和项⽬,同众多 EKS 资源做了映射。我们平台上有这⼏个基本概念,团队、⼈员、项⽬、集群、命名空间和应⽤,如图所⽰,它们之间划分的⾮常清楚。通过对接 LDAP,公司新成员、离职⼈员都可以做到快速接⼊与安全退出。 ![image.png](https://dev-media.amazoncloud.cn/99621991fc5f41a79cd3094cf6ebab27_image.png "image.png") *图7:映射关系设计图* ![image.png](https://dev-media.amazoncloud.cn/c99d2a0828b74ddeb4d086ebc255a998_image.png "image.png") *图8:OP、RD、QA ⼀致的沟通语⾔* 借助 MaxCloud 平台研发团队做到了容器⼯作的⾼度透明性,运维同学部署后,测试同学可以直接查看配置,研发同学也可以迅速的诊断⽇志。在这个平台下,⼤家使⽤的“沟通语⾔”是⼀致的,协作快捷⽽⾼效。 ## **4. MaxCloud 使得 EKS 集群规模多⽽不乱** 我们集群间是保持隔离的,同时它们⼜是互联的,这主要得益于我们平台对集群的标准化管理,只要接⼊到 MaxCloud 的 EKS 集群,就可以实现运维与研发的标准化。例如:我们可以装统⼀的监控软件,Prometheus 和 Grafana、也可以装统⼀的⽇志组件 fluentd、elasticsearch 和 kibana,这些都是⼀键化安装和卸载的。 ![image.png](https://dev-media.amazoncloud.cn/ce4d934a34194a7f801a0e4edd06c4fe_image.png "image.png") *图9:集群标准化治理* ## **实践效果总结** 我们 MaxCloud 未来的⽬标,依然是帮助更多研发⼈员,更好的使⽤容器,使⽤云原⽣技术。除了分享的内容基础之上,MaxCloud 也在打造更便利的集群治理技术,例如多 Region、多集群间的切量扩容⾃动化,⼤幅度简化流程当中的⼈⼯操作、⼈⼯等待和⼈⼯确认的成本。进⼀步的让研发⼈员关注技术本⾝,让开发回归开发。 ![image.png](https://dev-media.amazoncloud.cn/f868311f73354ca8972a926ab0adc34a_image.png "image.png") ## **Mobvista 汇量科技** 汇量科技为全球移动开发者提供广告技术服务与营销技术服务。通过一站式的 SaaS 产品矩阵,移动应用开发者可以轻松、高效地进行用户获取、效果衡量、创意自动化、广告变现等全链路营销活动,实现全球增长。目前,汇量科技已累计服务112个国家的7000多家互联网企业。 公司于2013年在中国广州成立,并于2018年12月在香港联合交易所主板上市 ( 01860.HK),在全球范围内设立17个办公室。 *投稿⼈:Mobvista 汇量科技-资深研发工程师 - Leon* *审核人:yagrxu*
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭
contact-us