应该由我们的流量来驱动我们的系统设计,还是由我们的系统设计来驱动我们的流量?

应该由我们的流量来驱动我们的系统设计,还是由我们的系统设计来驱动我们的流量?

几周前,我以 Linux 系统管理员的身份加入了一家新公司,他们准备启动一个项目,将生产服务器基础设施从数据中心迁移到 Amazon AWS。

他们遵循“我们的流量推动我们的系统设计“;这意味着只要服务器没有超载,我们就可以使用它来提供多项服务,而且即使像 RabbitMQ 这样的一项服务没有超载,它也可以被两个不同的应用程序使用,而且这不会引起任何冲突。好吧,这位架构师在过去四年里工作得很好,每天为数百万用户提供服务,他们将在新的基础设施中使用它。

我相信 ”我们的系统设计应该推动我们的流量“;这意味着一组服务器应该被设计为只服务于一个应用程序,即使它没有超载,一个数据库也应该只服务于一个应用程序,这将有助于调试任何未来的问题,每个应用程序都有单独的日志和干净的架构。但他们认为这将花费更多的钱,需要更多的维护,而没有增加价值。

那么,我们的流量应该驱动我们的系统设计,还是我们的系统设计应该驱动我们的流量?

澄清这一点将有助于我走上正确的道路,要么遵循他们的方式,要么找到让他们遵循我的方式的充分理由。

答案1

在较小的环境中,在较少数量的服务器上运行多个服务是具有成本效益的。

当处理更大容量时,从管理角度来看,更容易将服务更加隔离,因为您能够在较窄的竞争环境中快速识别、控制和解决问题。

将这些应用程序放入容器(例如 Docker)环境还可以让您根据需要更改容器数量,从而更改可以服务的连接数量。这可以在 Google 计算引擎上使用规则完成,我相信这与 Amazon 的 EC2 容器服务相同,但我没有使用过 AWS,所以我不能肯定地说。

相关内容