Logo Zephyrnet

Cách Amazon Devices mở rộng quy mô và tối ưu hóa dự báo cung và cầu theo thời gian thực bằng cách sử dụng phân tích serverless

Ngày:

Mỗi ngày, các thiết bị của Amazon xử lý và phân tích hàng tỷ giao dịch từ các nhóm vận chuyển, hàng tồn kho, công suất, cung ứng, bán hàng, tiếp thị, nhà sản xuất và dịch vụ khách hàng trên toàn cầu. Dữ liệu này được sử dụng để mua kho thiết bị nhằm đáp ứng nhu cầu của khách hàng Amazon. Với khối lượng dữ liệu có tốc độ tăng trưởng phần trăm hai chữ số hàng năm và đại dịch COVID làm gián đoạn hoạt động hậu cần toàn cầu vào năm 2021, việc mở rộng quy mô và tạo dữ liệu gần thời gian thực trở nên quan trọng hơn.

Bài đăng này cho bạn thấy cách chúng tôi di chuyển sang hồ dữ liệu phi máy chủ được xây dựng trên AWS, hồ dữ liệu này tự động tiêu thụ dữ liệu từ nhiều nguồn và định dạng khác nhau. Ngoài ra, nó còn tạo thêm cơ hội cho các nhà khoa học và kỹ sư dữ liệu của chúng tôi sử dụng các dịch vụ AI và máy học (ML) để liên tục cung cấp và phân tích dữ liệu.

Những thách thức và mối quan tâm thiết kế

Kiến trúc kế thừa của chúng tôi chủ yếu được sử dụng Đám mây điện toán đàn hồi Amazon (Amazon EC2) để trích xuất dữ liệu từ nhiều nguồn dữ liệu không đồng nhất nội bộ và API REST với sự kết hợp của Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) để tải dữ liệu và Amazon RedShift để phân tích sâu hơn và tạo ra các đơn đặt hàng.

Chúng tôi nhận thấy phương pháp này dẫn đến một số thiếu sót và do đó đã thúc đẩy các cải tiến trong các lĩnh vực sau:

  • tốc độ phát triển – Do thiếu sự thống nhất và khám phá lược đồ, đó là những lý do chính dẫn đến lỗi thời gian chạy, các nhà phát triển thường dành thời gian xử lý các vấn đề vận hành và bảo trì.
  • khả năng mở rộng – Hầu hết các bộ dữ liệu này được chia sẻ trên toàn cầu. Do đó, chúng tôi phải đáp ứng các giới hạn mở rộng trong khi truy vấn dữ liệu.
  • Bảo trì cơ sở hạ tầng tối thiểu – Quá trình hiện tại bao gồm nhiều lần tính toán tùy thuộc vào nguồn dữ liệu. Do đó, giảm bảo trì cơ sở hạ tầng là rất quan trọng.
  • Khả năng đáp ứng với các thay đổi nguồn dữ liệu – Hệ thống hiện tại của chúng tôi lấy dữ liệu từ các kho lưu trữ và dịch vụ dữ liệu không đồng nhất khác nhau. Mọi cập nhật cho các dịch vụ đó đều mất hàng tháng theo chu kỳ của nhà phát triển. Thời gian phản hồi cho các nguồn dữ liệu này rất quan trọng đối với các bên liên quan chính của chúng tôi. Do đó, chúng ta phải thực hiện phương pháp tiếp cận dựa trên dữ liệu để chọn kiến ​​trúc hiệu năng cao.
  • Lưu trữ và dự phòng – Do các mô hình và kho lưu trữ dữ liệu không đồng nhất nên việc lưu trữ các bộ dữ liệu khác nhau từ các nhóm bên liên quan kinh doanh khác nhau là một thách thức. Do đó, việc lập phiên bản cùng với dữ liệu gia tăng và khác biệt để so sánh sẽ mang lại khả năng vượt trội để tạo ra các kế hoạch tối ưu hơn
  • Chạy trốn và khả năng tiếp cận – Do tính chất không ổn định của hậu cần, một số nhóm bên liên quan trong kinh doanh có yêu cầu phân tích dữ liệu theo yêu cầu và tạo kế hoạch tối ưu gần thời gian thực cho các đơn đặt hàng. Điều này đưa ra nhu cầu về cả việc bỏ phiếu và đẩy dữ liệu để truy cập và phân tích trong thời gian gần như thực.

