
微服务可以将敏捷型软件开发工具生成的杂乱数据,转变为可操作的信息,从而帮助开发团队更高效地工作。这样可以提高生产效率,改善开发体验。Hakkiri是一家初创公司,他们的Continuous Clarity 平台做的就是这样的事。
我们与Hakkiri联合创始人Robert Orefice和James Smith进行了一次深入的对话,了解到MongoDB助力Hakkiri平台建设的详细情况与经验总结。
MongoDB如何为Continuous Clarity平台提供助力?
Hakkiri的平台能够帮助敏捷型软件团队在运行时具有更深入的洞察力和更好的透明度。我们可以将其比作敏捷型团队的“健身追踪器”。把它安装到你的工具上,输入你的交付成果计划,剩下的事就不用操心了。我们已经考虑好需要测量哪些数据、如何测量和组织这些数据以实现可视化,并添加自动反馈信息,从而帮助你对目标进行跟踪。
以下是Hakkiri应用MongoDB的经验总结:

MongoDB通过以下几种途径帮助我们解决了技术难题:
我们需要具备设计和实施可扩展模式的能力,而且,随着时间推移,这种模式也易于改进。我们的产品路线图包括:在交付工具链(例如:创建、测试及部署)中纳入更多数据实体,MongoDB 强大的文档数据模型使我们有信心进行有效迭代。
我们的平台将所有数据拉入一套仪表盘中,使团队比以往更方便地跟踪他们的工作情况(例如,跨越不同团队查看累积的数据流)。我们还做了大量商业智能和分析工作,通过聚合管道,MongoDB使这些工作变得非常轻松且易于扩展。
MongoDB Atlas,作为一种可完全托管的数据库服务,它为我们提供了一个用于存储数据的安全、可信且加密的数据库环境。我们无需再投入力量对数据库进行管理。
最后,我们需要一个可有效管理时序数据的数据库。我们的应用过程事件流来自于一些交付工具,如Jira。
再重申一次,一种可随着时间推移而进化的可扩展模式是非常宝贵的。
我们的数据需要在多个层级上聚合。MongoDB 支持在多个层级上进行灵活、快速的计算汇总,当最低层级发生改变时,需要对上游链条重新计算,该功能提供了这方面的便利。
对于我们跟踪和分析的所有实体,MongoDB还提供了充足的时序数据存储空间。

在过去的大部分时间里,我们使用微软的SQL Server,也用过一阵PostgreSQL。成立Hakkiri之后,一切重新开始。我们需要一种既可支持云托管又能支持本地部署的数据库技术。我们评估了亚马逊DynamoDB和MongoDB。在对这两个产品做了几次试验后,我们选择了MongoDB(至今也没有后悔),原因就在于以下几点:
1. 它支持本地部署,这正是我们所希望和需要的。
2. 我们发现,它具有最丰富的线上资源,这对我们的学习曲线很有帮助。
3. 聚合管道功能强大而灵活,可以执行丰富而高效的运算。
4. MongoDB Atlas是一个很有吸引力的产品。它能与我们的AWS ECS环境无缝协作,但又完全独立;由于具备易用的备份和迁移功能,它的安全性也能得到了保证。这正是我们所喜欢的。目前,我们使用的是Terraform管理应用架构;有了Atlas,可以很容易地将数据库环境的生命周期与微服务架构的其他部分隔开。
我们正在使用Atlas,最近,我们利用它的迁移功能,从MongoDB 3.4无缝迁移到MongoDB 4.0。在MongoDB上部,我们利用了MERN堆栈的剩余空间。目前,我们有一套无状态的RESTFul微服务,它们被写入NodeJS 平台,该平台运行在AWS ECS环境中。随着客户数量的增加,我们计划使用Atlas中的分片功能和只读节点。

