公司梨甲板 地点爱荷华州,爱荷华州 行业教育软件

挑战

这家成立3年的初创公司为教师提供了一个在教室里与学生互动的web应用程序。这款JavaScript应用建立在谷歌的web应用开发平台上Firebase., 使用Heroku.随着用户基础稳步增长,开发团队也是如此。“当我们开始拥有多种服务时,我们超越了Heroku,并且部署故事变得非常可怕。我们感到沮丧,我们无法迅速逐步逐步阶段版本,”CEO Riley eynon-lynch说。““追踪和监测基本上是不可能的。”最重要的是,许多Pear Deck的客户都在政府的防火墙后面,通过Firebase连接,而不是Pear Deck的服务器,这使得故障排除更加困难。

解决方案

2016年,该公司开始将他们的代码从Heroku转移到码头工人运行的集装箱谷歌Kubernetes引擎,由策划Kubernetes.并监控普罗米修斯

影响

新的云原生堆栈立即改进了开发工作流程,加快了部署速度。据Eynon-Lynch所称,Prometheus给了Pear Deck“很大的信心,因为他们知道人们仍然会登录并一直使用这款应用。”“最大的影响是能够在pull request中作为一个团队在git中的配置上工作,最大的信心来自于坚实的抽象,以及我们对Kubernetes的信任,使我们的yaml文件成为现实。”

随着速度快速的启动,梨甲板在合并的三个月内将其第一个原型提供给客户。

作为一名前高中数学老师,CEO Riley eynon-Lynch感到紧迫地为课程提供技术解决方案,其中教师在短时间内与每个学生互动的争吵。“梨甲板是一个应用程序,学生可以用来一次与老师互动,”他说。“当老师问一个问题时,而不是再次在房间前面的孩子再次回答,每个人都可以回答每个问题。这是对学生的消息传递中的巨大基础转变,了解我们有多关心它们以及多少他们是课堂的一部分。“

Eynon-Lynch和他的合作伙伴在Google的Web App开发平台上很快建立了一个JavaScript Web应用程序Firebase.并推出了最小可行产品(MVP)Heroku“因为它既快捷又简单,”他说。“我们尽可能地简化了一切。”

但它一经推出,用户群便开始以每月30%的速度稳步增长。Eynon-Lynch说道:“我们的Heroku法案变得非常疯狂。但更重要的是,随着公司雇佣了更多开发者,“我们超越了Heroku。我们想要拥有多种服务,但部署的故事变得相当可怕。我们很沮丧,因为我们不能让开发人员快速推出一个版本。追踪和监控变得基本不可能。”

最重要的是,许多Pear Deck的客户都在政府的防火墙后面,通过Firebase连接,而不是Pear Deck的服务器,这使得故障排除更加困难。

该团队开始浏览另一种解决方案,最后在2016年初决定从赫洛乌开始移动应用程序码头工人运行的集装箱谷歌Kubernetes引擎,由策划Kubernetes.并监控普罗米修斯

他们曾经考虑过谷歌的应用引擎等其他选项(他们已经使用了一个服务)和亚马逊弹性计算云(EC2),同时尝试运行一个不可能在Kubernetes中无法访问的小型服务。Eynon-Lynch说:“谷歌Kubernetes Engine将得到谷歌的大量支持,成为一个完全管理的Kubernetes平台,这对我们来说显然是正确的选择。”“我们真的没有考虑Terraform和其他竞争对手,因为Kubernetes提供的抽象刚刚跳下了我们的页面。”

他表示,一旦团队开始将Heroku应用移植到Kubernetes上(这非常简单),其影响就会立时显现。他说道:“在此之前,创造一个新版本的应用意味着去Heroku重新配置10个新服务,所以基本上没有人愿意这么做,我们也从未安排过任何内容。“现在,我们可以在30秒内将完全相同的配置部署到许多不同的集群中。我们有一个一直在运行的完整设置,然后我们的任何开发人员或设计人员都可以通过一个命令部署新版本,包括他们最近的更改。我们现在一直在筹划,每个人都不再谈论它有多酷,因为它变得无形,它有多伟大。”

与Kubernetes一起来了Prometheus。“直到很近,我们没有进入聚合服务器指标或性能的任何可视性,”伊荣森说。该团队试图使用Google Kubernetes Engine的堆栈监测,但在其工作中存在问题,并考虑New Relic.当他们在2016年秋天开始研究普罗米修斯的时候,“普罗米修斯的抽象概念和我们对我们的系统如何工作的思考方式之间的契合是如此的清晰和明显,”他说。

与Kubernetes的集成使设置容易。一旦Helm安装了Prometheus,“我们开始立即获得所有Kubernetes节点和豆荚的健康图。我认为我们非常迷上了这一点,”伊诺恩 - 林奇说。“那么我们在15分钟内完成了自己的自定义仪器,并积极更新了我们可以做的请求计数,并获得许多用户在给定点连接的感觉。然后,它前一小时我们在我们的松弛频道中自动出现警报。所有这一切都在一个下午。这是一个下午的喘气,基本上是令人愉悦的!“

