Don’t Repeat Yourself: 这是软件开发的一个基础原则,即不要做重复性劳动。也是现在所说的“极客文化”的一种。代码重复、工作重复在软件开发中都是不合理的存在。利用各种手段消除这些重复是软件开发的一个核心工作准则。
Keep it simple stupid:即KISS原则。在做软件设计的工作中,很多时候都不要想得过于复杂,也不要过度设计和过早优化,用最简单且行之有效的方案也就避免了复杂方案带来的各种额外成本。既有利于后续的维护,也利于进一步的扩展。
You Ain’t Gonna Need It: 即YAGNI原则。只需要将应用程序必需的功能包含进来,而不要试图添加任何其他你认为可能需要的功能。因为在一个软件中,往往80%的请求都花费在20%的功能上。
Done is better than perfect: 在面对一个开发任务时,最佳的一个思路就是先把东西做出来,再去迭代优化。如果一开始就面面俱到,考虑到各种细节,那么很容易陷入牛角尖而延误项目进度。
Choose the most suitable things: 这是在做方案选择、技术选型时候的一个很重要的原则。在面对许多技术方案、开源实现的时候,务必做到的是不能盲目求新,要选择最合适的而非被吹得天花乱坠的。
IAAS:Infrastructure As A Service, 是云计算最开始的一种模式,现在基本上所有的云服务商都有IAAS的服务。其中,全球最强大的云服务提供商是亚马逊的AWS,国内的则当属阿里云。就目前来看,即使是强如AWS也会出现一些运维故障,因此国内的这些云计算提供商很多时候的服务健壮性、运维响应更是经常被人吐糟。就笔者自己的经历来看。2010年左右,盛大云的云服务其实做的还不错,但后来由于种种原因现在基本已经没啥份额了。国内除了阿里云,UCloud算是专注做云计算的一个比较靠谱的公司了。此外,还有一个青云,做的东西略显高大上,也是一个不错的选择。当然,现在这些云服务商早就不仅仅是IAAS了,也做了很多PAAS的服务。
PAAS:Platform As A Service,即只需要提交代码到指定的运行环境,其他的诸如代码打包、部署、IP绑定都由平台完成。除了可以使用Cloud Foundry构建自己的PAAS平台以外,现在最为流行的第三方PAAS服务有:新浪的SAE、百度的BAE以及Google的GAE。
域名:有个可以提供服务的应用后,那么域名也是一个必须的基础设施。一个好的域名不仅仅代表企业的形象,也能够更加方便用户的记忆与传播。目前购买域名可以通过国外的name.com、godaddy以及国内的万网等。有了域名之后下一步就得进行备案,域名提供商一般都提供了配套服务或者去找一些代理也可以办下来。此外,对于域名的解析,域名提供商一般会内置解析功能,也可以使用独立的dns服务,如dnspod。
CDN: 内容分发网络,即就近请求的一种技术实现。服务提供方将会被大量访问的内容在全国的多个结点都做缓存,这样当用户访问时就能够就近选择,从而减少网络传输延时,提高访问速度。国内目前七牛和又拍都提供了不错的cdn服务,当然像阿里云、UCloud这种综合云服务商也都有cdn服务。
邮件发送:这个主要需要依赖邮件服务器,然后通过SMTP协议就可以实现发送。可以选择自己搭建,也可以选择注入腾讯邮箱、网易邮箱等。
短信发送:使用短信发送验证码、营销短信是很常见的应用场景。由于短信是需要运营商支持的,所以这一块基本上都是需要依赖第三方代理的。市面上也有很多短信网关代理。
消息推送:在移动应用上,推送已经成为一个标配功能。目前个推应该是第三方推送服务中的佼佼者,而且由于其客户很多,在联盟唤醒上有很大的优势。
开放平台:通过开放平台,可以使用OAuth等协议获取用户在第三方平台上的信息实现第三方平台登录等。目前,微博、微信、QQ是最常见的第三方登录方式,基本上都是使用OAuth协议为第三方开发者提供服务的。
支付接口:支付接口是很多内置购买功能软件的必备组件。目前,接入最多的无非是支付宝和微信,都提供了开放平台供商家接入。当然,也有直接绑定银行卡支付的,此时需要走的就是银行或者银联的网关接口。