编者:本文作者为LeanCloud 前端资深工程师王潇。

shutterstock_113544646

这是一个脑洞大开的年代,产生越来越多的认知盈余。思想的碰撞产生出种种奇思妙想,许多人想通过互联网,通过技术来改变生活。所以,我们看到越来越多有价值的新产品出现。无论是在纯软件类移动互联网产品领域、硬件类实体产品还是在新兴的服务行业。你也许也会有同样的想法:有个创意,想开发一个 App 来解决某个问题,想做一款好玩的游戏 App,或者是通过移动 App 来优化您的传统商业模式和体验。那么如今怎样来开发一个 App,可以即高效又最节省开发成本呢?技术团队如何组建,还需要后端工程师么?

关于开发方式,前两年最火爆的词语莫过于云计算。科技的迭代速度是指数级不断增长的,云计算正是这种指数级迭代的引爆点之一。软件开发的方向一定是会变得越来越简单,成本也会不断降低。

云服务 1.0

如果你做一个 App,请至少选择一款好用的云服务,尤其对于初创公司来说。这样的例子最有名就是 Instagram,在 2012 年 4 月 Instagram 被 Facebook 10 亿美金收购时,用户规模接近 5000 万,然而整个团队仅 13 人,而且其中的 5 名技术人员中,仅有两个半后端工程师。另外的半个偶尔要负责前端的部分开发工作,Instagram 的所有服务就是部署在 AWS 上面。Instagram 联合创始人 Mike Krieger 在「如何成为十亿美金公司」的演讲中,将使用 Amazon 的云服务归结为用户规模暴涨,但工程团队并未出现明显增长的重要原因。类似的公司还有 Dropbox。

在云服务 1.0 这个时期,开发虽然没有比之前变得简单容易太多,但是如果你想让别人使用你的服务,只需部署程序到对应的云主机或者 App Engine 上,节省大量运维成本。类似 AWS(亚马逊的云服务)、SAE(新浪的云服务)、微软 Azure 和阿里云,让本来需要花很多钱购买的服务器和运维成本都不再需要,取而代之的是选择一个好的云服务商。你的服务器端程序可以完全部署在云服务器上,使用初期由于访问量较小,用户不需要支付费用。按需付费,当使用量真正达到了收费额度,云服务商才会收一部分钱。当然,如果能够达到这个付费标准,理论上这个项目已经运转的不错了。

云服务 2.0

如今越来越多的 BaaS (Backend as a Service 后端即服务)已在硅谷兴起,被称为云服务 2.0 版本。不知道大家是否记得,过年期间有个应用特别火爆,App Store 的下载排行榜一直位居榜首,这个应用叫做「逗拍」,来看下逗拍的发展速度。逗拍 2014 年 12 月 22 日正式上线,上线仅 10 天,用户突破 10 万;上线 42 天,进入 App Store 总排行榜第一;上线 52 天 ,突破 1000 万用户;上线不到三个月,目前已经突破 1600 万下载。(数据来源于逗拍在拉勾网发布的招聘信息:http://www.lagou.com/gongsi/24510.html。)

目前国内也已经有很多使用 BaaS 服务成功的案例,许多科技公司都会遇到用户快速增长,这种情况下如果自建服务的技术成本是多大呢?打个比方,假如你打算做一款抢红包应用,或者你的电商网站举办双十一秒杀活动,技术团队自己维护就需要相当大的资源投入。但是现在很多科技团队可以在不投入一个后端工程师的情况下,使用 BaaS 服务轻松搞定这些。支付的成本远远低于自建团队的资源投入,而更关键的是,他们节省了太多时间成本,也是机会成本,将更多的时间花在产品和运营上。

目前越来越多的科技类创业公司都希望能够保持着小而美,都希望技术团队可以保持着精英化。为了让工程团队最大化的发挥作用,在 BaaS 服务帮助下甚至可以不安排工程师来负责的后端研发,服务器端业务也完全依靠 BaaS 服务来支撑。云服务 1.0 解决了绝大部分服务器运维问题,而 BaaS 则是要解决后端研发的成本问题。

无后端开发

我们设想一下,每次想要做一款 App 时,总是会有很多重复的模块要开发。比如数据存储、文件存储、账号体系、短信验证、统计需求和实时通信等模块,这些模块工程师们也力求做到通用,为了以后开发的时候更加容易复用。这些模块为什么一定要反反复复的写,不可以做成一个通用的服务么?用户想使用哪个模块就用哪个模块,不需要服务器运维,也不用再重复开发,只需要按需付费,这就是 BaaS 要实现的目标。

使用 BaaS 的服务之后,最有趣的一点就是不再需要专业的后端工程师。现在如果你要开发一个产品,一般情况下需要三个角色。一个产品设计师负责产品的需求、界面和交互设计,一个前端(包括 Web、iOS 和 Android)工程师来实现设计,一个后端工程师来搭建后端服务写出后端逻辑部署在云服务上。而使用 BaaS 的服务之后,只需要两个角色,设计师和前端工程师。

举个例子,比如你要是想实现一个游戏 App,你可能需要的服务端需求就是存储、用户账户体系和统计。BaaS 的服务提供商的网站中,会提供应用控制台。你可以直接点几下鼠标配置相关的存储表,服务端就自动生成 RESTful API,前端工程师直接请求就可以了。类似用户账户体系、统计功能等众多模块都是类似的思路。

这只是 BaaS 强大功能的一小部分,通过这一系列功能的使用,你会发现大大节省开发 App 的开发时间,并且显著提高开发效率,当然也省掉后期的运维成本。同样的只需按需付费,选择一家服务稳定价格合理的 BaaS 服务,还可以省掉一大笔研发资金。国外类似的服务很多,比如 2013 年 4 月 Facebook 刚刚收购的 Parse、2014年10月份 Google 收购的 Firebase 等。而

国内类似的服务也在遍地开花,比如专注文件存储的七牛和专注解决移动开发服务的 LeanCloud 等。开发者只需将全部精力全部集中到如何做出精美的产品上,不用再操心后端究竟做了些什么。

人类科技的发展就是通过一个一个的创新,硅谷之所以走在创新的前列,一部分原因就是他们不断降低创新的成本,同时使团队变得更加高效。曾经一个互联网产品的问世可能需要很多成本,人力成本、推广成本、研发成本,当然还有大量的时间成本。但是现在因为 BaaS 等服务的出现,至少研发成本在不断降低,使创新的成本也不断降低,使更多的资源用在更重要的事情上。当然 BaaS 也不会是终点,越来越多的服务创新也会不断进行下去。