如果您将系统分解为更小、更简单且独立的组件,Amazon Web Services 将为您提供一些工具,以使您的架构更简单、更健壮和可扩展。
由于您有一组不同大小的实例,从微型到特大(以及一些特大),您可以灵活地将每种服务类型混合到适当的大小、配置、软件依赖关系、更新周期等。这将使开发人员、测试人员和管理员的生活更加轻松。
您还可以独立扩展甚至自动扩展每个层和服务。如果其中一个接口或另一个接口有更多用户,或者通过其中一个接口提供的数据大小增加,则只能扩展相关服务。它将为您节省扩展整个系统的复杂性和成本。
AWS 的另一个特点是能够根据您的需要向上、向下、向外和向内扩展。例如,如果其中一个接口在工作日的用户较多,而在周末的用户较少,则可以在周末或晚上缩小该接口,从而为该实例节省 50% 的计算成本。在这方面,您可以从更多静态接口的按需模型切换到保留实例,再次节省 50% 的成本。
为了允许不同接口之间的通信,您可以使用您的数据库,但您还可以根据您的用例提供更多选项。一种选择是将排队系统用作SQS。队列用作接口之间的缓冲区,降低了某个组件发生故障(软件错误、硬件故障...)的风险,从而影响整个系统。接口间通信的另一个选项,更注重性能的是使用内存缓存。AWS 正在提供ElasticCache作为此类服务。它可以比在短时间内和高负载下更新此类瞬态数据更有效。
除了在单台机器上快速(和肮脏)实施单一服务之外,我没有看到任何长期的缺点。