越南 ZaloPay 使用 KubeSphere 构建核心商户平台支持亿级用户

百家 作者:QingCloud 2020-08-26 17:36:08

本文来自 ZaloPay 团队 DevOps 工程师 Tan To Nguyen Duy,英文原文首发于 Tan To Nguyen Duy 的个人博客:https://tantnd.me/posts/kubesphere-at-zalopay-infrastructure/

ZaloPay是 VNG Corpoation 旗下的一款移动支付应用。VNG Corporation 是越南领先的互联网独角兽科技公司。在 2014 年,VNG Corporation 被评为越南唯一一家估值 10 亿美元的创业公司。VNG 推出了许多重要产品,比如 Zalo、ZaloPay Zing 等,吸引了数亿活跃用户。Zalo 作为越南最流行的社交通讯软件之一,而 ZaloPay 可以被认为是越南的 “微信支付”。

ZaloPay 介绍

ZaloPay 发布于 2017 年,建立在越南最流行的社交应用之一 Zalo 的基础上,继承了 Zalo 生态中的诸多便利。在 Zalo 已有的生态系统中有着庞大的 Zalo 用户,活跃用户在 1 亿左右。相较于 Momo、Moca 的 GrabPay,以及 ViettelPay 等,ZaloPay 更具竞争力。
在由越南最大的新闻类门户网站 VnExpress 所举办的 2018 技术大奖(2018 Tech Awards)颁奖典礼上,ZaloPay 荣获年度支付应用程序第三名。MoMo 占据头名位置,ViettelPay 紧随其后。

拥抱新技术

VNG 是越南的互联网独角兽公司,业务领域广泛。在越南,ZaloPay 也被视为以社交平台提供转账和支付功能的先驱。

ZaloPay 致力于使用最为尖端的框架、技术和编程语言来开发产品,创建架构。依靠过时的架构去构建和开发应用程序会导致可扩展性、适应性和可观察性等各方面的问题。例如,对于传统的单体架构,想要对一个大型、复杂的紧耦合应用程序进行更改非常之难。此外,单体架构可扩展性差、技术壁垒高。换言之,产品上市的计划可能会延后,更新周期也会拉长。

然而,我们所追求的是业务的快速发展与交付,各类服务需要对各种改变迅速作出反应。
毫无疑问,Docker 和 Kubernetes 为满足我们的业务需求提供了最好的自定义技术架构。关于容器化和其优势所在自不必多说。组件化加快了我们的开发速度,开发出的产品也更为可靠。Kubernetes 让我们的滚动升级和回滚模式自动化,通过探针监控应用的状况

采用 Kubernetes 和 KubeSphere

2018 年底,我们使用 Kubernetes 作为容器编排解决方案。Kubernetes 帮助我们声明式地管理我们的集群,让我们得以控制应用版本,轻松复制应用。然而,有太多的问题需要我们去考虑,如日志监控、DevOps 和中间件等,这也使得 Kubernetes 的学习曲线相对较高。实际上,我们对几种最常用的工具进行了调研。例如,我们利用 EFK 进行日志管理,采用 Jenkins 作为 CI/CD 的引擎进行业务更新,我们也会在自己的环境中使用 Redis 和 Kafka
这些常用的工具帮助我们提升了开发和运营的效率。然而,我们当前最大的挑战是开发者们需要学习、维护这些工具,在不同的终端和界面之间来回切换也相当耗费时间。因此,我们开始调研一种集中化的解决方案,可以将云原生技术栈和常用工具集成到一个统一的 Web 控制台。我们对比了一些开源的解决方案(如 Rancher 和原生的 Kubernetes),但最后发现开源的 KubeSphere 最为方便
我们把 KubeSphere 安装在已有的 Kubernetes 集群上。目前,我们拥有两个 Kubernetes 集群,分别用于沙盒和生产环境。考虑到数据隐私问题,我们把集群都部署在物理机上。我们使用 HAProxy 安装高可用集群以实现流量的负载均衡。

为什么我们选择 KubeSphere

借助 KubeSphere 提供的对开发者友好的向导式操作界面,我们能轻松地监控从基础设施到应用程序的资源消耗情况。由此,ZaloPay 商户平台在 KubeSphere 上也已经稳定运行了半年。KubeSphere 提供了一系列功能,整合并打包了云原生技术栈,例如开箱即用的应用程序生命周期管理功能、监控日志、多租户以及告警通知等。由于每个功能和组件都可拔插,我们可以根据自己的需求去启用