Chiến lược thực hiện

Dựa trên những yêu cầu này, chúng tôi đã thay đổi chiến lược và bắt đầu phân tích từng vấn đề để xác định giải pháp. Về mặt kiến ​​trúc, chúng tôi đã chọn mô hình không có máy chủ và dòng hành động kiến ​​trúc hồ dữ liệu đề cập đến tất cả các lỗ hổng kiến ​​trúc và các tính năng thách thức mà chúng tôi xác định là một phần của các cải tiến. Từ quan điểm vận hành, chúng tôi đã thiết kế một mô hình chia sẻ trách nhiệm mới để nhập dữ liệu bằng cách sử dụng Keo AWS thay vì các dịch vụ nội bộ (REST API) được thiết kế trên Amazon EC2 để trích xuất dữ liệu. Chúng tôi cũng đã sử dụng AWS Lambda để xử lý dữ liệu. Sau đó, chúng tôi đã chọn amazon Athena như dịch vụ truy vấn của chúng tôi. Để tiếp tục tối ưu hóa và cải thiện tốc độ của nhà phát triển cho người tiêu dùng dữ liệu của chúng tôi, chúng tôi đã thêm Máy phát điện Amazon như một kho lưu trữ siêu dữ liệu cho các nguồn dữ liệu khác nhau đổ bộ vào hồ dữ liệu. Hai quyết định này đã thúc đẩy mọi quyết định thiết kế và triển khai mà chúng tôi đưa ra.

Sơ đồ sau minh họa kiến ​​trúc

arch

Trong các phần sau, chúng ta xem xét từng thành phần trong kiến ​​trúc một cách chi tiết hơn khi chúng ta di chuyển qua dòng quy trình.

Keo AWS cho ETL

Để đáp ứng nhu cầu của khách hàng đồng thời hỗ trợ quy mô nguồn dữ liệu của các doanh nghiệp mới, điều quan trọng đối với chúng tôi là phải có mức độ linh hoạt, khả năng mở rộng và khả năng đáp ứng cao trong việc truy vấn các nguồn dữ liệu khác nhau.

AWS Glue là dịch vụ tích hợp dữ liệu serverless giúp người dùng phân tích dễ dàng khám phá, chuẩn bị, di chuyển và tích hợp dữ liệu từ nhiều nguồn. Bạn có thể sử dụng nó để phân tích, ML và phát triển ứng dụng. Nó cũng bao gồm năng suất bổ sung và công cụ DataOps để soạn thảo, chạy công việc và triển khai quy trình công việc.

Với AWS Glue, bạn có thể khám phá và kết nối với hơn 70 nguồn dữ liệu đa dạng, đồng thời quản lý dữ liệu của mình trong một danh mục dữ liệu tập trung. Bạn có thể tạo, chạy và giám sát các đường ống trích xuất, biến đổi và tải (ETL) một cách trực quan để tải dữ liệu vào kho dữ liệu của mình. Ngoài ra, bạn có thể ngay lập tức tìm kiếm và truy vấn dữ liệu được lập danh mục bằng Athena, Amazon EMRQuang phổ dịch chuyển đỏ Amazon.

AWS Glue giúp chúng tôi dễ dàng kết nối với dữ liệu trong các kho lưu trữ dữ liệu khác nhau, chỉnh sửa và làm sạch dữ liệu khi cần, đồng thời tải dữ liệu vào kho lưu trữ do AWS cung cấp để có chế độ xem thống nhất. Công việc AWS Glue có thể được lên lịch hoặc gọi theo yêu cầu để trích xuất dữ liệu từ tài nguyên của khách hàng và từ kho dữ liệu.

Một số trách nhiệm của các công việc này như sau:

  • Trích xuất và chuyển đổi một thực thể nguồn thành thực thể dữ liệu
  • Làm phong phú dữ liệu để chứa năm, tháng và ngày để lập danh mục tốt hơn và bao gồm ID ảnh chụp nhanh để truy vấn tốt hơn
  • Thực hiện xác thực đầu vào và tạo đường dẫn cho Amazon S3
  • Liên kết siêu dữ liệu được công nhận dựa trên hệ thống nguồn

