成长型电商架构启示:世界排名153的etsy十年走过的弯路(2)
2012 年之后架构又发生了什么?他们还在创新吗?工程决策是如何决定的,而这又以怎样的方式影响了工程师文化?这一节我们要来问一问 Jon Cowie,他是 Etsy 的高级运维工程师,还是《定制 Chef》( Customizing Chef )一书的作者. 从 2012 年的升级之后就没有发生太大的改变.有些人可能会觉得无聊,但是这种情况却勾勒出了一个重要的概念,并且让我们获得了一些关于 Etsy 工程师文化的深入观察.我们在整篇文章中都会重新提到这种文化,但是接下来我们先说说他们的总体架构. Etsy 的生产环境是采用物理机,但是开发时,他们采用虚拟化环境.这种方式让所有开发者拥有一台包含整个栈的微缩版本的虚拟机.真实的栈看起来仍然是这样:
他们有几个用于完成不同任务的不同高速缓存层.他们为了高速缓 存数据库对象,使用 memcached 的场景很多. Etsy 有提供给第三方开发者的面向公众的 API,但是他们也有内部 API.他们有为这些 API 准备的缓存层,因为有些数据如果持续几个小时或几天都被人访问,就需要缓存.当然,缓存的图片和静态资产也很多. 这里的挑战在于缓存失效.一边要确保你没有把过期的脏数据提供给用户,一边却还要尽量利用缓存来减少你的数据库负载.同时还要通过把响应缓存到离终端用户足够近的地方,从而确保你对用户提供了足够快的响应.这是另一件 Etsy 团队深度关切的事,从他 们的工程博客 CodeasCraft.com 上的日常性能报告就能很明显地看出. 虽然整体架构变化不大,但是这并不意味着 Etsy 的工程师和运维 团队在这么长的时间内都坐在那里无所事事.没准有些人确实是这样,哈哈跑题了…… 运维上的挑战是什么?他们是否仍然需要去灭火?我们刚刚看到他们有多么信赖成熟和被验证过的技术,所以他们不需要花很多时间救火.新的问题通常都是通过引入新系统产生的. 我相信很多读者都有过这样的经历:你引入了一个论文中提到的新系统,这个系统会解决你的所有问题.除了它会对你现在环境中的其他组件产生一个复杂而且“不可能”的反应.所以你就必须弄明白原因是什么,以及解决问题的方法. 说实话,如果你身处这样的场景,那么这可能是一个千载难逢的机 会.这些让你抓耳挠腮的有趣挑战让你特别想把问题弄明白,然后才能去迎接下一次挑战.除非这个问题占据的时间太长,它就成了一个讨厌鬼. 为什么选型用 PHP?另外一个很多公司都需要面对的挑战就是:想要雇佣伟大的牛人. 你在哪才能找到伟大的牛人?如果你正在使用最新最热的技术,可能你很难发现这些牛人,而且价格也会更加昂贵.如果你使用的技术十分成熟,比如 PHP,那么这件事就至少没有那么困难.当然仍然不简单,但是相对来说比寻找一个 Scala 方面的牛人要容易一些. 很多 PHP 工具都存在了十年之久,这门语言本身也是历史悠远. 很多最前沿的问题都已经被解决了.这就意味着难以解答的奇怪问题少之又少,而你又有更多的专家可以找. 这是否意味着他们从来没有对架构做过任何改变?绝对不是.经过历史上的教训,目前对于架构选型及新技术使用有一个定义清晰的决策过程. 第一个就是“架构评审”,在这里支持者可以把支持材料和提议背后的理论说出来,然后团队就会想出一个他们认为可以适应 Etsy 现在环境的概念. 我们一起来看一下最近的一个例子.他们引入了 Kafka 来完成事件流操作.为此,团队想出了为什么要使用 Kafka 的用例,以及?Kafka 将如何解决 Etsy 上的真实问题.然后他们设立了一个架构评审,让高级工程师和所有相关方聚在一起讨论这个提议.
一旦这些问题得到了回答,那就可以进入架构实现阶段. 在上线之前,还需要经历另外一个被称为“上线操作评审”的流程,该流程会验证是否万事俱备.包括设立合适的监控和报警机制,以及为所有待命人员设定合适的规程等等.所有和这个实现相关的人员必须有 “做什么(What),何时做(When),如何做(How)”的计划. 另外一个重要的考虑就是“我们是否可以通过在已有的工具上进行改进来做这件事?”接下来我们将会详细地讲到这一点. 这类问题就是他们在实施一个技术提议前必须回答的问题.这种全面的分析可能需要时间,但是对于一个稳定的电子商务平台来说,正常可用时间就是黄金. “我们非常看重我们网站的正常可用运行时间、可靠性、以及总体可操作性.” 定制化与开源我们已经看到 Etsy 的文化是如何鼓励维持系统稳定性.但是我们没有讨论的这种文化是如何鼓励大家如何定制现有的工具. 正如刚刚看到,与其通过实施新的工具来解决问题,定制一个已经在使用的工具是更合理的做法.一个重要的例子就是定制 Chef.Jon Cowie 曾经参与了一些非常具有影响力的 Chef 定制,比如 Knife-spork.这个定制事实上来自 Etsy 团队试图解决的一个问题.当好几个开发者同时向同一个 Chef 服务器和仓库贡献变更之后,变更就被重写了.Jon 主导了这个工具的改进,他不仅帮助了开源社区,同时还解决了 Etsy 重要的限制性问题. 这也是激发 Jon 写作《定制 Chef》(Customizing Chef)一部分原因.他早就希望能完成这样一本书. 这也是 Chef 开源文化的一个好的例证.Jon 强调,Chef 的设计目的不是成为一个“一体适用”的解决方案.Chef 想要给人们提供一种能让自己解决自动化问题的工具.Chef 认为用户都是自己系统的专家,它无法告诉你该做什么,但是它给你提供工具,所以你可以自己做决定然后告诉它你想做什么. (编辑:ASP站长网) |