转自:http://www.cnblogs.com/printhelloworld/p/6169271.html
我公司曾经拓展过一项外包业务,帮助硅谷没有技术能力的创业团队,在1个月内以3万美元不到的价格快速打造Web、移动Web、App以及对应的Web管理平台,使得他们能够从较为困难的天使融资阶段快速的进入PreA运维并进一步拿到A轮融资,这项业务的背后其实是小型创业团队在创业初期面临的一个重要问题:如何选择合适的技术来优化、助推创业过程。
那么今天我想和大家聊一聊这个话题:当小团队或者个人进行创业的时候,到底应该进行怎样的技术选择呢?
首选我有一个观点,创业成功有了融资以后,引入更为高级的技术专家,可能会对技术架构进行通盘重构,所以创业初期与后期的技术架构会大相径庭,事实上大部分成功的创业项目都会经历重大重构,因此,在创业初期选择技术架构的时候,更多要考虑的事情是简单便捷、快速开发,而不需要过多的考虑技术长久和技术扩展。
目前国内的互联网创业,以Web为主,完整的技术产出可能包括 App、微信公众号、支付宝服务窗、微博应用、移动Web(兼容移动浏览器、微信浏览器、支付宝浏览器、微博浏览器)、官网Web、管理Web,在这样的产品产出要求,我认为如下的架构比较合适
这个架构有以下几个特点:
1、所有用户端,包括网关服务都以JSON数据格通过HTTP方式和业务处理服务进行交互,这样的好处是简化和统一业务逻辑处理流程和数据交互方式。
2、独立出网关服务与微信服务器等开放平台进行交互,以应对在创业项目中越来越重要的与各开放平台的交互场景。
3、加入数据库ORM层,加快数据库开发速度,使得后端的代码更加业务驱动。
4、使用Hybrid App方式,降低App开发、部署、发布的成本。
那么在技术选择的实操过程中,也有一些具体的方向性建议
一、合适而敏捷的技术框架的选择
什么技术语言、什么数据库、什么开发框架、什么操作系统?这些选择,即使在非技术驱动的创业项目里,也会对创业结果产生重大影响,我建议选择的技术遵循如下:
1、选择一个或多个自己熟悉的技术语言和开发框架。
2、选择的技术要有足够的成熟案例和社区支持,这样在遇到问题的时候可以快速的得到帮助和解决。
3、支持快速搭建RESTful的HTTP 服务。
4、有对应的ORM框架支持数据库快速开发
5、具备稳定而高效的集成开发环境
6、尽量少使用响应式技术,移动Web和桌面Web选择不同的前端框架,达到更好的用户体验
二、充分合理的使用云服务
现在的云服务已经非常成熟稳定,种类也越来越多,能够解决问题的宽度和深度都在增长,因此,使用全云架构来进行创业初期的技术承载,是值得也很有必要的,其中包括:
1、将服务器和数据库都搬到云端,使用弹性增长的云基础服务。
2、熟练使用云服务的控制面板来进行日常运维。
3、使用邮件推送、短信推送云服务来为客户提供消息订阅和通知推送服务
4、使用图片、视频处理云服务进行多媒体资源的处理,例如图片缩略图,视频压缩等。
5、使用CDN服务来提升用户访问体验,提高单Web节点承载能力。
6、使用NoSQL服务解决部分业务数据增长后的瓶颈场景。
7、多钻研创业项目所在领域在云服务商处是否已经有成熟的解决方案,例如文件下载、视频直播、数据存储、大数据比对等等,挖掘好云服务的价值,省下的就是大把的时间和大把的金钱(这也是2015-2017年的互联网红利,甚至有创业团队专门等云服务商研发好领域解决方案后就快速跟进,低成本推出产品,快速获得融资)。
三、除此以外,我还想纠正一个现象
很多团队在会选择以一些开源的论坛社区、内容管理项目为基础,进行二次开发和修改,事实上,这样的做法既不讨巧,也会有副作用。
1、开源项目的业务逻辑和功能结构已经成型,更加注重通用性,而创业都是个性化的业务,强行用现有的通用逻辑和流程去套用的个性化的业务,反而适得其反,不能很好的表达业务。一旦业务加速扩张,开源系统无法及时扩展的缺点就会显露无疑。
2、虽说在创业初期不需要过多的考虑稳定和长久,但无法完整的了解开源项目的所有代码依然是一个巨大的风险点,甚至会导致严重的安全问题。
3、即使在创业后期会经历重大的技术重构,但投资人和投资机构依然会在初期进行技术能力的评估,在互联网领域利用信息不对称的红利已经消失,拿别人做好的系统去二次开发,和自己开发一个独立的系统,在直观上给人的印象还是不太一样的。
最后再补充两句
1、虽然PHP是最好的语言(宇宙第一),但是如果创业,在技术选择上,特别是后端业务逻辑的处理部分,请慎用PHP,语言特性决定其无一成功案例!
2、创业是目标驱动,是艰苦奋斗,不是装逼,有的人有好的IDE不用而去Linux下面捣鼓各种命令,有的人看到React、AngularJS、Ionic这些新东西特别好用就恨不得立马创业,然后觉得自己很有范,其实这些都不是特立独行,而是无知加无能,事实上相当多成功的创业项目也就是老老实实的搞好J2EE,甚至还有从ASP.NET Webform起步的项目也搞的挺稳,永远记住,技术选择是为了达到良好的创业结果,而不是进行创业的原因。
亲爱的朋友,你如果也在创业,能分享一下是如何进行技术选择的吗?