Truy vấn API REST từ các dịch vụ nội bộ là một trong những thách thức cốt lõi của chúng tôi và xem xét cơ sở hạ tầng tối thiểu, chúng tôi muốn sử dụng chúng trong dự án này. Bộ kết nối AWS Glue đã hỗ trợ chúng tôi tuân thủ yêu cầu và mục tiêu. Để truy vấn dữ liệu từ API REST và các nguồn dữ liệu khác, chúng tôi đã sử dụng các mô-đun PySpark và JDBC.

AWS Glue hỗ trợ nhiều loại kết nối. Để biết thêm chi tiết, hãy tham khảo Các loại kết nối và tùy chọn cho ETL trong AWS Glue.

Xô S3 làm bãi đáp

Chúng tôi đã sử dụng bộ chứa S3 làm vùng hạ cánh ngay lập tức của dữ liệu được trích xuất, dữ liệu này sẽ được xử lý và tối ưu hóa thêm.

Lambda với tư cách là Trình kích hoạt AWS Glue ETL

Chúng tôi đã bật thông báo sự kiện S3 trên bộ chứa S3 để kích hoạt Lambda, giúp phân vùng thêm dữ liệu của chúng tôi. Dữ liệu được phân vùng trên InputDataSetName, Năm, Tháng và Ngày. Bất kỳ bộ xử lý truy vấn nào chạy trên dữ liệu này sẽ chỉ quét một tập hợp con dữ liệu để tối ưu hóa hiệu suất và chi phí tốt hơn. Dữ liệu của chúng tôi có thể được lưu trữ ở nhiều định dạng khác nhau, chẳng hạn như CSV, JSON và Parquet.

Dữ liệu thô không lý tưởng cho hầu hết các trường hợp sử dụng của chúng tôi để tạo kế hoạch tối ưu vì dữ liệu này thường có các loại dữ liệu trùng lặp hoặc không chính xác. Quan trọng nhất, dữ liệu có nhiều định dạng, nhưng chúng tôi đã nhanh chóng sửa đổi dữ liệu và quan sát thấy hiệu suất truy vấn tăng đáng kể từ việc sử dụng định dạng Parquet. Ở đây, chúng tôi đã sử dụng một trong những mẹo hiệu suất trong 10 mẹo điều chỉnh hiệu suất hàng đầu cho Amazon Athena.

Việc làm AWS Glue cho ETL

Chúng tôi muốn khả năng truy cập và phân tách dữ liệu tốt hơn, vì vậy chúng tôi đã chọn có một bộ chứa S3 khác để cải thiện hiệu suất hơn nữa. Chúng tôi đã sử dụng các công việc AWS Glue tương tự để chuyển đổi thêm và tải dữ liệu vào bộ chứa S3 cần thiết và một phần siêu dữ liệu đã trích xuất vào DynamoDB.

DynamoDB là kho lưu trữ siêu dữ liệu

Bây giờ chúng tôi đã có dữ liệu, các bên liên quan kinh doanh khác nhau sẽ tiếp tục sử dụng dữ liệu đó. Điều này đặt ra cho chúng tôi hai câu hỏi: dữ liệu nguồn nào nằm trên hồ dữ liệu và phiên bản nào. Chúng tôi đã chọn DynamoDB làm kho lưu trữ siêu dữ liệu của mình, nơi cung cấp thông tin chi tiết mới nhất cho người tiêu dùng để truy vấn dữ liệu một cách hiệu quả. Mỗi tập dữ liệu trong hệ thống của chúng tôi được xác định duy nhất bằng ID ảnh chụp nhanh mà chúng tôi có thể tìm kiếm từ kho siêu dữ liệu của mình. Khách hàng truy cập kho dữ liệu này bằng API.

Amazon S3 là hồ dữ liệu

Để có chất lượng dữ liệu tốt hơn, chúng tôi đã trích xuất dữ liệu được làm giàu vào một bộ chứa S3 khác với cùng tác vụ AWS Glue.

Trình thu thập keo AWS

