2016-11-20 177 views
2

我正在开发一个使用微服务体系结构的AWS云服务进行图像上载和检索的Web应用程序。 我是AWS和微服务体系结构的新手,请帮助我将体系结构的组件映射到AWS组件。AWS的微服务Web应用程序

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

如果我把我的静态HTML文件在S3中,我怎么能调用数据库方法来加载HTML页面的内容? 它是通过从客户端调用API网关吗?

我已经搜索了网页,但无法找到使用AWS EC2/ECS实现多项服务作为微服务的教程。

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

预先感谢您! :)

回答

2

简而言之,您可以使用无服务器架构(即AWS的APIGateway和Lambda服务)来构建强大的基于微服务的Web应用程序。 既然你说过你是微型服务架构的新手,我会列出最好的方法。

前端/客户端

单页应用(SPA)在前端运作良好,因为他们是一个静态的网站,他们可以很容易地部署到S3。这是SPA最具成本效益的方法。这是部署SPA on S3的视频。该视频将引导您逐步部署SPA。

在例子中,使用反应并Redux的在前端,用于部署反应程式S3检查出这些steps

后端

AWS EC2是一个不错的选择。但有更多的替代品可供选择。正如你所说,你是后端新手,设立EC2,VPC和Elastic-ip是一个有点困难的过程。

时下,SPA的覆盖了很多业务逻辑,路由等,我们只需要我们的后台作为用于执行数据库的CRUD操作的API。我想建议一种叫做serverless的尖端技术。这是在5分钟内启动后端的tutorial。 AWS lambda是一种称为的服务,其功能如服务。您可以使用AWS lambda + API网关+ DynamoDB构建后端。

对于如:说你要登记在后端的一些细节,你会POST一切从客户端与URL和正确的路径后端数据。在AWS lambda中,您将POST作为函数编写逻辑,其中包含解析来自请求的数据并发送到dynamoDB的逻辑。现在,通过将此函数与API网关(AWS中的另一项服务)相连,可以将此功能暴露给世界。最后我们得到一个API,可以在你的angular 2 APP中使用。 SO,在调用POST时,角2 - > API网关 - > Lambda(提取请求并发送到数据库) - > dynamoDB

使用无服务器与EC2相比的好处。

  1. 您不需要管理您的服务器(EC2)将新安全补丁更新为自动缩放,所有内容都由lambda保管。无服务器是一项完全托管服务。
  2. 只有在调用lambda函数时才支付。相比之下,即使您的网络应用程序在某一天没有收到流量,您也必须支付特定日期的日期关税。

这是我的github repo这可能是用于reactJS + Serverless + graphQL web应用程序的锅炉板。

话虽如此,与传统的后端方法相比,尝试无服务器。任何有关此问题都会受到欢迎。

+0

非常感谢你的详细答案:)我会通过教程并尝试它。还有什么关于编写Lambda函数的简化指南?最好在Java或PHP是可能的? – Dee

+0

Ya Lambda函数可以用java编写,但暂时不能用php编写。开始研究无服务器框架。 –