选择Atlas之后,我们对此就有了一个非常简单的解决方案。Atlas负责管理所有底层数据库的基础设施,我们只需要考虑的事情就是设置集群的大小。另外,Atlas的自动扩展功能即将发布,到那时我们根本不用担心没有足够的预分配资源。
我们使用Atlas作为生产环境,在本地运行MongoDB完成系统开发。目前,我们没有将生产负载部署在本地的MongoDB上,但我们保留了这一选项,这也是我们选择MongoDB的部分原因。为了监控,我们使用了Atlas的控制台和告警功能。当出现超出性能阈值的情况时,我们将系统设置为通过电子邮件和Slack通道发出告警信息。这项内嵌的性能顾问(Performance Advisor)功能在识别问题和提供修复建议时尤为有用。
在手工进行数据交互时,我们还使用了MongoDB Compass以及Atlas数据浏览器(Data Explorer),这些工具大多被用于数据检验和数据分类。在MongoDB 2019全球用户大会之后,我们开始重点利用这些工具构建聚合管道。大会向我们清晰展示了一项出色的功能,而我们以前从未使用过。“聚合管道构建器(aggregation pipeline builder)”能够展示管道中的数据流情况,这种构建管道的方式既实用又高效。
对我们来说,MongoDB Atlas发挥的作用之大令人难以置信。作为一家初创公司,我们需要按照事情的优先级分配好时间。拥有一个强大而安全的数据库系统对于我们在商业上取得成功非常关键。Atlas将约5%的工作重担从我们的肩上卸下来,同时让我们相信自己拥有强大的基础设施和良好的安全态势。
Atlas自身的安全特性也是这种数据库吸引我们的一部分原因。这些安全特性包括:对传输过程中的数据进行加密以及对静态数据进行内置加密。我们还通过对MongoDB管理控制台进行多因素认证保障账户的安全。最后,我们使用VPC Peering,将Atlas集群连接到我们在AWS上托管的应用基础设施的其余部分。
我们的应用在每个层级上都会展示出数据的聚合视图。在几个维度上,不同层级之间可能存在差异(标识符、组标识符和/或时间段)。灵活而强大的查询语法使我们可以在NodeJS平台上以JavaScript对象的方式,迅速构建查询语句,并保持代码的紧凑性,同时避免出现重复代码。这使我们可以为机构提供更深层的透明性,而这是他们无法从现有工具中获得的。
虽然尚未实施,我们还是期望利用MongoDB 4.2提供的物化视图使这一过程变得更为高效。
是的,在扩充功能路线图时,对于所有向客户推出的产品,我们都将继续使用Atlas作为底层支撑。我们也开始在内部的分析和报告流程中使用诸如Charts这样的工具。最近,我们开始评估是否可以将Stitch用于某些特定过程或批处理过程。能有如此方便、有效的工具轻而易举满足我们的需要,真是太棒了。
我们对MongoDB 在MongoDB 2019全球用户大会上宣布的几项功能都非常感兴趣。最让我们高兴的是它的全文检索功能,并且,MongoDB Atlas自身就包含了Lucene 全文检索引擎。这将帮我们节省大量的时间,并为客户提供更多的价值。其次,新的聚合管道功能也非常令人兴奋,特别是能将管道传递给更新操作,这将帮助我们更快地运算,同时也更易于维护。
我们计划对MongoDB Charts 做进一步的了解。我们使用Charts的测试版查找数据,用于内部管理,并计划将其用在一些应用场合。
最后,我想说,我们对MongoDB宣布推出的Atlas自动扩展功能充满了期待。集群大小是我们真正要关注的唯一事情,因此,自动扩展功能承担的事情就交给MongoDB去做。
如果你来自于关系数据库领域,你应该制作一个入门教程,内容是如何将关系的概念映射成文档/对象的概念。你应该建立一个学习曲线,训练自己以面向对象而不是表格的方式进行思考。这样做了之后,你会对生产率的快速提升感到惊喜。
更多学习资源,请访问MongoDB官方网站www.mongodb.com/zh。
MongoDB数据库
MongoDB官方微信公众号
扫描关注,获取更多精彩内容
长按二维码关注我们