Trình thu thập thông tin là “nước sốt bí mật” cho phép chúng tôi phản ứng nhanh với các thay đổi của lược đồ. Trong suốt quá trình, chúng tôi đã chọn thực hiện từng bước ở mức độ không liên quan đến lược đồ nhất có thể, điều này cho phép mọi thay đổi lược đồ được thực hiện cho đến khi chúng đến AWS Glue. Với trình thu thập thông tin, chúng tôi có thể duy trì các thay đổi bất khả tri xảy ra với lược đồ. Điều này giúp chúng tôi tự động thu thập dữ liệu từ Amazon S3 và tạo lược đồ cũng như bảng.

Danh mục dữ liệu keo AWS

Danh mục dữ liệu đã giúp chúng tôi duy trì danh mục dưới dạng chỉ mục cho các chỉ số về vị trí, lược đồ và thời gian chạy của dữ liệu trong Amazon S3. Thông tin trong Danh mục dữ liệu được lưu trữ dưới dạng bảng siêu dữ liệu, trong đó mỗi bảng chỉ định một kho lưu trữ dữ liệu.

Athena cho các truy vấn SQL

Athena là một dịch vụ truy vấn tương tác giúp dễ dàng phân tích dữ liệu trong Amazon S3 bằng cách sử dụng SQL tiêu chuẩn. Athena không có máy chủ, vì vậy không có cơ sở hạ tầng để quản lý và bạn chỉ trả tiền cho các truy vấn bạn chạy. Chúng tôi coi sự ổn định trong hoạt động và tăng tốc độ của nhà phát triển là những yếu tố cải tiến chính của chúng tôi.

Chúng tôi đã tối ưu hóa thêm quy trình truy vấn Athena để người dùng có thể nhập các giá trị và truy vấn để lấy dữ liệu từ Athena bằng cách tạo như sau:

  • An Bộ công cụ phát triển đám mây AWS (AWS CDK) mẫu để tạo cơ sở hạ tầng Athena và Quản lý truy cập và nhận dạng AWS (IAM) để truy cập các bộ chứa S3 của hồ dữ liệu và Danh mục dữ liệu từ bất kỳ tài khoản nào
  • Một thư viện để khách hàng có thể cung cấp vai trò IAM, truy vấn, định dạng dữ liệu và vị trí đầu ra để bắt đầu truy vấn Athena cũng như nhận trạng thái và kết quả của truy vấn chạy trong nhóm họ chọn.

Để truy vấn Athena là một quy trình gồm hai bước:

  • Thực thi StartQuery – Điều này bắt đầu chạy truy vấn và lấy ID chạy. Người dùng có thể cung cấp vị trí đầu ra nơi đầu ra của truy vấn sẽ được lưu trữ.
  • Thực thi GetQuery – Điều này nhận được trạng thái truy vấn vì quá trình chạy không đồng bộ. Khi thành công, bạn có thể truy vấn đầu ra trong tệp S3 hoặc qua API.

Phương thức trợ giúp để bắt đầu chạy truy vấn và nhận kết quả sẽ có trong thư viện.

Dịch vụ siêu dữ liệu hồ dữ liệu

Dịch vụ này được phát triển tùy chỉnh và tương tác với DynamoDB để lấy siêu dữ liệu (tên tập dữ liệu, ID ảnh chụp nhanh, chuỗi phân vùng, dấu thời gian và liên kết S3 của dữ liệu) ở dạng API REST. Khi lược đồ được phát hiện, khách hàng sử dụng Athena làm bộ xử lý truy vấn của họ để truy vấn dữ liệu.

Vì tất cả các bộ dữ liệu có ID ảnh chụp nhanh đều được phân vùng nên truy vấn nối không dẫn đến quét toàn bộ bảng mà chỉ quét phân vùng trên Amazon S3. Chúng tôi đã sử dụng Athena làm bộ xử lý truy vấn vì nó dễ dàng không quản lý cơ sở hạ tầng truy vấn của chúng tôi. Sau này, nếu chúng tôi cảm thấy mình cần thêm thứ gì đó, chúng tôi có thể sử dụng Redshift Spectrum hoặc Amazon EMR.

Kết luận

