在AWS生态系统中存储资产

时间:2020-07-05 17:44:56

标签: node.js reactjs amazon-web-services amazon-s3 design-patterns

我是AWS开发的新手(但在传统开发方面拥有丰富的经验)。

我需要使用ReactJS前端,NodeJs / Express后端,MySQL构建一个Web应用程序。它的SaaS应用程序可能有成千上万的客户。在一个用例中,我们有一个父级客户端,其中有数百个子级客户端。

因此,客户自身内部的父子关系。孩子的设置取代了父母。每个客户(无论孩子还是父母)都将具有其独特的徽标和样式。子级可能会也可能不会覆盖徽标和样式。如果子级未覆盖,则从父级客户端获取。等等。

在客户入职时,我可以使用一些配置工具来处理徽标/样式/设置。因此,我将在实施客户时上载/更改父级和/或子级客户的徽标/样式/设置。每当客户要求时,我需要能够更改这些徽标/样式/设置。

关于如何设计应用程序,我有哪些选择:(再次,我是AWS的新手)?

  1. 从存储角度看,存储徽标/样式/设置的最佳位置是什么?如果是AWS S3,会为我提供某些文件夹布局来处理父子项吗?还是应该将所有图像/样式(css)转储到每个项目中带有客户端前缀的单个文件夹中?
  2. 其他选项,在网站渲染时在运行时提取图像/样式/设置。因此,我将确定Web应用程序每次单击的父子关系,并确定从哪里获取资源。在运行时的开销很小,因为我在运行时而不是配置时间/一次推送了父子逻辑。

关于AWS环境的任何想法/替代设计/建议/优缺点?

2 个答案:

答案 0 :(得分:1)

资产绝对是Amazon S3中的最佳位置,每个资产都称为Amazon S3中的一个对象。您为对象提供一个密钥,例如client/main.css。通过这样做,您可以将每个客户端分离到各自的prefix中(您可能会看到它看起来像GUI中的子文件夹)。

通过设置,取决于它们的敏感程度,如果仅仅是为了您的前端,则可以在S3中将JSON文件存储在与资产相同的前缀中。否则,如果应该对设置有一定的安全性,则可以使用拥有"DynamoDB offers consistent single-digit millisecond latency"的{​​{3}}。

答案 1 :(得分:1)

正如Chris Williams已经提到的那样,将S3用作图像,js,css,html和其他资产的原始数据存储。此外,您可以在这些资产的前面设置一个Cloudfront分发,以将其快速提供给客户。 Cloudfront还具有边缘支持,因此您的网站将在全球范围内保持高性能。

S3 + Cloudfront上有很多很棒的资源,可在线提供网站内容。

相关问题