【问题标题】:micro service web app with AWS使用 AWS 的微服务 Web 应用程序
【发布时间】:2017-04-03 18:52:01
【问题描述】:

我正在开发一个 Web 应用程序,用于使用微服务架构通过 AWS 云服务上传和检索图像。 我是 AWS 和微服务架构的新手,请帮我将架构的组件映射到 AWS 组件。

我是否认为每个微服务都在一个具有自动扩展和负载平衡功能的 EC2 实例上运行? 还是在一个 EC2 集群上运行每个微服务?

如果我将静态 html 文件放在 S3 中,我如何调用数据库方法来加载包含内容的 html 页面? 是从客户端调用am API gateway吗?

我在网上搜索过,但找不到使用 AWS EC2 / ECS 将多种服务实现为微服务的教程。

请帮我弄清楚如何映射我的需求,如果有任何关于实现类似应用程序的教程,将非常有帮助。

提前感谢您! :)

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 microservices


    【解决方案1】:

    简而言之,您可以使用无服务器架构,即(使用 AWS 的 APIGateway 和 Lambda 服务)来构建强大的基于微服务的 Web 应用程序。 由于您说您是微服务架构的新手,因此我列出了最佳方法。

    前端/客户端

    单页应用程序 (SPA) 在前端运行良好,由于它们是静态站点,因此可以轻松部署到 S3。这是 SPA 最具成本效益的方法。这是部署SPA on S3 的视频。该视频将指导您逐步完成部署 SPA 的说明。

    如果您在前端使用 react 和 redux,请查看这些 steps 以将 react 应用程序部署到 S3。

    后端

    AWS EC2 是一个不错的选择。但是还有更多可用的替代方案。正如您所说,您是后端新手,设置 EC2、VPC 和 Elastic-ip 是一个有点困难的过程。

    如今,SPA 涵盖了很多业务逻辑、路由等,我们只需要我们的 后端 作为 API 来执行数据库的 CRUD 操作。我想推荐一种名为serverless 的尖端技术。这是tutorial,用于在 5 分钟内启动您的后端。 AWS lambda 是一种称为function as service 的服务。您可以使用 AWS lambda + API 网关 + DynamoDB 构建您的后端。

    例如:假设您想在后端注册一些详细信息,您将 POST 从客户端到您的后端的所有数据,并带有 url 和正确的路径。在 AWS lambda 中,您将 POST 的逻辑编写为一个函数,其中包含从请求解析数据并发送到 dynamoDB 的逻辑。现在,可以通过将此功能与 API 网关(AWS 中的另一项服务)连接起来,将此功能暴露给世界。最后我们得到一个 API,可以在你的 Angular 2 APP 中使用。所以,在调用 POST 时,angular 2 -> API gateway -> Lambda(提取请求并发送到 DB)-> dynamoDB

    与 EC2 相比,使用无服务器的优势。

    1. 您无需管理服务器 (EC2),从更新新的安全补丁到自动缩放,一切都由 lambda 负责。无服务器是一项完全托管的服务。
    2. 您只需在调用 lambda 函数时付费。相比之下,即使您的网络应用在某一天没有收到流量,您也必须为该天支付日费。

    这是我的 github repo,它可能是 reactJS + Serverless + graphQL web 应用程序的样板。

    话虽如此,与传统后端方法相比,请尝试无服务器。欢迎对此提出任何问题。

    【讨论】:

    • 非常感谢您的详细回答:) 我将阅读教程并尝试它。还有关于编写 Lambda 函数的简化指南吗?最好在java或php中是可能的吗?
    • 是的 Lambda 函数可以用 java 编写,但暂时不能用 php 编写。查看无服务器框架以入门。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多