写在前面

之前在新达达财务账户系统演变一文里跟大家分享了新达达的财务账户系统的前世今生以及不断往前演变的几个阶段,那段时光很值得留念,现在时间又过去了四个月,这次跟大家分享的是新达达财务账户系统是如何从繁杂的业务中抽离出来,不断内聚,最终向平台化发展。

什么是平台化?

平台化是我们的目标,那什么是平台化?
举个跟我们很近的例子,在达达公司还未成立之前,外卖商户如果中午需要配送,只能自己招几个配送员,需要计算自己配送员的工资,怕他们偷懒,要管理他们的绩效……,结果达达公司出现了,现在的商户只需要付运费,而配送员的管理全部交由达达公司,达达公司提供配送服务本质上就是将运力供给这件事情平台化,这个平台只要商户在app上下单,就可以得到优质的服务 。
总结下来,平台化本质上是将零散的需求抽象化成一个提供标准输入(eg. 下单),得到标准输出(eg. 配送服务)的聚合服务。

阅读全文 »

CMS即为内容管理系统,管理京东到家APP和H5的页面的各个资源位(图片),点击图片后的跳转页面的展示。

本文主要从技术角度来介绍系统的演变。

背景

传统CMS系统配置即所见,后台配置了资源,前端就一定展示,用户在任何地方看到的都一样。

京东到家CMS最大的特色是跟地理位置有关系,简单说就是:用户在不同地点看到的只是最近相关的资源。京东到家是以门店为维度来控制资源的展示与否:一个资源A关联多个门店,每个门店有一定的覆盖范围(可以是圆形也可以是多边形覆盖),用户所在的位置有被资源A关联的门店覆盖到,那么资源A被用户看见。如下:用户被2个门店覆盖,如果资源A有关联这两个门店的任何一个,那么用户将看到资源A。

image

阅读全文 »

最近在TesterHome上看到有人关于测试如何保证项目发布质量的提问,同时新达达北京研发团队最近也有一些关于后端代码上线后质量不可控的小烦恼,于是将我加入达达后对上线流程的优化做了以下总结,供大家参考。

上线流程演进

第一阶段 - 上线流程从无到有

作为达达研发团队的首位测试工程师,在我加入之前研发团队规模比较小(大概4个后端工程师和2个Android工程师)。当时后端代码上线的流程比较简单,从开发工程师Coding到代码最终上线一共会经过3个环境:

  1. 工程师本地开发环境
  2. DEV测试环境
  3. 生产环境

开发工程师完成代码开发,在DEV测试环境自测后会把代码Push到对应仓库的Master分支上,等晚上9点上线。

阅读全文 »

近几年O2O很火,凡是做O2O的,几乎都要面临要不要给账号绑定账户?支持哪些形式的支付?如何去结算?如何让用户提现等问题。今天跟大家聊聊新达达两年多财务账户系统的演变。

黑铁时代 - 时间的成本是最大的成本

大部分公司,在创业初期都会面临着人手不够充裕的境地,但市场的机会稍纵即逝,这就要求团队能够尽快的实现功能,不断试错。

达达第一个版本是几个小伙伴在汉庭酒店花费7天的时间做出来的,当然,达达的账户的“黑铁时代”也非常的简单。跟业务系统完全耦合,内嵌在对应的商户和配送员的账号数据表里。

Alt text

阅读全文 »

背景

2014年6月,达达配送上线,并迅速成长为国内最大的众包配送服务平台,为数十万商家提供低成本、高效率的配送服务。

2015年7月,为了更好地连接消费者和商家,达达推出了自己的外卖信息服务平台-派乐趣,实现了上游信息服务和下游配送服务的完整闭环。消费者可以通过派乐趣平台获取点餐、支付、配送、评价等一系列服务。成立以后,派乐趣经历了高速的增长,并在2015年底突破了一百万的日单量。

随着派乐趣入驻商家的快速增长,如何对附近的候选商户进行有效排序,帮助用户快速找到最适合自己的餐厅,成为派乐趣面临的一个核心问题。

商户排序问题

所有的信息平台在信息的展现过程中都会碰到排序问题。如何通过排序将更高质量的信息展现给用户,提供更好的用户体验,是信息平台必须解决的一个问题。

