我正在使用微服务架构开发使用AWS云服务进行图像上传和检索的Web应用程序。 我是AWS和微服务架构的新手,请帮助我将架构的组件映射到AWS组件。
我是否认为每个微服务都在一个具有自动扩展和负载平衡的EC2实例上运行? 或者我是否在一个EC2集群上运行每个微服务?
如果我将静态html文件放在S3中,如何调用数据库方法来加载带有内容的html页面? 是通过从客户端调用API API网关吗?
我在网上搜索过,但无法找到使用AWS EC2 / ECS实现多项服务作为微服务的教程。
请帮我弄清楚如何映射我的要求,如果有任何有关实施类似应用程序的教程,将会非常有帮助。
提前谢谢! :)
答案 0 :(得分:2)
简而言之,您可以使用无服务器架构,即(使用AWS的APIGateway和Lambda服务)构建基于微服务的强大Web应用程序。 既然你说你是微服务架构的新手,我就列出了最好的方法。
<强>前/客户端强>
单页应用程序(SPA)在前端运行良好,并且由于它们是静态站点,因此可以轻松部署到S3。这是SPA最具成本效益的方法。以下是部署SPA on S3的视频。本视频将指导您完成部署SPA的分步说明。
如果您在前端使用react和redux,请查看这些steps以将react应用程序部署到S3。
<强>后端强>
AWS EC2是一个不错的选择。但是还有更多的替代品可供选择。正如你所说,你是后来的新手,设置EC2,VPC和Elastic-ip是一个有点困难的过程。
如今,SPA涵盖了很多业务逻辑,路由等。我们只需将后端作为用于执行数据库CRUD操作的API。我想建议一种名为serverless的尖端技术。以下是tutorial,用于在5分钟内启动后端。 AWS lambda是一种称为作为服务的功能的服务。您可以使用 AWS lambda + API网关+ DynamoDB 构建后端。
例如:假设您要在后端注册一些详细信息,您将 POST 使用网址和正确路径从客户端到后端的所有数据。在AWS lambda中,您将 POST 的逻辑编写为函数,其中包含从请求解析数据并发送到dynamoDB的逻辑。现在,通过将此功能与API网关(AWS中的另一项服务)连接,可以将此功能公开给世界。最后我们得到一个API,可用于你的角度2 APP。因此,在调用POST时, angular 2 - &gt; API网关 - &gt; Lambda(提取请求并发送到DB) - &gt; dynamoDB 强>
与EC2相比,使用无服务器的好处。
这是我的github repo,它可能是reactJS +无服务器+ graphQL网络应用程序的底板。
说过,与传统的后端方法相比,尝试无服务器。对此有任何疑问都会受到欢迎。