Welcome

首页 / 软件开发 / 数据结构与算法 / 基于AWS的自动化部署实践

基于AWS的自动化部署实践2014-03-29 infoq 徐桂林1. 背景

在过去几年里,社交、移动和云计算深刻改变了整个互联网的格局。作为设计软件领域的全球领导厂 商,Autodesk也与2009年正式开始从传统桌面设计软件提供商向在线服务、协作和移动端设计转型。在 这次转型中,公司充分利用现代云计算的巨大优势给客户带来了大大超过传统桌面软件的处理能力、用 户体验和性价比。其中AWS是目前公司服务的主要运行平台,每年在此投入千万美金级别。

1.1. 传统软件交付的挑战

在过去的30多年里,Autodesk拥有了非常多的桌面设计软件(如AutoCAD,Maya,3dsMax等)。由于 设计软件经常需要处理超大的数据集合(如整个上海中心的设计模型)和极其复杂的运算逻辑(如阿凡 达电影画面的绘制),其软件尺寸一般都比较大(GB级别)。以前,客户基本都是通过互联网下载、快 递或者分销商获得软件安装包,整个过程比较耗时。另外,软件的升级、安装和维护也是一个非常大的 工作量(一些大的设计公司要购买上千份软件拷贝)。尽管公司软件已经支持基于应用程序虚拟化的集 中管理模式,但它还是有如前期基础设施建设成本大,服务能力缺乏弹性,仍需要专职运维人员等明显 的缺点。所以,提升软件交付的用户体验成为我们必须要面对的一个问题。

如大多数人所猜测,SaaS成为我们的第一个尝试方向。在2006年,Autodesk实验室开始尝试以SaaS提 供设计软件服务的可能性,并且取得了不错的成绩。但是,目前SaaS应用仍然面临着浏览器能力限制、 大数据传输慢等诸多问题,无法给专业设计师提供传统桌面软件一样的体验和设计能力。

1.2. 云计算带来的新可能

随着云计算的兴起,以AWS为代表的基础设施云提供商让我们有可能以一种全新的方法去解决这个问 题。我们可以利用基础设施云的强大后台来帮助用户运行虚拟化的软件实例。用户无需下载、安装和维 护这些软件,只需要链接到互联网上就可以在线使用我们的软件。而且按需付费以降低使用成本。基于 此,Autodesk实验室在2009年开始这个尝试(注:该服务已经于2013年成为公司云平台产品的一部分) ,并选择了AWS做作为我们的后台云服务提供商。选择AWS有下面的几个原因:

需要基础设施云(IaaS)。现在的平台云(PaaS)大部分都是为Web服务准备的,并不适合我们运行 虚拟化实例的要求。

需要强大的弹性运算能力。Autodesk设计软件对于计算的需求都很大,而计算能力的成本不低。所以 ,弹性计算能力能让我们很好的控制成本。AWS EC2在这方面非常符合我们的需求。

需要丰富的服务。除了运算能力,我们还需要给用户提供海量设计数据的存储,快速的数据访问,安 全的访问控制等。AWS云服务在这方便服务非常完备,而且相互集成很容易。

需要稳定的服务。AWS EC2能够提供超过99.5%的弹性计算可用率,能为我们建立可靠服务提供坚实的 基础设施。

需要全球化部署。Autodesk是一个在全球提供软件、服务的公司,所以我们希望基础设施提供商也能 全球布局。而AWS已经在全球建立多个数据中心。

2. 自动化部署

在完成服务的基本实现并上线服务后,整个后台的维护和部署成本在不断加大。尤其考虑到我们需要 高频(每个月更新一次)、多地(多个AWS数据中心)部署服务并同时需要维持高的服务可用性,构建一 个自动化的部署系统成为必须要做的事情。

2.1. 设定目标

作为一个运行在AWS上的服务,我们在设计之初就开始思考AWS给自动化部署带来的新可能和挑战。在 我们看来,针对AWS上服务的自动化部署需要特别关注到下面的一些特点:

基础设施的服务化。在AWS中,你可以利用类似Cloud Formation服务在很短时间(几分钟)获取你所 要的所有基础设施(包括运算、存储、网络、IO等),而这些基础设施已经按照你的要求自动配置、连 接好。所以,我们可以让自动化部署把基础设施的管理也包括进来,而这在传统的数据中心模式下很难 实现。

支持弹性资源。因为需要支持弹性,整个服务要在运行时动态加入新的基础设施,如计算单元等。自 动化部署系统需要能让新加入的基础设施立马投入服务。

保护数据更为重要。在传统的数据中心,我们可以让部署完全在内部网络完成,在确认好所有的安全 配置后再上线。但是AWS是一个公有云服务,你的所有部署其实是在公有网络上完成的。所以,我们必须 在自动化部署中充分考虑到数据安全的问题。