UrbanClap科技世界

在UrbanClap,我们致力于“ Basic”,“ Hustle”和“ Re-Imagine”三个主要核心价值 我们的技术基础设施也建立在这些核心价值之上。 在不到一年的时间内,UrbanClap基础设施已从2–3个节点增长到现在的60个节点,但要成为理想的技术创业公司还有很长的路要走。

像任何市场公司一样,UrbanClap基础设施都可以分为前端和后端。 对于我们的前端,我们有不同的移动应用程序可以满足客户和服务专业人员的需求。 这两组用户都可以在iOS或Android平台之间进行选择。 这意味着,我们总共有4个移动应用程序,它们需要彼此同步运行。 我们确实在所有这些应用程序中提供原生体验,例如iOS的Swift和Android的Java。 因此,代码可重用性一直是令人头疼的问题,我们计划在不久的将来解决这个问题。 尽管我们始终是应用程序的第一位,但不久之后,我们也开始大量关注Web用户群。 我们最近重新设计并启动了基于React的新网站,这使我们能够更好地进行代码模块化和性能控制。 对于我们的团队来说,这是一个很大的学习曲线,但我们坚信,从长远来看,这将为我们提供帮助。 Angular仍广泛用于我们的内部仪表板。

我们的主要服务后端是使用具有Redis缓存层的Node.js编写的,以提高性能。 NGINX用作我们的切入点,任何配备负载平衡器的流量都将流量分配到自动扩展的后端服务器。 我们的后端服务器在AWS上运行。 我们在我们的SEO页面和应用程序中将Redis用于API缓存,作业计划和列出专业人员。 后端主要用Node.js,Python,Java和Scala编写

聊天室

聊天是我们最重要的功能之一,它可以在一个平台上连接专业人士和客户,并在双方之间建立非常健康的沟通渠道。 我们一直在努力为最终用户提供无缝的体验。 首先,我们在Pubnub上建立了聊天功能, Pubnub是可以轻松与应用程序和Web集成的第三方聊天启用程序。 由于许多原因,Pubnub无法为我们解决问题:iOS双证书限制在聊天通知,缺乏聊天分析以及需要学习聊天算法的情况下不能很好地发挥作用。 因此,我们现在建立了内部聊天室。

我们已经在Ejabberd上建立了聊天 。 WhatsApp和之前的Facebook聊天(后来转移到MQTT )基于相同的技术构建,尽管它们已针对用例进行了大量修改。 我们也朝着同一个方向努力,为最终用户提供出色的体验。 我们使用Play Framework在Java的Ejabberd之上构建了一层,以增强我们的聊天分析,并提供Ejabberd的XMPP协议无法提供的其他功能。

对接会

对接算法是UrbanClap的核心,它可以将特定的服务请求匹配到合适的专业人员。 该算法的目标是自学习,高效且随时间推移具有容错能力。 算法的编写方式使得它可以根据专业人员对各种服务请求的过往行为以及他们以最高准确度进行转换的可能性,预测合适的专业人员来处理所提出的请求。

我们使用Django框架(作为单独的服务)运行,在Python上编写了配对算法。

数据

在使用大量第三方工具进行数据和同类群组分析后,我们现在正在迁移到内部解决方案。 目前,在App或Web上进行的每个事件都通过我们内部的数据平台传递,该平台将其存储在HDFS中。 实时数据传播是通过Flume完成的,作业是用Scala编写的 我们使用Redshift在非规范化表上运行复杂的作业,并使用Tableau进行数据可见性。 服务器数据记录建立在ELK堆栈( Elasticsearch,Logstash和Kibana)上 ,该堆栈随后用于分析和调试目的。

为了提高客户体验和运营效率,我们构建了内部仪表板,以便可以更快地解决问题。 前端在Angular.js上进行 ,后端在Node.js上进行

对于客户获取,我们建立了内部推荐引擎,从而提高了保留率和用户参与度。 就像大多数后端一样,它是基于Node.js构建的。

我们正在使用Airflow,这是一个Airbnb开源程序,用于运行cron基础设施,而Redis用于事件驱动的工作。 为了提高效率,性能和易于开发,所有的cron均使用Python编写。

这几乎总结了我们的技术基础知识,敬请关注我们的下一个博客,其中将详细探讨每个组件。

干杯,

莫希特·阿格劳瓦尔(Mohit Agrawal)