From c83173db77f2c54b0fae0666bd4416003efe6b9d Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 20 Dec 2023 14:56:39 +0800 Subject: [PATCH] [zh] Localize a case study: /bluecore/ (#14354) * [zh] Localize a case study: /bluecore/ * apply suggestions from hanxiaop --- .../bluecore/bluecore-containers.png | Bin 0 -> 31544 bytes .../bluecore/bluecore-statistics.png | Bin 0 -> 24784 bytes .../zh/about/case-studies/bluecore/index.md | 100 ++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 content/zh/about/case-studies/bluecore/bluecore-containers.png create mode 100644 content/zh/about/case-studies/bluecore/bluecore-statistics.png create mode 100644 content/zh/about/case-studies/bluecore/index.md diff --git a/content/zh/about/case-studies/bluecore/bluecore-containers.png b/content/zh/about/case-studies/bluecore/bluecore-containers.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7adca7f42432cfff125da60811e443aaff3d57 GIT binary patch literal 31544 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

v4-yOm$S!gQj}HrFh!ps#=i=Q3B& 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 literal 0 HcmV?d00001 diff --git a/content/zh/about/case-studies/bluecore/index.md b/content/zh/about/case-studies/bluecore/index.md new file mode 100644 index 0000000000..e3af1cc017 --- /dev/null +++ b/content/zh/about/case-studies/bluecore/index.md @@ -0,0 +1,100 @@ +--- +title: "Bluecore 利用 Istio 迁移到 Kubernetes" +linkTitle: "Bluecore 利用 Istio 迁移到 Kubernetes" +quote: "Istio 提供了一种开箱即用的构建方法。" +author: + name: "Shray Kumar" + image: "/img/authors/shray-kumar.jpg" +companyName: "Bluecore" +companyURL: "https://bluecore.com/" +logo: "/logos/bluecore.png" +skip_toc: true +skip_byline: true +skip_pagenav: true +doc_type: article +sidebar_force: sidebar_case_study +type: case-studies +weight: 51 +--- + +Bluecore 是一家多渠道个性化平台,专注于提供大规模的高度个性化的电子邮件、 +网站消息服务和付费媒体广告。由于 Bluecore 独特的产品需要处理客户推荐数据以及发送大量个性化的数字通信, +他们需要处理大量数据的摄取、处理和发送工作。这个工作量巨大; +在最近的黑色星期五促销活动期间,他们发送了超过 20 亿封电子邮件。 + +![20 亿封电邮和 1.2 万个 Kubernetes Pod](./bluecore-statistics.png) + +除了数量之外,Bluecore 还需要速度。他们与大多数合作伙伴签订了服务协议, +保证任何客户在提交工作后几个小时内收到电子邮件、网站消息或广告, +这意味着处理速度至关重要。他们使用 Google App Engine +上运行的单体应用程序和运行约 12,000 个 Pod 的 Google Kubernetes Engine (GKE) +集群来实现这一目标。 + +## 挑战:单体架构和不断增长的数据流量 {#the-challenge-monlithic-architecture-and-increasing-data-traffic} + +Bluecore 是一个庞大的运营机构,对数据传输和处理有严格的要求。 +他们面临着一个艰巨的挑战:他们需要处理的数据量不断增加。 +他们知道如果自己的架构不能及时更新就无法应对不断增长的需求,整个流程管道将会过载。 + +对他们的架构进行审查后发现,单体应用将是最大的挑战。 +Bluecore 的开发团队意识到,为了实现未来的增长, +是时候开始迁移到更灵活、可扩展的基础架构了。 + +Kubernetes 提供了一种扩展的路径,而且由于 Bluecore 已经在 +App Engine 上运行,将他们的工作流程的一部分迁移到 GKE +似乎是一个明智的选择。然而,大多数 Bluecore +的工程师没有足够的容器化应用经验。这可能使迁移到 GKE 变得困难。 + +幸运的是,他们找到了解决方案。 + +## 解决方案:使用 Istio 服务网格赋能开发人员 {#the-solution-enabling-developers-with-the-istio-service-mesh} + +“Istio 使你能够立即开始构建”,Bluecore 基础设施团队的软件工程师 +Shray Kumar 解释说,“而且你可以确保你正在以正确的方式构建。” + +没有服务网格,将单体应用拆分为容器化服务就会带来许多没有明显解决方案的挑战。 +例如挑战之一是如何实现身份认证和授权。如果每个容器化服务都需要自己的解决方案, +那么每个开发人员都很可能会采用自己的方式来解决问题。 +这可能导致代码碎片化和未来很多麻烦的问题。 + +幸运的是,Kumar 和基础设施团队熟悉 Istio。 +他们与 Bluecore 数据平台团队的首席工程师 +Al Delucca 密切合作,制定了一个开始应用 Istio 的计划。 + +“我们遇到了这个问题”,Delucca 称, +“但 Istio 是否是解决这个问题的合适工具,这是我们必须弄清楚的。” + +他们发现 Istio 的特性集提供了许多现有挑战的解决方案。 +授权是其中一大特性。来自合伙应用的传入消息需要进行身份认证。 +Istio 可以在边缘执行这种身份认证, +这意味着每个单独的服务不需要实现自己的方法。 + +“我们能够将身份认证和授权推到边缘,这样我们的工程师就不需要理解这些系统的细节了”。 +Delucca 说,“重要的不是他们直接使用 Istio 做了什么, +而是 Istio 在他们不知情的情况下为他们做了什么。 +这就是关键所在,对我们来说是一个巨大的胜利。” + +当他们的工程师开始将单体应用拆分为服务时,他们遇到了 Istio +能够解决的另一个挑战。即追踪对服务的调用似乎是个问题。 +许多旧特性没有关于其依赖关系和要求的清晰文档。 +这意味着性能问题和远程服务调用可能会让开发人员困惑不解。幸运的是, +[Istio 的分布式追踪](/zh/docs/tasks/observability/distributed-tracing/)能够解决这个问题。 +借助这个特性,开发人员能够找出瓶颈和需要修复错误和进行额外工作的服务。 + +Istio 的服务网格使开发人员能够专注于将单体应用拆分为独立的服务, +而无需深入了解整个基础架构。这使得 Bluecore 的工程师能够更快地提高生产力。 + +## 结论:未来 {#conclusion-the-future} + +尽管 Bluecore 团队已经发现了他们所使用的 Istio 特性的巨大价值, +但他们仍希望利用更多特性。其中之一是能够管理自动扩缩的 +[金丝雀部署](/zh/blog/2017/0.1-canary/)。 +金丝雀部署允许团队仅使用应用的一小部分流量进行测试新版本的服务。 +如果测试顺利,可以自动部署升级版本,并逐步淘汰之前的版本。 +另一方面,如果检测到新版本存在问题,可以快速回滚到之前的版本。 + +![单体应用到容器化服务](./bluecore-containers.png) + +Bluecore 团队将继续将他们的单体应用拆分为容器化服务,利用 Istio +将越来越多的服务推到边缘,并为开发人员提供更多时间专注于自己擅长的工作。 +他们已经准备好迎接下一个增长阶段,他们也为抓取和处理越来越多的数据充满自信。