事实上,最让我们青睐的还是 KubeSphere 在可视化和平台功能完整性上的优势,包括:
  • 对开发者友好的 Web 控制台
  • 多维度监控功能
  • 功能丰富且可拔插
  • 易用的应用商店支持一键部署应用至 Kubernetes

如何实现 DevOps

通过执行 CI/CD 流水线,我们直接运行 ZaloPay 的商户平台。如下方视图,我们使用 KubeSphere 运行 CI/CD 流水线,将 GitLab、SonarQube、Docker、Kubernetes 和 Docker 仓库都整合到一套流程中。在第一阶段,流水线会对整个流程所需的一些必要环境进行初始化。接下来,通过设定环境条件(例如 checkout branch, deploy env 和 tag version 等),流水线会拉取 GitLab 上的源代码。在第三阶段会对 Golang 项目进行构建,触发 SonarQube 分析源代码,检查其质量。如果没有特殊情况或者代码没有重大问题,流水线将会进行下一阶段。

一切正常运行之后,流水线会在第四阶段使用 Docker 打包项目。然后将 Docker 镜像推送至 Docker 仓库。第五阶段会将 Docker 镜像部署至所需的环境,例如沙盒和生产环境。流水线上的垃圾会随后清空,并向我们的团队发送流水线的运行结果。

使用 SonarQube 进行代码质检

我们使用 SonarQube 进行静态代码质量分析。下方的截图是 SonarQube 对我们服务分析结果的一个示例。这帮我们迅速定位问题,并找到我们代码中的缺陷。

KubeSphere 让 ZaloPay 的运维团队可以把更多的时间花在管理和工作流程的自动化上。              

               —— Tan To Nguyen Duy

贡献开源

为了满足对云原生技术栈集中管理的需求,我们选择使用 KubeSphere 在 Kubernetes 的基础上加强可观察性。现在,我们可以在几分钟内迅速部署新的微服务并分配资源。KubeSphere 同样也帮助开发者加快了产品上市时间
KubeSphere 让 ZaloPay 的运维团队可以把更多的时间花在管理和工作流程的自动化上。KubeSphere 提供了丝滑的用户体验,对开发者友好的 Web 控制台将内在复杂的逻辑关系清晰地呈现,使得操作基础设施资源更为简单。KubeSphere 是世界上一个正在快速发展的开源社区。KubeSphere 社区帮助众多的公司和组织通过云原生技术轻松运营各自的业务,解决 Kubernetes 自身的痛点
我非常喜欢开源和开放的社区开发模式。这种模式让全世界的开发者们走得更近,得以在一个开放、活跃的社区相互讨论彼此的观点,帮助解决彼此的问题。我相信开源是软件行业的大势所在,我也在努力为这一社区贡献自己的一份力量。我希望 KubeSphere 可以继续助力开源社区的发展,为广大用户带来更好的产品。

关于 KubeSphere

KubeSphere (https://kubesphere.io)是在 Kubernetes 之上构建的容器混合云,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。

KubeSphere 已被 Aqara 智能家居、本来生活、新浪、中国人保寿险、华夏银行、浦发硅谷银行、四川航空、国药集团、微众银行、紫金保险、Radore、ZaloPay 等海内外数千家企业采用。KubeSphere 提供了运维友好的向导式操作界面和丰富的企业级功能,包括多云与多集群管理、Kubernetes 资源管理、DevOps (CI/CD)、应用生命周期管理、微服务治理 (Service Mesh)、多租户管理、监控日志、告警通知、存储与网络管理、GPU support 等功能,帮助企业快速构建一个强大和功能丰富的容器云平台。

相关文章阅读——
智能家居巨头 Aqara 借助KubeSphere 打造物联网微服务平台
从虚拟化到容器化 本来生活接着KubeSphere打造低成本DevOps平台
看得见的高效,一个人也能轻松运维的 K8s




全国巡展活动招募


2020 青云QingCloud 全国巡展正式启动

扫码预约

9 月 2 日 & 9 月 4 日,我们相约深圳 & 广州





夏日冰爽促销活动


企业上云 | 夏日冰爽促销活动火热进行中

扫码立即抢购


点击这里阅读原文

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接