通过梨甲板的特定挑战 - 通过Firebase以及政府防火墙 - Prometheus是一款游戏更换者。“我们甚至没有意识到我们对我们缺乏对应用程序发生的事情的洞察力,”伊斯诺克说。“之前,当客户报告该应用程序不起作用时,该团队必须在不知道客户是否受到影响的情况下手动调查问题,或者Firebase是否被拒绝,在哪里。

为了帮助解决这个问题,该团队写了一个脚本,从几个不同的地理位置引出Firebase,然后向直方图报告对Prometheus的响应。“普罗米修斯对我们的巨大影响只是一个令人惊叹的救济叹息,感觉就像我们知道发生了什么,”他说。“它花了45分钟来实现[Firebase警报],因为我们知道我们在Prometheus中获得了这个值得信赖的指标平台。我们不得不弄清楚,”我们在哪里发送这些指标?我们如何汇总指标?我们如何理解它们?'“

此外,Prometheus允许梨甲板为业务目标构建警报。一个测量成功的应用程序负载率,如果当天的负载低于前七天之前的负载少于90%。“我们在荒谬的防火墙后面运行了一个JavaScript应用程序,各种疯狂的浏览器扩展搞砸了它 - Chrome将推动一个打破我们正在使用的一些CSS的功能,”Eynon-Lynch说。“所以这给了我们很多信心,我们至少知道人们仍在登录应用程序并一直使用它。”

现在,当客户投诉,警报没有响起时,团队可以确信这不是一个普遍的问题。“为了确保安全,我们可以再检查一下图表,然后说,‘是的,目前有1万人连接到Firebase节点。这绝对是工作。让我们调查一下你的网络设置,客户,’”他说。“我们可以把这些反馈给我们的支持代表,而不是整个开发团队因为Firebase宕机而抓狂。”

梨甲板也回馈社区,建立和开放源码指标聚合器这使得能够在Prometheus中的最终用户监控。“我们可以测量例如在Web客户端上交互式的时间,”他说。“用户所有向我们的聚合器报告,然后将聚合器报告给prometheus。所以我们可以为某些客户端错误设置警报。”

大部分Pear Deck的服务现在已经转移到Kubernetes。团队所有的新代码都在Kubernetes上。Eynon-Lynch说:“Kubernetes允许我们对服务配置进行试验,并一次性将它们部署到一个登台集群上,测试不同的场景,并像一个开发团队看待代码那样讨论它们,而不仅仅是讨论我们作为人类最终将采取的步骤。”

展望未来,该团队正计划在Kubernetes上探索自动播放。随着世界各地的用户,但大多在美国,交通中有山峰和山谷。在App Engine上的一个服务可以在白天的一秒钟内得到多达10,000个请求,但晚上远远少。“我们在晚上支付同一个服务器,所以我理解有能力的自动播放,”他说。“实施这是一个很大的担心,将我们的kubernetes群集群集群体群体,也许弄乱了。但我们肯定是我们想要移动一切的意图,因为现在没有开发人员想再在该应用程序上工作,因为它是这样的部署痛苦。“

他们也渴望探索Kubernetes在有状态集方面所做的工作。“现在我们在Kubernetes上运行的所有服务都是无状态的,谷歌基本上为我们运行数据库并管理备份,”Eynon-Lynch说。“但我们有兴趣构建自己的网络接口解决方案,它不必是超级有状态的,但可能会有一个小时的状态。”

该项目还将涉及Prometheus,用于Web Socket连接的黑暗发布。“我们不知道所有这些可怕的防火墙背后的网络套接字连接将是多么可靠的。”他说。“我们不知道什么是Firebase已经做了什么,使它们更加可靠。所以我真的很期待尝试将与Web套接字的持久连接到我们的客户端,并有可选的工具来理解它是否正常工作。这是我们的下一个新的冒险,进入有状态服务器。“

至于Prometheus, Eynon-Lynch认为该公司才刚刚起步。他说:“我们还没有把所有重要的功能都实现,尤其是那些依赖第三方的功能。”“我们必须等那些第三方告诉我们他们已经倒下了,有时他们不会等很长时间。所以我真的很兴奋,并对我们的实际用户的应用程序的实际状态越来越有信心,而不仅仅是CPU图表所表示的,因为Prometheus和Kubernetes。”

对于一个快速发展的SPRY启动 - 是的,他们是招聘-Pear Deck非常满意其基础设施在云本地生态系统中的发展方式。“通常我有一些诱人的事情,我想进入新的,更好的技术,”伊诺恩 - 林奇说,“但在云的方面,Kubernetes和Prometheus有这么多。”