互联网团队如何用云服务快速建立网站
2019-02-26 来源:多智时代
首先先说一下作为创业团队的技术人员的成员和在大公司的技术人员的不同之处。
首先,大公司的开发人力资源充足,不管你是做架构的设计,还是底层开发人员,都不需要对所有的技术细节都有了解,而是精专在某个领域,越深入越好,通过团队的协作来解决单个人的能力短板,比如DBA可能对开发不是特别了解,后端开发无需了解前端的太多技术等等。 但是在初创团队,就需要相对全面的技能,比如我们之前在开发码云时,我一个人就需要同时写前端代码和后端代码,部署数据库,做界面的设计,写安卓和iOS 的客户端,以及桌面客户端,甚至还要帮我们拍摄的宣传视频做剪辑以及后期的音效工作。
然后,除了丰富的人力资源外,大公司内部一般也有很多成型的系统,比如在雅虎的时候,有yapache(web服务器), yinst(包管理),mdbm(kv数据库), shmproxy (网络通信中间件), yrepl(消息中间件)等,创业团队无法应用到这些系统,只能找开源的对应产品替代。
最后,大公司有很多成熟的服务资源,从硬件方面的服务器,CDN,带宽等,到软件服务方面如短信平台,邮件平台等,都可以直接使用,但是初创团队就要购买或者寻找一些对应的替代方案,目前这些很多是以云服务的形态出现的。基于这点,我有一个比较深刻的体会,这次回声在有一次推广的时候突然发现系统无法访问了,登录到服务器上也很慢,先后排查了web服务,数据库,邮件服务等都没有发现问题,最后发现原来是由于流量突然增大,我们购买的VPS的带宽用尽了,然后紧急的购买了新带宽才解决这问题,但是同样的问题在之前雅虎和淘宝工作的时候就根本没有遇到过。
如上面所述,开源软件和云服务的使用是初创团队不可或缺的元素,也同时可以大大的节约初创团队的时间成本。拿回声为例,我们大概只花了2个月的时间就完成了整个系统的搭建并上线,下面我就分几个方面分别介绍一下系统的搭建过程
整体架构
上图简单描绘了我们系统的架构和所使用的软件(括号内部)和服务(圆形标识)的情况,可以看到,网站的结构是非常简单的,我们将网站部署在2台 VPS云服务器上,一台提供web服务,另外一台所作为mysql slave供我们进行数据分析使用,注意由于我们目前流量还没有非常大,所以这台暂时还不提供对外的服务,只做数据分析用。目前两台VPS节点都使用的阿里云的服务,关于VPS的选择方面,其实国内的选择空间不是特别大,比较难找到Amazon EC2类似级别的服务,如果创业的目标用户是针对国外用户的话,还是推荐Amazon EC2或者Linode等比较有规模的服务商。
1 web服务 : web服务我们采用的是LNMP的架构,LNMP的好处是开发简单,快速,资料丰富,并且被验证足以支撑到一定规模的访问量(facebook, yahoo等),php的mvc我们采用了codeigniter作为基础框架,同样是因为简单,作为创业团队,尽量选择自己熟悉并且稳定的系统和架构构建你的网站,我不太建议刻意尝试太多新的东西,即使你的技术足以驾驭它,还是不可避免的踩很多坑,这会消耗创业者宝贵的时间和精力。
在web前端方面,我们采用了基于HTML5的响应式设计,这足以用单独的一篇文章来介绍,而我们在后面也会写一篇单独的文章来介绍这块。
2 缓存服务&键值存储:不管是之前还是现在,我们都有很多的场景会使用到基于key-value的存储还有缓存的服务,redis在性能和功能上有一个比较好的均衡,使用起来也不会太复杂,所以我们在系统里面大量的应用到redis, 如记录用户目前是否是第一次访问某个页面,记录用户是否升级到某个版本,以及首页的推荐文章的缓存,系统的部分配置信息等。
3 异步队列服务(或者消息服务):我们使用Gearman作为队列服务的支持,严格说来Gearman并不是一个标准的消息系统,但是Gearman简单高效的特点吸引了我们,并且它分布式架构足以支持更高级别的系统负载,并且他对php的支持很好,我们使用的是它的异步任务部分,关于Gearman如何作为队列服务支持邮件的发送,可以参考官方网站的use cases里面的介绍, 除了邮件服务之外,我们的手机通知的推送服务也是基于Gearman进行了队列化的。
4 邮件服务:对于网站来说,不管从邮件营销的角度,还是作为网站服务的基础部分,邮件都是很重要的一部分,这部分比较复杂,后面我们会单独用一个小节来介绍一下我们目前采用的邮件服务方案。
5 搜索服务:目前使用的是Coreseek,Coreseek 是一款中文全文检索/搜索软件, 是基于Sphinx结合中文分词系统进行开发,优点是和php,mysql结合较好,有中文的支持,当然基于xapian的xunsearch也是一个不错的替代方案。
6 推荐系统:回声网需要给用户推荐他可能喜欢的群组,以及潜在还需要根据群组推荐相关的群组,在推荐系统的选型上,我们选择了基于协同过滤的Mahout Taste CF来计算用户可能该兴趣的群组,然后使用Ruby语言基于Recommendify开发了基于item到item的推荐。我们会在每天晚上进行运算,把结果放在数据库中提供前端调用。
当然虽然基于协同过滤的推荐系统已经非常完善了,但是由于它是基于统计模型的,在初始用户的行为数据比较少的情况下,该模型相对难以解决新用户的推荐问题,比如我们会提供给新注册用户一些群组推荐,这里我们使用了一些基于用户特征的推荐,比如给群组打上标记,比如 “我想把学校炸啦” 这个群组我们会标记为优先推荐给90后的用户, “我是处男” 这样的群组我们只会推荐给年轻的男性用户。
7 数据分析方面: 首先GA是网站服务不可缺少的工具,唯一的缺点是GA后台的访问不太稳定,最好配合VPN进行访问,关于GA使用方面的介绍,我的合伙人everfly会有写一篇专门的文章介绍。另外,基于app方面,我们使用Flurry提供的服务进行数据分析。
除了第三方提供的数据分析服务之外,有一些比较细致的分析还需要基于网站的自有数据进行,因为刚好之前有一台闲置的VPS,所以目前就拿来作为我们的数据分析服务器了,和主数据库配置了Master-Slave结构,数据分析在Slave上及进行,不影响线上的业务。
8 域名服务:我们的域名是从godaddy上注册的(.fm的域名有点小贵),但是不建议使用godaddy的服务器作为nameserver, 因为偶尔会被墙,这里我们直接把nameserver迁到了dnspod上,还是非差稳定的。
9 CDN : 如果你的没有涉及到大量的图片或者声音数据,其实我觉得可以省掉购买CDN服务的步骤,不过我们的网站刚好会有一些群组封面图片和用户自己的封面图片的展示需求,并且在一次推广中触及到了VPS流量的上限,所以我们把图片访问部分迁移到的CDN服务上,这方面选择很多,我们使用了orca的服务,orca的服务有一个亮点是支持dropbox的同步,便于管理。当然orca毕竟上线的时间不长,如果需要更专业的云存储服务,推荐又拍云和七牛云存储。
由于篇幅有限,这里很多内容无法展开来详细的介绍,下面我针对一些我感觉到相对比较重要的两个部分:发布系统和邮件系统做一个具体的说明。
发布系统
由于网站的结构是基于lnmp的,所以我们主要的代码都是php代码,之前在大网站的时候,一般会有比较严格的流程和比较严格的打包发布机制,比如Yahoo的 yinst package, 但是对于初创团队来说有些重了,这里我们直接使用svn进行代码的管理和发布。
虽然系统环境不复杂,但是我们还是分为开发环境,测试环境(beta),和生产环境(线上),开发环境我们在自己的机器上搭建,我的是Ubuntu 的系统,everfly是MacOS的系统,测试环境在和svn服务同一台服务器上,我们使用svnseve的post-commit 功能实现了一旦我们提交了代码,服务器会自动将代码部署到beta环境的web服务器上, 在生产环境则是直接使用svn export进行部署,整个流程还是非常简单的。
注意,有的时候我们在生产环境和开发环境的时候需要执行不同的逻辑,比如针对html内部引用的javascript代码,为了节省流量(当然还有一个原因是代码写的太丑了,不想让大家看到笑话),在生产环境上,我们使用了jsmin进行压缩,但是在本机进行开发的时候,为了调试前端代码方便,不能对javascript代码进行压缩,所以我们通过设置环境变量,然后在代码中检测环境变量的方式解决了这个问题,由于环境变量是设置在web server或者php-fpm的配置中的,所以线上和开发环境可以保持同一份代码,在代码中判断当前的系统执行不同的逻辑即可。
邮件系统
作为一个社区网站,邮件系统是非常重要的部分,我们的邮件分为触发式(注册确认)邮件和群发邮件(每周故事摘要)两部分,
我认为邮件系统最主要的亮点是可配置性和队列化,由于我们网站的主要用户是QQ用户,所以QQ邮箱占我们用户的绝大部分的比例,所以我们把QQ邮
在不久的将来,云计算一定会彻底走入我们的生活,有兴趣入行未来前沿产业的朋友,可以收藏云计算,及时获取人工智能、大数据、云计算和物联网的前沿资讯和基础知识,让我们一起携手,引领人工智能的未来!
标签: dns Mysql vps web服务器 大数据 代码 服务器 服务商 互联网 数据分析 数据库 搜索 通信 推广 网络 域名 云服务 云服务器 云计算
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
上一篇:云计算应用灾备的优势分析