在公司发展的初期SmugMug和传统的公司一样建立自己的数据中心并通过不断添置新的IT设备以适应业务量的增长,但是很快就发现业务量的增长速度大大超过设备添置速度。作为一家未完全盈利的新兴公司,SmugMug显然难以长期承受巨额的基础设施开销。最后公司选择使用Amazon的S3服务器托管服务。结合公司的实际情况,SmugMug将网站上最热门的部分照片仍旧存储在公司自己的服务器中,剩下的绝大部分照片则转移到S3服务器中,由Amazon来提供照片的安全存储。这样既能保证基础设施不会成为公司发展的瓶颈,又能节省大量成本。照片转移的过程仅仅花费一周的时间。
完成数据迁移后,由不需再考虑基础设施问题,SmugMug将公司的主要精力集中在提高服务质量上。目前SnmgMug向用户提供了以下三种照片访问方式。
(1)SmugMug以代理的身份处理用户访问请求。
(2)SmugMug对用户访问请求进行重定向。
(3)利用有关API直接对存储在S3中的数据进问。
在这三种访问方式中,以第一种方式访问的用户超过99%。也就是说几乎所有的用户都选择这种访问方式,这也正是SmugMug所期待的结果因为它希望S3对于普通用户来说是透明的。SmugMug公司还引入了EC2服务,使客户可以利用EC2来完成图片的在线编辑和处理。
将基础设施部分外包给Amazon后,SmugMug基本架构如图3-39所示。几乎所有的用户都是采用直接访问SmugMug的方式处理照片,实际的照片处理过程对于用户是透明的。SmugMug的系统后台则如虚线框所示。主要包括三个部分:队列服务、Amazon AWS和控制器,目前使用的AWS包括EC2和S3,而队列服务和控制器则由SmugMug提供。SmugMug并没有采用SQS,而是建立了自己的队列服务,控制器每隔固定的时间就会自动决定增加还是减少EC2实例。整个SmugMug的系统具有高度的智能型,绝大部分操作都会自动完成,这也是为什么SnmgMug仅用几十人就可以完成如此巨大的原因。
总而言之,Amazon通过提供云计算服务实现了冗余基础设备的高利用率,SmugMug以合理的投入解决了公司急速发展和基础设施之间的矛盾,双方达到了一个双赢的局面。