【Retail Industry】在亚马逊云科技上构建无限通道的无服务器零售解决方案

2023-09-13 18:00

在传统的商业模式中,零售商从开始到结束处理订单履行流程,包括库存管理、拥有或租赁仓库以及管理供应链。但是许多零售商并未设置好承担额外库存的条件。


“无限通道”商业模式是一种备选解决方案,适用于在店内库存充足的精益零售商,同时又希望避免收入损失的情况。无限通道也被称为直邮或通过与产品合作伙伴进行自动集成来履行订单的方式。这种自动化使顾客能够在无法在店内货架上找到自己喜欢的特定产品时,在平板电脑或自助服务亭上下订单。


为什么无限通道概念对企业和顾客都很重要?这意味着:

1. 企业不再需要储存超过货架深度的产品。

2. 最终顾客可以轻松在店内下订单,并直接将货物运送到他们的家或选择的地方。

让我们进一步探讨这些概念。



解决方案概述


当顾客在实体店内想要订购不在货架上的商品时,店员可以在平板电脑上扫描SKU码。自助服务亭的体验类似,顾客可以通过键入商品名称来自行搜索商品。


例如,如果顾客访问一个只在货架上存放商品的服装店,并发现店内没有他们尺码、喜欢的颜色或两者兼备的产品,店员可以扫描SKU并检查该商品是否可以发货。然后,应用程序会向商店的产品合作伙伴发出请求。该请求返回店员可以向顾客展示的可供选择的产品,顾客随后可以选择下订单。订单一经处理,将由合作伙伴直接履行。



无服务器无限通道参考架构



图1. 构建用于订单处理的无限通道架构



网站托管和安全性


我们将在Amazon Simple Storage Service(Amazon S3)上托管无限通道网站,并使用Amazon CloudFront以获得更快的响应时间。CloudFront是一个专为高性能和安全性而构建的内容传递网络(CDN)服务。CloudFront可以通过在边缘提供访问并缓存静态内容来减少到其他AWS服务的延迟,而对于我们的用例,动态内容是通过与Amazon API Gateway集成来提供的。在CloudFront之后,使用Web应用程序防火墙(WAF)来防御互联网威胁,例如跨站脚本(XSS)和SQL注入。


Amazon Cognito用于管理应用程序用户池,并提供了控制谁可以访问应用程序的安全性。



解决方案详细步骤


让我们详细回顾架构的各个步骤。


步骤1.店员使用他们的用户名和密码登录应用程序。当店员或顾客扫描条形码/SKU时,执行以下流程。


步骤2.前端应用程序将SKU代码转换为产品编号,并调用Get Item API


步骤3.被调用的getItem AWS Lambda函数处理API调用。


这个架构的设计模式支持多个合作伙伴的集成,并允许代码的重用。该设计可以与任何具备使用API集成能力的合作伙伴集成,合作伙伴特定的转换是使用Lambda函数单独构建的。


我们将使用Amazon DynamoDB来存储合作伙伴信息的元数据,例如partner_id、partner_name和partner APIs。


步骤4.getItem Lambda函数从DynamoDB表中获取合作伙伴信息。它使用一个转换Lambda函数来转换请求体。


步骤5.getItem Lambda函数调用正确的合作伙伴API。在收到请求后,合作伙伴API返回可用产品(基于SKU代码)以及诸如大小、颜色和任何其他可变参数的详细信息,同时还包括图像。


它还可以提供链接到类似可用产品的链接,顾客可能会根据所选产品感兴趣。这有助于零售客户增加他们的收入,并提供在货架上暂时不可用的产品。


然后,顾客从可用产品中进行选择。选择了具有特定详细参数(如颜色、尺寸、数量等)的正确产品后,他们将其添加到购物车,并开始结账过程。顾客输入他们的送货地址和付款信息以下订单。


步骤6.订单被推送到一个名为create-order-queueAmazon Simple Queue ServiceAmazon SQS)队列。Amazon SQS提供了一种简单可靠的方式,让顾客使用队列来解耦和连接微服务。