和传统的搜索排序和电商排序相比,外卖平台的商户排序有着特殊的需求,需要考虑的因素包括:

  • 距离因素:外卖服务和电商、搜索等线上服务的一个主要区别是受地理因素的限制和影响。比如,商家有一定的配送范围,而用户也会倾向于选择附近的商家,以获得更快的配送体验。因此,对商户的检索、筛选和排序都需要考虑距离因素。
  • 时段和品类:不同时间段用户对外卖的需求是不同的。比如中午12点和晚上6点左右用户对于正餐的需求量是最高的,而在下午3点钟左右用户对饮料、甜品类的需求可能更大一些,这就要求排序算法考虑时间和品类等相关因素。
  • 质量和评价:线下服务的一个特殊之处在于服务的很大一部分是不可见的,例如餐品的口味、送达速度、服务态度等, 在排序的时候需要将这些不可见因素量化,并体现在排序中。
阅读全文 »

背景

随着达达业务的扩大,越来越多的人开始使用达达客户端,参加到众包物流的行业中。达达客户端分为iOS平台和安卓平台。

APP开发也从快速迭代的粗旷性开发转向高可复用,提升用户提现的精细化方向发展。iOS动画交互良好,使用广泛,良好的用户体验离不开流畅的界面变换。为此,达达iOS团队对动画实现以及背后原理做了学习探索。

目的

  • 了解Core Animation 基本框架
  • 理解图层的定义
  • 解析动画的流程
  • 掌握3D动画的原理
  • 实现3D动画的代码实现
阅读全文 »

背景

大多数系统在刚启动时因为初期业务功能单一并为了尽快上线的目的,在系统的设计和技术选型上鲜有考虑,特别是前端方向(基本是 jQuery + Bootstrap )。当然,达达有很多项目也是这么过来的。随着公司业务的快速发展,以下几个问题越来越严重:

  1. 维护困难:JavaScript 的语法比较松散,这也导致全栈工程师在开发时往往以实现业务功能为第一要点,公用模块没抽离,编写方式不统一,遇到 Bug 基本都需要重新去梳理代码。
  2. 网页变慢:随着业务功能的丰富,菜单也会越来越多,在没有使用局部刷新技术的情况下,每打开一个页面都要去重新请求菜单列表,这部分的耗时居然可以达到 2-3 秒钟。
  3. 技术/样式杂乱:既然每个参与项目的同学都以实现业务功能优先,谁都不想去看别人的代码,也不想自己负责的模块上线之后影响到别的模块,最后采取的方式基本都是你用你的资源,我用我的资源。

因此,我们需要有一种前端技术选型可以尽量地来规避这些问题,编写出约束力比较强的代码,在可复用、分治上带来帮助。

阅读全文 »

背景

随着达达业务的快速发展,产品上经常需要对APP的逻辑进行更精准快速的变更,最初通过发布新版本的方式来调整逻辑,由于APP版本更新覆盖需要一定的周期,这样做的效果不是很理想。后面我们采用了友盟在线参数来对一些参数进行动态配置,但友盟的在线参数只是一个简单的key-value配置,无法为配置的key附带更多的业务逻辑(比如限定城市和用户),并且配置变更以后也无法立即通知APP,因此我们设计了达达APP配置系统。

阅读全文 »

背景

随着达达业务迅猛发展,访问量的节节攀升,每天产生大量的日志,单日日志量从原来的约20G/天涨到超过500G/天,我们面临着新的架构设计挑战。

在提出解决方案之前,我们先来了解一下达达当前的日志现状:

阅读全文 »

发展迅速背后的逻辑

短短一年多的时间,达达已经完成了从0到1的跨越,目前平台注册配送人员超过100万,业务覆盖40多个城市,服务超过30多万商家,日订单量超过150万单,已然成为国内最大的众包物流平台。那么,达达发展如此迅速,其背后的逻辑是什么?

在过去的两年内,O2O行业经历了迅速发展阶段。耳熟能详的饿了么、美团外卖、百度外卖、口碑等等,都经历了订单量的突飞猛进,还有很多细分垂直领域的,比如回家吃饭、一米鲜等O2O平台迅速发展壮大。O2O行业,最大的痛点和困难在物流,也就是最后三公里配送。如果平台自己去建设配送团队,那么很难想象各公司会有如此快的发展速度,原因如下:

阅读全文 »