如何善用云端服务加速我们的网站开发(2)
Heroku
这是我们放置网页应用程序的空间,这是一个号称云端的网页空间,我曾经写过几篇文章介绍 Heroku。
简单来说,Heroku 提供了简单的资源动态调配的选项,你可以视网站流量、负载随时调整投入的资源(与资金),几乎可以不必修改你的程式。像是东森新闻在总统大选时也是运用了类似的平台来应付超过 2,400 万个网页读取。除了 Heroku 之外,现在有非常多类似的平台,像是 Google App Engine, Gondor, no.de, nodecloud, nodester, , Microsoft Azure。
AWS RDS
AWS 是由全球最大网络书店 Amazon 提供的云端服务,RDS 简单来说就是他们提供的一个云端资料库,说穿了就是一个不用自己架设的 MySQL。RDS 算起来其实非常昂贵,但是初期我们为了直接跟 Heroku 搭配,就毫不犹豫的选购了。RDS 的好处是它的效能很好(相对于我们自己的小机器)、稳定度超高、有定时的备份机制。
Airbrake
这是我们的应用程式例外处理服务,每当应用程式出错时,应用程式会主动将错误发生时的所有资讯发送到 Airbrake,网站营运的相关人员也会在第一时间收到错误发生的讯息。借此,我们可以掌握每天发生的错误,并且尽早处理。我个人认为,网站发生错误经常是不可避免的,但应该透过各种方式在第一时间掌握并且迅速回应。
Redis
Redis 不是第三方服务,而是一个 NoSQL 资料库。我们利用 Redis 来存放几种资料:所有的统计数据(例如每小时、每天的流量)、与搜索相关的数据,以及某些特别的应用。选用 Redis 的理由也很简单,有些事情不太适合用关联式资料库处理,Redis 刚好满适合的,包括统计或是索引方面的功能。
Redis To Go
这是一个 Redis 云端服务,方便归方便,但是当你的应用程式吞吐量较大的时候,经常会出现错误讯息。此外,他们没办法提供用户自订维修的时间,因此如果你的网站时区与他们不一样,那很可能会导致你在某些奇怪的时段无法正常使用。
Websolr
Solr 是一个 Apache 基金会底下的开放源代码的搜索引擎专案,我们利用 Solr 作为我们的搜索引擎。Websolr 则是一个云端 Solr 服务。Websolr 也是满不给力的,无法正确回应的频率颇高,不过我们现在搜索量也还不大,所以之前都还得过且过。(不得不说,Websolr 效能算是挺好的)
Resque
讲 Resque 其实是太偏了,比较好的说法是我们有使用 Message Queue 在处理我们某些需要进行排程的工作。我遇过很多网站经营团队,在网站营运时是完全不用 message queue 的,使用 message queue 的理由很简单,某些工作如果会吃到比较多的资源,或是没有急迫性,或是例行性的工作,应该排进 Message queue,除了可以确保这些工作的完成度之外,也可以在流量突然变大时将工作分散到不同的机器上处理。
New relic
New relic 是一个应用程式的监控服务,简单来说它可以让你清楚的看到目前应用程式运行的效率、资料库的吞吐量之类的,比较好的是它可以提供精确的报表,让你掌握究竟是哪一段程式执行时间特别久,让你可以更有效率的进行改善。New Relic 会在应用程式负载过高时主动通知,这一点也是非常实用的。
AWS S3
我们利用 AWS S3 来存放所有的照片,使用 S3 的好处是我们不需要自己处理储存空间与备份的问题,也不需要负担图片的流量。
AWS Cloudfront
Cloudfront 是 AWS 提供的 CDN 服务,简单来说,CDN 是分散于全球各地的内容发布网络,假设你有一个台湾网站,有一个人从美国上了你的网站,若你有使用 CDN,这位访客有很大的机会可以就近在美国的服务器下载你网站的内容,如此浏览你网站的速度与体验就会大幅的提升。我们网站目前有超过 10% 的海外用户,我们几乎可以确保这些海外用户跟台湾用户可以拥有差不多的浏览速度。
Sendgrid
Sendgrid 是一个专门用来发信的服务,Sendgrid 的好处是提供了一些统计数据,让你了解每日的发信量、开信量、信件点击率。目前我们的发信量还小,倘若以后再大一点,或许我们会自建发信服务。
结语
你可以看到,我们运用了大量的第三方服务,有些是与网页技术比较有关的,有些则是非技术人员就可以迅速套用并且上手的网路服务。
说穿了,除了我们真的没有多余的人力投入在这方面的建置之外,我们也满懒的。此外,现阶段比较现实的是,我们必须专注在网站的核心价值上,宝贵的人力、宝贵的时间都是成本,应当投入在最重要的地方,至于其他次要的事情,我们先花钱外包。
而且,就我个人而言,我更有兴趣的是让产品可以稳定的营运与成长,因此我们目前利用了成本比较低的方式来建置资讯技术上的基础架构,有些服务我们在不久的将来会开始投入资源开始建置自己的版本,有些服务则会转移到别的厂商,这部份的经验与决策的塬因,就留待下一篇文章分享了。
目前说起来,我们终究还是个小网站,等过阵子我们流量大一点了,我会再进一步分享许多营运上、费用与成本相关数据,希望可以藉此与读者们多多交流。
作者:Lawrence Lin