如何用腾讯云快速开发一个陌生人社交app

B18是一个面向中学生的陌生人社交应用。简单来说,它是一个只允许中学生注册的“陌陌”。

它是一个初创的社交应用,前期以快速的功能迭代开发为主,尽可能的降低开发成本、时间成本,验证市场。要达到这个目的,我们团队尽可能的使用现成的第三方服务,挤压时间来对开发核心功能。

云计算高速发展的这几年,IaaS、SaaS雨后春笋般涌现,为应用开发团队提供了各种各样的云服务。怎么从众多的云服务商中选出最适合的一个?

我们选用腾讯云,来作为我们后端服务的根基:

一是腾讯产品的浓厚社交基因,跟我们陌生人社交的产品基因吻合的,众多腾讯自己的社交产品都使用腾讯云;二是腾讯云提供了众多社交产品所需要的功能解决方案,如云通信、短视频、直播等;三是根据团队研发人员过往的云产品使用经验,腾讯云在IO性能、稳定性方面有更为卓越的表现。

我们的后台服务开发过程中,除了核心功能逻辑是由自己开发团队实现外,数据库、数据分析、域名、监控、聊天、社区等等环节,我们都利用了腾讯云云服务来加速我们的产品部署。

整体技术架构

我们的服务器逻辑,使用PHP语言,因为其具有轻量、开发快、易部署运维的特点。它的单进程单线程编程模型大大降低了软件开发的复杂度,对于初创团队而言,还能用相对低廉的价格招聘到适合的工程师。

其中数据存储的环节上,MySQL、Redis、Memcached、对象储存,我们全部都利用了腾讯云的相关数据服务产品。因为根据我们的经验,数据管理,是产品运维中一个比较折腾的点,要做好数据管理相关的性能、监控、备份、回档、扩容、分布式等等环节,是相当不容易的一件事。所以我们使用了腾讯云提供的数据服务,降低“趟坑”的可能性。

选购云主机很容易陷入一个误区,就是一开始就选用一台性能牛逼的云主机,每个月在云主机上就投入了不少金钱。相对于其它主流语言如C、Java,虽然PHP的执行性能并不好,但是它简单轻量,非常适合进行Web开发,部署非常简单。考虑到以后假如遇到并发问题了,利用负载均衡,我们只需简单的增加一台逻辑服务器即可。由于数据服务是剥离的,云主机本身仅仅是进行PHP语言的执行工作,一开始我们可以选购一台低价的云主机即可。

核心功能模块

地理位置定位

作为一款陌生人社交应用,其最核心的功能非“附近的人”莫属了。技术上怎么高效的实现附近的人?比如说怎么快速的找出附近的人? 难道使用SQL数据库筛选出所有用户,并分别获取它们的经纬度进行距离计算?

我们的地理位置定位,使用了geohash算法:用字符串来表示经纬度两个坐标。geohash表示的并不是一个点,而是一个矩形区域。

比如某个经纬度,转化成的字符串是wx4g0ec19,我们要找到这个经纬度附近的人,使用SQL语句 'LIKE wx4g0ec%'来高效的进行附近的人筛选。

图像服务

社交应用,有大量的用户上传照片。在云服务广泛应用之前,开发人员自建文件服务,还得自己购买硬盘,不但价格高昂,还有各种各样的运维问题需要解决,比如,机械硬盘到达生命周期结束怎么办?备份的工作怎么进行?

使用云存储,就有很多好处,价格低、易扩容、稳定安全,还可以轻松跟CDN(内容分发网络)配合,提升用户客户端下载图片的速度,优化用户体验。

数据服务

前面总体架构提及过,我们的数据服务,均使用云服务,而不是自己搭建。那么,我们分别用这些数据服务,做一些什么事情?

关系数据库 MySQL

MySQL数据库是整体社交app的数据重心,重要、基础的数据都储存在里面,比如用户信息、用户地理位置。

云存储 Redis

Redis云存储,保存一些次要、周边的功能系统,比如说用户之间的拜访记录、点赞记录等。要注意的是,很多时候Redis与MySQL配合,是作为缓存的角色出现的,而我们这里Redis是作为数据库。

弹性缓存 Memcached

Memcached主要是作为缓存服务,做性能优化。比方说,“获取附近的人列表”,是一个很消耗数据库性能的计算,因此每一次计算,我们会把附近的人列表,保存成一段时间的缓存,来防止用户不停的刷新附近的人列表来大量消耗服务器性能。

短信验证码

现在一款手机应用,通过手机号码验证码验证进行注册的方式几乎成为了标配。因此我们使用腾讯云的短信服务,来实现验证码功能,每条短信几分钱。

