SteppeChange通过使用MongoDB,从其应用程序的开发进度中节省下大约六个月的时间。
SteppeChange是一家大型数据分析技术公司,负责设计和实施客户定制,快速上市的数据科学和技术解决方案。 他们与世界各地的客户合作,为挑战性问题找到创新的解决方案,并分配分析工作,创造最大的价值。
SteppeChange首席技术官兼首席数据架构师Gregory Rayzman分享了为什么公司依靠MongoDB进行各种解决方案,其中包括为2.2亿全球用户提供的可扩展的移动客户参与平台。
复杂的任务
全球科技公司聘请SteppeChange建立一个移动客户互动平台,供全球移动运营商使用。 SteppeChange被第二个分配了这个项目,SteppeChange知道他们将要面对挑战,因为不同的国家有非常不同的数据管理法律。 虽然一个国家可能要求所有数据在休息时加密,但另一个国家可能要求所有数据都存储在其国家边境内。
SteppeChange的目标是建立一个具有单一代码库的平台,同时平衡多个数据管理要求,满足全球2.2亿用户的预期需求。
设计选项
在评估数据库选项时,寻找满足多个国家管理的不同数据管理需求的系统是至关重要的。在调查了诸如MySQL和PostgreSQL等关系型数据库以及Cassandra和Couchbase等NoSQL数据库后,SteppeChange很快就意识到MongoDB Enterprise Advanced提供了SteppeChange所需要的灵活性、可扩展性和敏捷性。
MongoDB Zones 功能对SteppeChange的应用程序至关重要。使用它,SteppeChange可以将MongoDB集合中的数据分解成多个分片,并将每个分片分配给特定地理位置相关联的区域。区域是同一集群的一部分,可以在全球查询,但数据位于当地是受到法律允许的。 MongoDB区域分片的延迟不仅减少,而且SteppeChange还可以独立于其他区域扩展以及扩展每个区域。
MongoDB Cloud Manager也是建立和监控MongoDB部署的主要资产。它允许SteppeChange可视化所有系统的持续状态和状态,排除问题,并轻松执行时间点恢复。
解决方案
使用MongoDB Zones,SteppeChange将用户数据以监管为目的进行分割,并将其保留在当地管辖范围内。更具体地说,用户数据在物理上位于适当国家的数据中心,使得应用程序对用户数据的访问符合本地法规边界。
SteppeChange设计并建立了一个由三个区组成的多分片MongoDB集群。每个Shard都有三个副本集,除了用于报告隐藏的无投票权节点之外,还允许系统基于节点功能来达到负载均衡。SteppeChange将特定管辖区有关的数据部署在相应管辖范围内的数据中心,而不受相同法规限制的数据部署在AWS上。
对于部署在AWS上的MongoDB区域分片,SteppeChange在多个AWS可用区域(AZ)上分发复制集节点,以提高应用程序可用性并防止AWS中断。此外,SteppeChange还针对配置服务器使用类似的设计 - 它们也驻留在多个AZ中。
为了保证遵守安全和隐私标准,SteppeChange还利用MongoDB的本机加密。为了满足关于数据访问的规定,SteppeChange使用审计框架来记录对数据库执行的所有管理和非管理操作。
SteppeChange的部署拓扑图
MongoDB加速交付
通过MongoDB,SteppeChange可以通过从开发时间表中节省下大约六个月时间来快速将SteppeChange的应用推向市场。 SteppeChange的团队已经能够利用基于MongoDB BSON的文档存储,二进制Serializable JSON对象。 这是SteppeChange应用程序中使用的基于JSON的底层数据结构的完美原生匹配,它提供了一种快速添加新功能的敏捷方法。 SteppeChange还能够简化数据管理,消除数据迁移的复杂性,提高开发人员的工作效率,并让SteppeChange的工程团队专注于手头的任务。
在SteppeChange向前迈进的今天,正在寻求扩大MongoDB中其他功能的使用,例如地理空间功能,例如地理围栏和基于地理位置的报价管理,并将其添加到SteppeChange的移动客户参与平台。
我是上海小胖[MiracleYoung],专注MongoDB、MySQL、Redis等开源数据库的 DevOps,拥抱开源,接受收费。
上海小胖[MiracleYoung] 原创地址: https://segmentfault.com/u/shanghaixiaopang/articles
欢迎各位大神前来评论。
每周五,敬请期待,上海小胖[MiracleYoung] 独更。
如果夏雨荷还在大明湖畔等着我的话,我就不更了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。