手把手完成商业级社交App开发 进阶Android高级工程师教程
手把手完成商业级社交App开发 进阶Android高级工程师
资源获取链接:点击获取完整教程
最近两周在忙于开发一个社交App,因为之前做过一点儿社交方面的东西,就被拉去做API后端了,一个人头一次完整的去搭这么一套东西,上面也没有PM和各种催促,过程还是很轻松愉快充满乐趣的,现在后端已经基本完成,下周会进入联调测试的阶段,有些东西想写一写记录一下,先从技术选型开始。
基本产品形态
产品的基础功能无非是所有社交App都具备的那些东西,新鲜事、好友关系(同微博一样,单向follow)、地理位置(当前的位置、你附近的人)更多小的细节和功能点现在还不便于透露 :)
其实社交这种产品给我的感觉一直是挺怪的,相对于技术和那些抠交互的产品分析来说,这东西更让人着迷的是一种心理魔术,比如上面说道约炮App,你可能会想到陌陌,但是陌陌的产品层面上跟众多社交App是一样的,也是feed、follow和地理位置,而我们正常的社交,正常的朋友圈子用的最多的是微信而不是陌陌,但当夜深人静你想打发掉寂寞的时候,可能就会去用陌陌了,虽然功能和技术相似,但是一些产品细节对用户的暗示却造成了全然不同的结果,就跟QQ、MSN、Gtalk之间的感觉类似,虽然它们的主要功能都是聊天,但是各自的用户群和使用氛围完全不同。结合自身的需求,去体验目标用户的心理,想办法满足自己和用户的心理诉求,这也是做社交类型产品最大的乐趣吧。
技术选型
最开始的技术选型秉着简单清晰、尽快实现想法,减少复杂的引入,但是要尽量为以后的扩展做好准备这么一种想法。很多互联网创业心灵鸡汤比如《黑客与画家》、《Rework》也都大概是这么提倡的,先把东西迅速做出来,然后根据用户的回馈发现问题快速迭代。下面介绍一下我选用的技术栈:
1. 语言:
人生苦短,我用Python
2. 存储和数据访问工具:
这年代存储面临的选择的确很多,但我还是选择自己最为熟悉的MySQL,原因不必多说。根据之前的经验,像是用户表这种会保持不动,但是有些表,比如feed index我在一开始就做了sharding的处理(关于feed的实现和存储结构我在后面会进行介绍)。另外很重要的东西就是数据访问层的实现了,虽然有些东西,比如读写分离的支持,现在不会用到,但是我觉着要支持,最起码要考虑这种情况将来会发生,到时候不至于太苦逼的到处重写代码,另外对于sharding,要做到跟访问通常的表类似的轻松,最后要带点儿ORM功能。
做的第一件事情就是写这个数据访问工具,业务就是增删改查么,没有这家伙还怎么活!?用python两三百行代码对web.py的数据访问模块做下包装就搞出这么一个东西来,https://github.com/chihongze/shard.py 最终可实现读写分离和对sharding的支持。当然在用的过程中发现问题不少,有些查询不能很好的满足需求啊等等,完善中。
资源获取链接:点击获取完整教程