___
bởi Sandeep Mehta và Shashank Shrivastava| 07 tháng 8 năm 2023 | Amazon API Gateway , Amazon CloudFront , Kiến trúc , AWS Lambda | Liên kết cố định | Chia sẻ
Trong các mô hình kinh doanh truyền thống, các nhà bán lẻ xử lý các quy trình thực hiện đơn hàng từ đầu đến cuối – bao gồm quản lý hàng tồn kho, sở hữu hoặc cho thuê kho hàng và quản lý chuỗi cung ứng. Nhưng nhiều nhà bán lẻ không sẵn sàng để vận chuyển thêm hàng tồn kho.
Mô hình kinh doanh “endless aisle” là một giải pháp thay thế dành cho các nhà bán lẻ tinh gọn đang có đủ hàng tồn kho trong cửa hàng đồng thời muốn tránh bị mất doanh thu. Endless aisle còn được gọi là drop-shipping hoặc thực hiện đơn hàng thông qua tích hợp tự động với các đối tác sản phẩm. Việc tự động hóa như vậy dẫn đến khả năng khách hàng có thể đặt hàng trên máy tính bảng hoặc ki-ốt khi họ không thể tìm thấy sản phẩm cụ thể mà họ lựa chọn trên kệ trong cửa hàng.
Tại sao khái niệm endless aisle lại quan trọng đối với doanh nghiệp cũng như khách hàng? Nó có nghĩa là:
- Các doanh nghiệp không còn cần phải dự trữ sản phẩm quá sâu kệ nữa.
- Khách hàng cuối có thể dễ dàng đặt hàng tại cửa hàng và nhận hàng được vận chuyển trực tiếp đến nhà hoặc địa điểm họ chọn.
Hãy khám phá những khái niệm này hơn nữa.
Tổng quan về giải pháp
Khi khách hàng đến cửa hàng và muốn đặt những mặt hàng không có sẵn trên kệ, nhân viên cửa hàng có thể quét mã SKU trên máy tính bảng. Trải nghiệm ki-ốt cũng tương tự, trong đó khách hàng có thể tự tìm kiếm mặt hàng đó bằng cách nhập tên của mặt hàng đó.
Ví dụ, nếu khách hàng ghé thăm một cửa hàng quần áo chỉ dự trữ các mặt hàng trên kệ và nhận thấy cửa hàng đã hết sản phẩm theo kích cỡ, màu sắc ưa thích hoặc cả hai, nhân viên cộng tác có thể quét SKU và kiểm tra xem mặt hàng đó có sẵn để vận chuyển hay không. Sau đó, ứng dụng sẽ đưa ra yêu cầu với đối tác sản phẩm của cửa hàng. Yêu cầu trả về các sản phẩm có sẵn mà cộng tác viên có thể hiển thị cho khách hàng, sau đó họ có thể chọn đặt hàng.Khi đơn hàng được xử lý, nó được đáp ứng trực tiếp bởi đối tác.
Tham khảo kiến trúc endless alsle
Hình 1 minh họa cách kiến trúc một serverless endless aisle để xử lý đơn hàng.
Hình 1. Xây dựng kiến trúc lối đi vô tận để xử lý đơn hàng
Hosting và bảo mật web
Chúng tôi sẽ host trang web endless aisle trên Amazon Simple Storage Service (Amazon S3) bằng Amazon CloudFront để có thời gian phản hồi tốt hơn. CloudFront là dịch vụ mạng phân phối nội dung (CDN) được xây dựng để mang lại hiệu suất và bảo mật cao. CloudFront có thể giảm độ trễ cho các dịch vụ AWS khác bằng cách cung cấp quyền truy cập ở biên và bằng cách lưu nội dung tĩnh vào bộ nhớ đệm, trong khi nội dung động được cung cấp bởi tích hợp Amazon API Gateway cho trường hợp sử dụng của chúng tôi. Tường lửa ứng dụng web (WAF) được sử dụng sau CloudFront để bảo vệ chống lại các mối đe dọa trên Internet, chẳng hạn như tập lệnh chéo trang (XSS) và chèn SQL.
Amazon Cognito được sử dụng để quản lý nhóm người dùng ứng dụng và cung cấp bảo mật cho những người sau đó có thể truy cập ứng dụng.
Hướng dẫn giải pháp
Hãy xem xét các bước kiến trúc một cách chi tiết.
Bước 1. Nhân viên cửa hàng đăng nhập vào ứng dụng bằng tên người dùng và mật khẩu của họ. Khi cộng tác viên hoặc khách hàng quét mã vạch/SKU, quy trình sau sẽ được thực thi.
Bước 2. Ứng dụng font – end dịch mã SKU thành số sản phẩm và gọi API nhận mặt hàng.
Bước 3. Một hàm getItem AWS Lambda được gọi sẽ xử lý lệnh gọi API.
Mẫu thiết kế của kiến trúc này hỗ trợ tích hợp nhiều đối tác và cho phép sử dụng lại mã. Thiết kế có thể được tích hợp với bất kỳ đối tác nào có khả năng tích hợp sử dụng API và quá trình chuyển đổi dành riêng cho đối tác được xây dựng riêng bằng cách sử dụng các Lambda function.
Chúng tôi sẽ sử dụng Amazon DynamoDB để lưu trữ siêu dữ liệu thông tin đối tác – ví dụ: Partner_id, Partner_name, API đối tác.
Bước 4. Hàm Lambda getItem truy xuất thông tin đối tác từ bảng DynamoDB. Nó biến đổi request body bằng một Transformation Lambda function.
Bước 5. Hàm Lambda getItem gọi API đối tác phù hợp. Khi nhận được yêu cầu, API đối tác sẽ trả về sản phẩm có sẵn (dựa trên mã SKU) cùng với các chi tiết như kích thước, màu sắc và bất kỳ tham số biến nào khác, cùng với hình ảnh.
Nó cũng có thể cung cấp liên kết đến các sản phẩm tương tự có sẵn mà khách hàng có thể quan tâm dựa trên sản phẩm đã chọn. Điều này giúp khách hàng bán lẻ tăng doanh thu và cung cấp các sản phẩm không có sẵn trên kệ của họ tại một thời điểm nhất định.
Sau đó, khách hàng sẽ lựa chọn trong số các sản phẩm có sẵn. Sau khi chọn đúng sản phẩm với các chi tiết cụ thể về các thông số như màu sắc, kích thước, số lượng, v.v., họ sẽ thêm chúng vào giỏ hàng và bắt đầu quá trình thanh toán. Khách hàng nhập địa chỉ giao hàng và thông tin thanh toán để đặt hàng.
Bước 6. Các đơn hàng được đẩy đến Amazon Simple Queue Service (Amazon SQS) có tên là create-order-queue. Amazon SQS cung cấp một cách đơn giản và đáng tin cậy để khách hàng tách rời và kết nối các dịch vụ vi mô với nhau bằng cách sử dụng hàng đợi.
Bước 7. Amazon SQS đảm bảo rằng không bị mất dữ liệu và các đơn hàng được xử lý từ hàng đợi bằng API đơn hàng. Lambda function createOrder lấy tin nhắn từ Amazon SQS và xử lý chúng.
Bước 8. Sau đó, nội dung API đơn hàng sẽ được chuyển đổi thành định dạng thông báo mà API đối tác mong đợi. Việc chuyển đổi này có thể được thực hiện bằng hàm Lambda được xác định trong cấu hình trong bảng DynamoDB ‘partners-table’’.
Bước 9. API đối tác được gọi bằng cách sử dụng URL endpoint được lấy từ bảng đối tác. Khi đơn hàng được đặt, phản hồi API của đối tác sẽ trả về xác nhận. Với xác nhận này, chi tiết đơn hàng sẽ được nhập vào một bảng DynamoDB khác gọi là bảng orders-table.
Bước 10. Với DynamoDB stream, bạn có thể theo dõi mọi hoạt động chèn hoặc cập nhật vào bảng DynamoDB.
Bước 11. Hàm Lambda thông báo gọi Amazon Simple Email Service (Amazon SES) để thông báo cho cửa hàng về hoạt động đặt hàng.
Bước 12. Các đơn hàng đã xử lý được tích hợp với ứng dụng ERP của khách hàng để thực hiện quá trình đối chiếu. Điều này có thể đạt được bằng quy tắc Amazon Eventbridge gọi hàm Lambda dataSync.
Điều kiện tiên quyết
Đối với hướng dẫn này, bạn sẽ cần các điều kiện tiên quyết sau:
- Tài khoản AWS có quyền truy cập quản trị viên
- Giao diện dòng lệnh AWS (AWS CLI). Xem Getting started with the AWS CLI..
- Node.js (16.x+) và npm. Để biết thêm thông tin, hãy xem Downloading and installing Node.js and npm.
- aws-cdk (2.x+). Xem Getting started with the AWS CDK..
- serverless-partner-integration-endless-aisle của GitHub , được sao chép và định cấu hình trên máy cục bộ của bạn.
Xây dựng
Cài đặt thư viện CDK ở cục bộ
npm install -g aws-cdk
Xây dựng một gói Cơ sở hạ tầng để tạo các nội dung có thể triển khai, sẽ được sử dụng nhiều trong mẫu CloudFormation
cd serverless-partner-integration-endless-aisle && sh build.sh
Tổng hợp mẫu CloudFormation
Để xem mẫu CloudFormation do CDK tạo, hãy thực hiện các bước bên dưới
cd serveless-partner-integration-endless-aisle/infrastructure
cdk bootstrap && cdk synth
Kiểm tra file output trong thư mục “cdk.out”. Mẫu AWS CloudFormation được tạo để triển khai trong tài khoản aws của bạn.
Triển khai
Sử dụng CDK để triển khai/triển khai lại ngăn xếp của bạn vào Tài khoản AWS.
Đặt địa chỉ email của cửa hàng để nhận thông báo. Nếu cửa hàng muốn nhận thông tin cập nhật về đơn đặt hàng của khách hàng, họ có thể đặt giá trị STORE_EMAIL bằng email của cửa hàng. Bạn sẽ nhận được email xác minh trong tài khoản này, sau đó SES có thể gửi cho bạn thông tin cập nhật về đơn hàng.
export STORE_EMAIL=”dummytest@someemail.com” – Put your email here.
Thiết lập thông tin xác thực AWS với thông tin có in this developer guide.
Bây giớ chạy:
cdk deploy
Kiểm tra
Sau khi triển khai, CDK sẽ xuất URL Amazon Cloudfront để sử dụng cho việc thử nghiệm.
- Nếu bạn đã cung cấp địa chỉ STORE_EMAIL trong quá trình thiết lập thì hãy phê duyệt liên kết email nhận được từ Amazon SES trong hộp thư đến của bạn. Điều này sẽ cho phép thông báo đơn hàng đến hộp thư đến của bạn.
- Tạo một người dùng mẫu bằng cách sử dụng lệnh sau mà bạn có thể sử dụng để đăng nhập vào trang web.
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 - Người dùng sẽ nhận được mật khẩu trong email của họ.
- Mở URL CloudFront trong trình duyệt web. Đăng nhập vào trang web với tên người dùng và mật khẩu. Nó sẽ yêu cầu bạn đặt lại mật khẩu của bạn.
- Khám phá các tính năng khác nhau như Tra cứu đối tác, Tìm kiếm sản phẩm, Đặt hàng và Tra cứu đơn hàng.
Dọn dẹp
Để tránh phát sinh phí trong tương lai, hãy xóa tài nguyên, xóa ngăn xếp hình thành đám mây khi không cần thiết.
Lệnh sau sẽ xóa cơ sở hạ tầng và ngăn xếp trang web được tạo trong tài khoản AWS của bạn:
cdk destroy
Kết luận
Trong blog này, chúng tôi đã trình bày cách xây dựng kênh kỹ thuật số tại cửa hàng cho khách hàng bán lẻ. Giờ đây, bạn có thể xây dựng ứng dụng có lối đi vô tận bằng cách sử dụng cấu trúc được mô tả trong blog này và tích hợp với các đối tác của mình hoặc reach out để đẩy nhanh hoạt động kinh doanh bán lẻ của bạn.
Đọc thêm
- Không có máy chủ trên AWS
- Xây dựng một ứng dụng web không có máy chủ
- Ví dụ về thiết kế kiến trúc serverless
- Nghiên cứu điển hình về bán lẻ AWS
Sandeep là Senior Solution và là thành viên của Analytics TFC tại AWS. Sandeep có niềm đam mê giúp khách hàng thiết kế kiến trúc đám mây hiện đại và đề xuất các dịch vụ phù hợp với yêu cầu của họ. Anh ấy hiểu các trường hợp sử dụng trong kinh doanh và chuyển chúng thành các giải pháp CNTT bảo mật, có thể mở rộng và linh hoạt. Trọng tâm của anh là xây dựng kiến trúc serverless để giải quyết những khó khăn của khách hàng.
Shashank Shrivastava là Senior Cloud Application Architect và thành viên Serverless TFC tại AWS. Anh ấy đam mê giúp đỡ khách hàng và nhà phát triển xây dựng các ứng dụng hiện đại trên kiến trúc serverless. Là một nhà phát triển và blogger thực dụng, anh thúc đẩy việc học tập và chia sẻ công nghệ dựa vào cộng đồng. Mối quan tâm của anh là kiến trúc phần mềm, công cụ dành cho nhà phát triển và điện toán serverless.
Link Blog: