Rappi 使用 Istio 应对增长带来的挑战
Rappi 连接企业、消费者和配送人员,其使命是为用户提供更多空闲时间。他们的应用程序使用户能够订购各种商品和服务。它是第一个拉丁美洲超级应用程序,业务遍布九个国家/地区和 250 多个城市。自 2015 年公司成立以来,该应用程序的下载量已超过 1 亿次。
巨大的成功也带来了快速增长的挑战,而 Rappi 一直在不断发展。在过去的几年里,该公司价值从 1 亿美元增长到 80 亿美元。他们的技术必须跟上业务的步伐,这就是他们选择在 Kubernetes 上部署和管理其应用程序的原因。Kubernetes 继续成为其基础设施惊人增长的推动力。
然而,即使有了 Kubernetes,Rappi 的基础设施也面临着巨大的挑战。他们如何将规模扩展到 50 多个 Kubernetes 集群,其中最大的集群运行超过 20,000 个容器?
挑战:成功的冲击
尽管 Rappi 团队成功地将其基础设施迁移到 Kubernetes,但他们仍在努力应对增长带来的挑战。他们需要作为一家科技公司发展,以跟上业务的步伐。为了帮助管理不断扩展的基础设施,他们开发了一个内部服务网格。不幸的是,这需要过多的维护,并且难以跟上他们所看到的增长。
“我记得 Lyft 使用 Envoy 的故事,我决定在我们的环境中测试一下,”Rappi 的高级 DevOps 工程师 Ezequiel Arielli 说。
解决方案:Istio 驰援
Rappi 团队决定部署 Istio,它使用 Envoy sidecar。这是一个绝佳的匹配。在他们承担这个新项目时,他们发现文档提供了极好的支持,并且 Istio API 既简洁又高效。Istio 是解决他们增长烦恼的方案。
随着 Istio 初始部署成功的消息在整个组织中传播,越来越多的 Rappi DevOps 团队开始迁移到 Istio。最初,只有 30 人的团队使用 Istio,但如今这个数字已增长到 1500 多名开发人员。
Istio 使 Rappi 的 DevOps 团队能够灵活地为不同的服务设置不同的规范。他们能够自定义速率限制、断路器、连接池、超时和其他关键参数。
他们发现 Istio 还提供了非常有用的安全和合规性功能。例如,服务网格可以分割垂直流量并限制不同端点之间的通信。
“Istio 使我们能够灵活地为不同的服务设置不同的规范,”Rappi 的 DevOps 技术主管 Juan Franco Cusa 说。“它还提供了非常有用的安全和合规性功能,这对于高安全环境非常方便。”
“当我们之前的解决方案达到其极限时,我们能够使用 Istio 重构我们的监控堆栈,”Arielli 解释道。“Istio 使我们的团队能够无缝监控任何规模的服务。”
随着他们的基础设施超过 30,000 个容器,这变得至关重要。
成果:基础设施持续增长
开发团队构建了一个自动化、可用于生产环境的 Kubernetes 和 Istio 集群部署。他们构建的内部 API 构建在 Kubernetes 集群之上,使他们能够跨每个集群管理微服务。此外,每个微服务在部署期间都会自动创建和分配流量资源。得益于此系统,他们能够每天管理超过 1500 次部署。
“我们的配置使我们的 Kubernetes 使用和基础设施能够持续增长,”Arielli 说。“我们现在管理着 50 多个 Kubernetes 集群,最大的集群包含超过 20,000 个容器。我们的环境在不断变化,Istio 有助于确保所有这些环境之间的通信高效、可扩展且安全。”
Istio 管理着最关键集群上 1500 多个应用程序之间的流量,并且由于其强大的功能集,他们能够在需要时选择不同的部署策略。Istio 控制平面可以轻松地重新平衡连接,即使流量持续增加。
Rappi 的下一步计划
Istio 采用背后的 DevOps 团队仍在继续改进基础设施。
“将来,我们希望能够在网格级别实现多集群支持,”Arielli 说。“有了此功能,应用程序运行的位置无关紧要。所有应用程序都能够跨集群相互访问。”
结论:使用 Istio 成功扩展
借助 Istio 服务网格,Rappi 已经能够根据市场需求发展壮大。他们可以轻松处理新集群的部署以及在更多市场和城市中启用服务。
“感谢 Istio,我们相信 Rappi 将能够部署更多服务和更多应用程序以满足不断增长的需求,”Arielli 说。