云通信

既然是社交应用,聊天功能怎么能少?自研一个聊天系统,可谓一个浩瀚的工程。能不能直接使用像QQ、微信一样的聊天系统来为我服务? 腾讯云的云通信,就是这样的一套强大的SDK。

经验分享

前面的这些技术架构选型,离不开一个“”字。 不光技术上如此,我们的产品和团队管理同样也基于“快”的原则做过一些尝试。

产品设计原型

我们使用Axure RP进行App的原型设计。 好的原型设计,能让美术和客户端更快的完成他们的工作,比满口的空话、满屏的文字来得实在得多。

团队管理软件

目前我们的团队成员,有异地办公。 怎么确保工程进度完成,团队协作工具必不可少,总不能老是把各种文档通过QQ传来传去吧?

我们探索过teambition, quip等协作工具,考虑到小团队的敏捷性,最终我们还是选用最简单的方法,就是直接用上了OneNote云共享笔记。

Docker开发环境应用

在以往,开发、运维环境不一致,是一个开发人员、运维人员很头疼的问题。Docker的出现解决了这个问题,我们开发人员,使用Docker来搭建整个逻辑服务器的开发环境,诸如PHP、Nginx等软件的版本,是跟生产环境完全一致的,来避免踩坑。

未来

现阶段我们的产品还属于初期,快速的功能开发、扩充业务为主要目的。我们广泛应用的腾讯云云服务,为我们减少了大量的金钱、时间成本。

随着业务发展,我们计划未来会更多的利用腾讯云其它云服务,比如机器学习、消息队列、直播方案、短视频方案等。这些都是我们未来产品发展所需要利用的功能。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

kelly的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙回顾|后台测试案例分享

后台测试案例分享 活动时间:2017年9月28日 qq视频分享 活动介绍:TMQ在线沙龙第三十一期分享 本次分享的主题是:后台测试案例分享 共有66位测试小伙伴...

2046
来自专栏FreeBuf

KasperskyOS安全操作系统终于发布了,一点儿Linux血统都没有

2月20日,如我们先前的预告,KasperskyOS终于发布了。卡巴斯基实验室宣称这是一款基于微内核构架、专为安全设计的操作系统。KasperskyOS在其设计...

18810
来自专栏云计算D1net

还在当冤大头?揭秘云计算部署的隐性成本

企业在部署云计算平台的时候往往考虑最多的就是成本控制问题,的确,对于云计算服务供应商来说,能够玩儿得起“云”的企业都不会太缺钱,但是熟悉云计算的朋友们可能都知道...

2668
来自专栏黑白安全

我的渗透测试之道

我做渗透测试也有一段时间了,服务了很多企事业单位,由于我所在的单位性质的关系,也接触到了很多其他公司接触不到的项目,从中也积累了很多的经验。

612
来自专栏CSDN技术头条

云计算的乐高玩具,Docker从根本上改变应用程序开发

【编者按】Docker改变了应用程序开发领域的很多事情,已经成为时下最流行的开源项目之一,而且也从根本上改变了人们构建应用程序思维方式。Docker正在改变云的...

1859
来自专栏鹅厂网事

软硬件分离趋势及开放网络发展

1. 前言 一直以来,网络设备给人的感觉就一个或大或小的铁盒子,其貌不扬,让人猜不透里面到底是啥。而这种情况将有所改观,在OCP等开放组织、众多芯片商、ODM商...

2207
来自专栏DevOps时代的专栏

一篇文章搞清楚 CI, CD AND CD

CI, CD AND CD 当我们在谈论现代的软件编译和发布流程的时候,经常会听到CI 和CD这样的缩写短语。CI很容易理解,就是持续集成。但是CD既可以指代码...

2178
来自专栏企鹅号快讯

2017企业安全技术热词有哪些?

元旦将至,2017年企业在构建安全体系时主要考虑哪些问题呢?FreeBuf 带你回顾企业安全应对指南中所调查的 2017 企业年度安全关键词! 在进行问卷调查之...

18510
来自专栏腾讯移动品质中心TMQ的专栏

远程移动测试平台对比分析

随着移动设备和系统的碎片化程度越来越高以及复杂的移动网络情况, 兼容性测试以及远程真机测试的重要性越来越突出。

1498
来自专栏安智客

8张图带你玩耍Mbed OS!

对于MbedOS的认知一直停留文档上,安智客上周末闲逛淘宝手贱买了一个支持MbedOS的开发板,到货了忍不住玩一玩,也就是helloworld!各位见笑了!整理...

862

扫码关注云+社区