Các nhóm Amazon Devices đã phát hiện ra giá trị quan trọng bằng cách chuyển sang kiến ​​trúc hồ dữ liệu bằng AWS Glue, cho phép nhiều bên liên quan trong kinh doanh toàn cầu nhập dữ liệu theo những cách hiệu quả hơn. Điều này cho phép các nhóm tạo kế hoạch tối ưu để đặt hàng thiết bị bằng cách phân tích các bộ dữ liệu khác nhau trong thời gian gần như thực với logic kinh doanh phù hợp để giải quyết các vấn đề về chuỗi cung ứng, nhu cầu và dự báo.

Từ góc độ hoạt động, khoản đầu tư đã bắt đầu được đền đáp:

  • Nó đã chuẩn hóa các cơ chế nhập, lưu trữ và truy xuất của chúng tôi, giúp tiết kiệm thời gian triển khai. Trước khi triển khai hệ thống này, một bộ dữ liệu mất 1 tháng để tích hợp. Do kiến ​​trúc mới của chúng tôi, chúng tôi đã có thể tích hợp 15 bộ dữ liệu mới trong vòng chưa đầy 2 tháng, giúp cải thiện sự nhanh nhẹn của chúng tôi lên 70%.
  • Nó đã loại bỏ các tắc nghẽn về quy mô, tạo ra một hệ thống đồng nhất có thể nhanh chóng mở rộng quy mô lên hàng nghìn lần chạy.
  • Giải pháp đã thêm xác thực chất lượng dữ liệu và lược đồ trước khi chấp nhận bất kỳ thông tin đầu vào nào và từ chối chúng nếu phát hiện vi phạm chất lượng dữ liệu.
  • Nó giúp dễ dàng truy xuất bộ dữ liệu đồng thời hỗ trợ các mô phỏng trong tương lai và các trường hợp sử dụng của người kiểm tra lại yêu cầu đầu vào được phiên bản. Điều này sẽ làm cho việc khởi chạy và thử nghiệm các mô hình trở nên đơn giản hơn.
  • Giải pháp đã tạo ra một cơ sở hạ tầng chung có thể dễ dàng mở rộng cho các nhóm khác trên toàn bộ DIAL gặp sự cố tương tự với các trường hợp sử dụng nhập, lưu trữ và truy xuất dữ liệu.
  • Chi phí hoạt động của chúng tôi đã giảm gần 90%.
  • Hồ dữ liệu này có thể được các nhà khoa học dữ liệu và kỹ sư của chúng tôi truy cập một cách hiệu quả để thực hiện các phân tích khác và có cách tiếp cận dự đoán như một cơ hội trong tương lai để tạo các kế hoạch chính xác cho các đơn đặt hàng.

Các bước trong bài đăng này có thể giúp bạn lên kế hoạch xây dựng một chiến lược dữ liệu hiện đại tương tự bằng cách sử dụng các dịch vụ do AWS quản lý để nhập dữ liệu từ các nguồn khác nhau, tự động tạo danh mục siêu dữ liệu, chia sẻ dữ liệu liền mạch giữa kho dữ liệu và kho dữ liệu, đồng thời tạo cảnh báo trong sự kiện của một lỗi quy trình công việc dữ liệu phối hợp.


Giới thiệu về tác giả

avinash_kolluriAvinash Kolluri là Kiến trúc sư giải pháp cấp cao tại AWS. Anh ấy làm việc trên Amazon Alexa và Thiết bị để xây dựng kiến ​​trúc và thiết kế các giải pháp phân tán hiện đại. Niềm đam mê của anh ấy là xây dựng các giải pháp tiết kiệm chi phí và có khả năng mở rộng cao trên AWS. Khi rảnh rỗi, anh ấy thích nấu các công thức nấu ăn kết hợp và đi du lịch.

vipulVipul Verma là Kỹ sư phần mềm cao cấp tại Amazon.com. Anh ấy đã làm việc cho Amazon từ năm 2015, giải quyết những thách thức trong thế giới thực thông qua công nghệ tác động trực tiếp và cải thiện cuộc sống của khách hàng Amazon. Trong thời gian rảnh rỗi, anh ấy thích đi bộ đường dài.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?