公司 Nav 位置 盐湖城,犹他州,和圣马特奥,加州 行业 企业金融服务

挑战

成立于 2012 年,Nav 为小型企业主提供从三大主要商业征信机构(Equifax、Experian 和 Dun & Bradstreet)获取其商业信用评分的机会,并提供最适合其需求的融资选择。五年后,这家初创公司发展迅速,“我们的云环境变得非常庞大,而我们对这些环境的使用率却极低,不到 1%,”工程总监 Travis Jeppson 说。“我们希望更紧密地将云环境的使用与实际需求联系起来,因此我们开始关注容器化和编排,以帮助我们能够运行彼此独立但可以共享类似资源池的工作负载。”

解决方案

在评估了一系列编排解决方案后,Nav 团队决定采用在 AWS 上运行的 Kubernetes。Kubernetes 周围社区的强大力量是一个很大的吸引力,以及它来自 Google 的背景。此外,“其他解决方案往往过于强势、非常复杂、规模庞大,而且刚开始就很难管理,”Jeppson 说。“Kubernetes 为我们提供了一种非常简单的方法,能够进入适合我们当时需求的编排解决方案,但它的可扩展性也让我们能够随着它的发展而成长,并能够在以后添加更多功能。”

影响

这个四人的团队在六个月内成功运行了 Kubernetes,并在另外六个月内完成了 Nav 的 25 个微服务的全部迁移。结果令人印象深刻:资源利用率(最初是该公司走上这条道路的原因)从 1% 提高到 40%。推出一个新服务曾经需要两名开发人员两周时间;现在只需要一名开发人员不到 10 分钟就能完成。部署次数增加了 5 倍。而且该公司在基础设施成本上节省了 50%。

成立于 2012 年,Nav 为小型企业主提供从三大主要商业征信机构(Equifax、Experian 和 Dun & Bradstreet)获取其商业信用评分的机会,以及有关其企业财务健康状况和最适合其需求的融资选择的详细信息。工程总监 Travis Jeppson 说,他们的使命可以概括为:“提高小型企业的成功率”。

几年前,Nav 意识到自己成功道路上的一个障碍。该业务发展迅速,“我们的云环境变得非常庞大,而我们对这些环境的使用率却极低,不到 1%,”Jeppson 说。“问题主要在于扩展能力。我们只是在不断地投入资金。‘让我们启动更多服务器。让我们做更多的事情来处理不断增加的负载。’由于我们是一家初创公司,这可能会导致我们的灭亡。我们没有足够的资金来浪费在这种事情上。”

此外,每个新服务都需要经过 10 个人,耗时不可接受的两周才能推出。“所有的补丁管理和服务器管理都是手动完成的,所以我们都必须密切关注并妥善维护它,”Jeppson 补充道。“这是一个非常麻烦的系统。”

Jeppson 在之前的公司使用过容器,他向 Nav 的管理层推介了这项技术,将其作为解决这些问题的方案。他于 2017 年初获得了批准。“我们希望更紧密地将云环境的使用与实际需求联系起来,因此我们开始关注容器化和编排,以帮助我们能够运行彼此独立但可以共享类似资源池的工作负载,”他说。

在评估了一系列编排解决方案后,该公司决定采用在 AWS 上运行的 Kubernetes。Kubernetes 周围社区的强大力量是一个很大的吸引力,以及它来自 Google 的背景。此外,“其他解决方案往往过于强势、非常复杂、规模庞大,而且刚开始就很难管理,”Jeppson 说。“Kubernetes 为我们提供了一种非常简单的方法,能够进入适合我们当时需求的编排解决方案,但它的可扩展性也让我们能够随着它的发展而成长,并能够在以后添加更多功能。”

Jeppson 的四人的工程服务团队在六个月内成功运行了 Kubernetes(他们决定使用 Kubespray 启动集群),并在另外六个月内完成了 Nav 的 25 个微服务和一个主要整体应用程序的全部迁移。“我们无法重写所有内容;我们无法停止,”他说。“我们必须保持运行,必须保持可用,并且必须将停机时间降至最低。因此,我们对构建管道、指标和日志记录以及 Kubernetes 本身(如何启动、升级和维护)非常熟悉。我们一点一点地进行迁移。”

该过程的一个关键部分是培训 Nav 的 50 名工程师,并让他们了解新的工作流程以及迁移路线图。Jeppson 一直在进行定期演示,并为全体工程师提供了一周的每天四小时的实验室培训。然后,他在 GitLab 中创建了一个存储库来存放所有信息。“我们向所有前端和后端开发人员展示了如何使用 kubectl 自己创建自己的命名空间,”他说。“现在,很多时候,他们只是来找我们,说‘我已经准备好了’。我们在 GitLab 中点击一个小按钮,允许它发布到生产环境,然后他们就可以开始工作了。”

自 2018 年初完成迁移以来,结果令人印象深刻:资源利用率(最初是该公司走上这条道路的原因)从 1% 提高到 40%。推出一个新服务曾经需要两名开发人员两周时间;现在只需要一名开发人员不到 10 分钟就能完成。部署次数增加了 5 倍,从每天 10 次增加到每天 50 次。而且该公司在基础设施成本上节省了 50%,主要体现在计算方面。“接下来,我们希望解决数据库方面的问题,一旦完成,我们将继续大幅降低成本,”Jeppson 说。

Kubernetes 还帮助 Nav 满足其合规性需求。以前,“我们必须将一个应用程序映射到一台服务器,主要是因为围绕数据的不同合规性规定,”Jeppson 说。“使用 Kubernetes API,我们可以添加网络策略,隔离数据,并在需要时限制数据。”该公司将集群隔离到一个不受限制的区域和一个受限制的区域,该区域有自己的节点,用于执行数据保护。该公司还使用 Twistlock 工具来确保安全性,“这让我们晚上睡得更安稳,”他补充道。

在 Kubernetes 就位后,Nav 团队还开始通过采用 Prometheus 来改进系统的指标和日志记录。“Prometheus 为指标创建了一个标准,开发人员非常容易采用,”Jeppson 说。“他们可以自由地显示他们想要的内容,做他们需要做的事情,并保持代码库整洁,对我们来说,这是绝对必要的。”

Nav 今年的下一步计划是关注跟踪、存储和服务网格。他们在 KubeCon 上与其他公司进行了大量讨论后,目前正在评估 EnvoyOpenTracingJaeger。“社区绝对至关重要:能够传递想法,讨论我们都面临的许多类似挑战,并获得帮助。我喜欢我们能够出于不同的原因解决相同的问题,但能够互相帮助。”Jeppson 说。“在可扩展性方面还有很多事情要做,以及如何真正完全采用云原生解决方案。”

当然,这一切都始于 Kubernetes。借助这项技术,Jeppson 的团队构建了一个平台,使 Nav 能够扩展,并且“为 Nav 带来了巨大的价值,因为它让我们拥有了之前从未有过的自由,”他说。

关于新产品的讨论曾经会陷入困境,因为他们必须等待六个月才能设置一个隔离的环境,然后才能弄清楚如何处理流量峰值。“但现在对我们来说根本不是问题,”Jeppson 说。“我们现在处理的流量是以前流量的四到十倍,结果就像,‘哦,好的,我们没问题。Kubernetes 为我们处理了。’"