11月24, 2020

预优化是软件交付的杀手

本文最初发表于 Medium 博客,经原作者 Grace Ke 授权,InfoQ 中文站翻译并分享。

导读:本文作者用她的经验教训为我们娓娓道来:预优化是不是软件交付的杀手?相信她这篇文章能帮你避开软件交付的那些坑。

在我目前的岗位上,我有一个团队花了两年多的时间,试图让自己从前一个团队留下的坑“爬”出来,而这个坑是源于那个团队很差劲的设计,这些设计是一些处理平台服务的相当关键的应用,这些应用是许多其他微服务的上游功能。我认为问题的很大一部分在于,前一个团队是过度预优化的受害者。我知道,当事后诸葛亮是站着说话不腰疼,因为我们现在正承受着我们所继承的服务生态系统的后果和持续存在的问题。然而,我相信,我们不得不解决的一些问题本是可以避免的。

谬论

预优化是指,在遇到问题之前,我们必须一次性解决所有的问题。这几乎是在说,作为开发人员,我们应该有一个“水晶球”,可以预测我们在应用程序生命周期中将会遇到的所有问题。

例子与经验教训

我所见过的团队进行预优化的一些事情包括:

  1. 通过过早地扩展来预测自动扩展需求。我见过的最常见的问题之一是,团队会根据遗留应用程序在内部执行的情况,配置他们可以使用的最大的 CPU/mem EC2 组合。问题是,当我们监控这些新服务时,我们注意到,每个实例只使用了 CPU 的 2%。就操作成本而言,这些非常大的实例其实是非常昂贵的,但对服务的性能似乎并没有多少贡献。

本文链接:https://blog.jnliok.com/post/zEAhXZ5RMZTu37oo71EF.html

-- EOF --

Comments