步骤7.Amazon SQS确保没有数据丢失,并且订单由订单API从队列中处理。createOrder Lambda函数从Amazon SQS中获取消息并处理它们。


步骤8.订单API主体然后被转换为合作伙伴API所期望的消息格式。这个转换可以由‘partners-table’ DynamoDB表中定义的Lambda函数来完成。


步骤9.使用从partners-table获得的端点URL调用合作伙伴API。下订单后,合作伙伴API响应将返回确认。有了这个确认,订单详细信息将被输入到另一个名为orders-tableDynamoDB表中。


步骤10.使用DynamoDB流,您可以跟踪对DynamoDB表的任何插入或更新。


步骤11.通知器Lambda函数调用Amazon Simple Email ServiceAmazon SES)来通知店铺有关订单活动的信息。


步骤12.处理后的订单与客户的ERP应用程序集成以进行对账处理。这可以通过Amazon Eventbridge规则来实现,该规则调用了一个dataSync Lambda函数。



先决条件


要完成本教程,您需要具备以下先决条件:

1. 具有管理员访问权限的亚马逊云科技账户。

2. 亚马逊云科技命令行界面(AWS CLI)。请参阅《使用AWS CLI入门》。

3. Node.js(16.x+)和npm。有关更多信息,请参阅《下载和安装Node.js和npm》。

aws-cdk(2.x+)。请参阅《使用AWS CDK入门》。

4. 已克隆并在您的本地机器上配置的GitHub serverless-partner-integration-endless-aisle存储库。



构建


本地安装CDK库:

npm install -g aws-cdk


构建一个基础设施包以创建可部署资产,这些资产将在CloudFormation模板中使用。

cd serverless-partner-integration-endless-aisle && sh build.sh



生成CloudFormation模板


要查看CDK生成的CloudFormation模板,请执行以下步骤。

cd serveless-partner-integration-endless-aisle/infrastructure

cdk bootstrap && cdk synth

检查“cdk.out”目录中的输出文件。AWS CloudFormation模板已创建,可以部署到您的AWS账户中。



部署


使用CDK将您的堆栈部署/重新部署到亚马逊云科技账户中。


设置存储电子邮件地址以接收通知。如果商店希望获取有关客户订单的更新,他们可以使用STORE_EMAIL值设置商店电子邮件。在此帐户中,您将收到一封验证电子邮件,之后SES可以向您发送订单更新。

export STORE_EMAIL=”dummytest@someemail.com” - Put your email here.


使用在开发人员指南中找到的信息设置亚马逊云科技凭证。


现在运行:cdk deploy



测试


在部署完成后,CDK将输出Amazon CloudFront的URL,以便用于测试。


如果在设置过程中提供了STORE_EMAIL地址,请批准从Amazon SES收到的电子邮件链接,以便将订单通知发送到您的收件箱。

使用以下命令创建一个示例用户,您可以使用该用户登录到网站。

aws cognito-idp admin-create-user –user-pool-id <REACT_APP_USER-POOL-ID> --username <UserName> --user-attributes Name=”email”,Value=”<USER_EMAIL>” Name=”email_verified”,value=true

用户将在他们的电子邮件中收到密码。

在Web浏览器中打开CloudFront URL。使用用户名和密码登录到网站。它会要求您重置密码。

探索不同的功能,如合作伙伴查询、产品搜索、下订单和订单查询。



清理

为了避免未来产生费用,请在不需要时删除资源,删除CloudFormation堆栈。


以下命令将删除在您的AWS账户中创建的基础设施和网站堆栈:cdk destroy



结论

在本文中,我们演示了如何为零售客户构建一种实体店内的数字渠道。现在,您可以使用本文中描述的架构构建您的无限通道应用程序,并与您的合作伙伴集成,或者寻求加速您的零售业务。

云与应用现代化
——
扫描关注微信公众号
获取更多云端资讯
联系我们
——

模板表单-2(1)

  • 姓名*

  • 电话*

  • 邮箱*

  • 公司*

  • 职称*

  • 地址*

  • 需求*