对于一个互联网创业公司来说,有以下这几个特点:
(1)什么都要求快,这个快也许并非来自用户,而来自于自己,比如恨不得开发一天就开发一个新功能;
(2)变化快,比如一个想法落实到开发,可能会有很多变化;
(3)资源稀缺性,资源就是时间、金钱和人力成本,对于创业公司来说,有效的花费资源本身就很重要,看看多少创业公司都是胡乱花钱而撑不下去的,而对应的技术上就是能省则省。
针对以三个主要特点,创业公司在技术使用的策略上有什么准则呢?
个人认为就是“简单化“,当然这个简单是建立在理性分析的基础上的。技术人员有个通病,认为技术实现越复杂,越膨大,越全面就越能体现技术水平,这是非常错误的一个观点,衡量技术水平的唯一标准其实就是“是否有效支撑业务发展”,要看结果论,比如说开发速度快,后期问题少,假如能做到这些,那么这个技术团队就是牛逼的。
而提倡简单化的理论,就会让你从另外个角度去审视技术本身,下面的一些技术使用建议也许看上去并不高大上,好像每个人都能明白,但假如能有效的实行,在创业初期能够解决大部分的技术问题。
使用云服务器
对于创业团队来说,并不知道未来用户有多少,需要使用多少服务器资源(Web服务器,DB服务器等等)不好衡量,而云服务器的可扩容性则能很好的满足这个需求,换句话说创业初期使用云服务器可以有效节省成本。
云服务器的特点还不至这么多,它代表了一种开发模式,即分层架构。比如云服务器的类型有很多(云服务器、云缓存服务器、云数据库服务器、云存储服务器),正因为有了这样的分层模式,让你有了更好的选择,假如自建服务器,很多技术团队可能会把Web服务器和DB服务器放一块,从而带来很多问题。
另外云服务器也有沙箱功能,在安全性上也有很好的保证。虽然可能很多人觉得现在云厂商做的不好或不安全,不过说句实话你自己搞可能更差。
当然使用云服务器也并不能说明一定就省钱,这取决于你是是否真正了解系统以及其背后需要的资源。
重视数据存储
先入为主,推荐MySQL来存储数据。
在设计上要尽量规范化,索引利用合理一点,因为数据有个特点,假如前期设计不好,后期想重新调整结构是非常痛苦的一件事情。
原来公司某个产品,最重要的博文数据库表(blog表)有个字段存储的是文章的具体内容(content字段),从而导致这个表非常庞大,查询性能和内容非常不好控制,就我了解到的情况是目前content字段还是没有从blog表中拆分,这不仅仅是技术的问题,对于一个在线的服务,数据量很大的服务,做表结构的调整是非常困难的,所以前期尽量设计好。
MySQL主要的作用还是存储,虽然可以通过SQL完成很多复杂的查询,但是建议尽量少使用,否则性能会急剧下降,我几年前了解到一个爆款的产品,用户量上来后,第一个压垮她的就是数据库,最大的原因就在于查询非常不合理,做了非常多的联合查询。
假如不合理使用MySQL,很多人会质疑性能不行,其实这都是错觉,我一直相信的一个原则就是,既然这么多人用,说明必然有他的优势,我们要做的就是学会使用而不是抱怨。
对于MySQL这样的数据库,很重要的观点就是备份和安全性,刚工作的时候领导说过这样一句话,“代码可以重构,但是数据不能丢,所以在写操作数据程序的时候一定要慎重”,而MySQL非常成熟,备份和安全性上有很多选择。
另外一个观点就是假如你并不知道数据量和访问量是多少,开始不要选择分库发表策略,也不要搞很多路由策略,尽量简单点。单表数据量在一百万级别,只要设计和使用上保持稳健性,性能不是问题。
MySQL的主辅同步本来是做备份用的,但是现在很多人多当分布式查询使用,也能分担很多查询压力。
现在很多NoSQL服务特别多,比如Redis,对于创业公司来说建议不要使用:
第一就是这些服务并不完全成熟,在使用上很需要有很多经验,尤其在备份和安全性上,在运维上并不简单,需要有极大的成本。
第二虽然它有很多有点是数据库比不了的,但是还是那句话,它能做的Mysql也能做,对于创业团队来说,上手简单和维护简单,成本是优先要考虑的。当然假如应用场景非常使用用Nosql这样的服务,还是要大胆的使用。