1. Trang chủ
  2. » Luận Văn - Báo Cáo

Building serverless data processing pipeline and api pipeline on amazon web services

58 30 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Building Serverless Data Processing Pipeline And Api Pipeline On Amazon Web Services
Người hướng dẫn TS. Nguyễn Thị Uyên Nhi
Trường học Trường Đại Học Kinh Tế
Chuyên ngành Hệ Thống Thông Tin Quản Lý
Thể loại Báo Cáo Thực Tập Nghề Nghiệp
Thành phố Bình Định
Định dạng
Số trang 58
Dung lượng 3,53 MB

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN VỀ TMA SOLUTIONS BÌNH ĐỊNH VÀ VỊ TRÍ (13)
    • 1.1. Giới thiệu về TMA Solutions Bình Định (13)
    • 1.2. Lịch sử hình thành và phát triển của TMA Solutions Bình Định (13)
    • 1.3. Vị trí thực tập (14)
      • 1.3.1. Tổng quan về Data Engineer (14)
      • 1.3.2. Các kỹ năng cơ bản của một kỹ sư dữ liệu (14)
      • 1.3.3. Con đường phát triển Data Engineer (15)
  • CHƯƠNG 2. CƠ SỞ LÝ THUYẾT (17)
    • 2.1. Tìm hiểu về Cloud Computing (17)
      • 2.1.1. Khái niệm (17)
      • 2.1.2. So sánh với On-premises (18)
    • 2.2. Amazon Web Services (0)
    • 2.3. Tìm hiểu Serverless (19)
    • 2.4. Ưu điểm của Serverless (20)
    • 2.5. Giới thiệu về đề tài thực hiện (20)
    • 2.6. Các Services sử dụng trong đề tài (21)
  • CHƯƠNG 3. TRIỂN KHAI ĐỀ TÀI (27)
    • 3.1. Data Processing Pipeline (27)
      • 3.1.1. Tạo bucket inputbucketex trong Amazon S3 (27)
      • 3.1.2. Tạo Lambda Function split (28)
      • 3.1.3. Tạo và cấu hình Outputbucketex (35)
      • 3.1.4. Tạo Glue Jobs ETL (38)
      • 3.1.5. Tạo bucket deltafilebucket (41)
      • 3.1.6. Amacon Glue Crawler (44)
      • 3.1.7. Amazon Athena (46)
    • 3.2. API Pipeline (47)
      • 3.2.1. Tạo Lambda Function để truy vấn dữ liệu (47)
      • 3.2.2. Tạo và cấu hình API Gateway (48)
    • 3.3. Tích hợp thêm Amazon Quicksight (52)
  • CHƯƠNG 4. KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI (55)
    • 4.1. Kết quả đạt được (55)
    • 4.2. Hướng phát triển của đề tài (55)
  • TÀI LIỆU THAM KHẢO (57)

Nội dung

TỔNG QUAN VỀ TMA SOLUTIONS BÌNH ĐỊNH VÀ VỊ TRÍ

Giới thiệu về TMA Solutions Bình Định

TMA Solutions Bình Định, một chi nhánh quan trọng của TMA Solutions - công ty phần mềm hàng đầu tại Việt Nam, tọa lạc tại thành phố Quy Nhơn, tỉnh Bình Định Đơn vị này đóng góp tích cực vào sự phát triển và thành công của TMA Solutions trong lĩnh vực công nghệ thông tin.

Lịch sử hình thành và phát triển của TMA Solutions Bình Định

2017: TMA quyết định đầu tư xây dựng Công viên sáng tạo TMA Bình Định (TMA Innovation Park) tại Thung Lũng Sáng Tạo Quy Nhơn

2018: Thành lập TMA Bình Định Khởi công xây dựng Công viên Sáng tạo TMA Bình Định (TMA Innovation Park – TIP)

2019: Đạt 70 kỹ sư Thành lập Nhóm Data Science Group Tổ chức Ngày hội Công nghệ tại ĐH Quy Nhơn

2020: Khai trương Công viên Sáng tạo TMA Bình Định Đạt 140 kỹ sư Khách hàng từ 6 nước (Mỹ, Úc, Pháp, Nhật Bản, Hàn Quốc, Singapore)

2021: Đạt 250 kỹ sư Khách hàng đến từ 15 quốc gia Hợp tác cùng gần 15 trường đại học khu vực miền Trung – Tây Nguyên

2022: Đạt mốc 500 nhân viên TMA chính thức trở thành Tập đoàn Công nghệ TMA với 3 công ty thành viên (TMA Innovation Park, TMA Solutions, TMA Innovation)

Năm 2023, tổ chức đã tăng cường số lượng thành viên lên 600, đồng thời tổ chức hàng chục hoạt động cộng đồng ý nghĩa như làm sạch biển Quy Hòa, dạy học miễn phí cho học sinh và hỗ trợ trẻ em mồ côi.

Vị trí thực tập

1.3.1 Tổng quan về Data Engineer

Kỹ sư dữ liệu đóng vai trò quan trọng trong việc xây dựng hệ thống, tổng hợp, lưu trữ và xuất dữ liệu cho doanh nghiệp Họ cần sử dụng kiến thức và kỹ năng để phân tích xu hướng dữ liệu, tìm ra giải pháp và cải thiện chất lượng nguồn dữ liệu Nhiệm vụ chính bao gồm xây dựng cơ sở hạ tầng dữ liệu phục vụ cho phân tích, vận hành và tích hợp các hệ thống Kỹ sư dữ liệu thiết kế các luồng dữ liệu (data pipeline) nhằm đáp ứng nhu cầu phát triển của Data Warehouse và chịu trách nhiệm quản lý hệ sinh thái dữ liệu trong doanh nghiệp.

Kỹ sư dữ liệu có nhiệm vụ xử lý, định dạng và tối ưu hóa dữ liệu trong Data Warehouse để đáp ứng các mục đích sử dụng khác nhau Họ đảm bảo rằng mọi dữ liệu được lưu trữ luôn sẵn sàng phục vụ cho công việc của các chuyên gia như Data Analyst và Data Scientist.

1.3.2 Các kỹ năng cơ bản của một kỹ sư dữ liệu

Data Modelling (mô hình hóa dữ liệu), Data Warehouse (kho dữ liệu), Data APIs (Restful API cho data) và Data Lake

Để thành công trong vai trò lập trình viên, việc thành thạo các ngôn ngữ lập trình là rất quan trọng Những ngôn ngữ phổ biến nhất bao gồm SQL, NoSQL, Python, Java, R và Scala, trong đó SQL và Python được sử dụng rộng rãi nhất.

Spark để xây dựng hệ thống data Tối thiểu mọi người phải hiểu được Spark vận hành như thế nào

Các công cụ Big Data: Kỹ sư dữ liệu không chỉ làm việc với dữ liệu thông thường

Kỹ sư dữ liệu có trách nhiệm quản lý và xử lý dữ liệu lớn, sử dụng các công cụ và công nghệ đang phát triển như Hadoop, MongoDB và Kafka Ngoài ra, việc hiểu biết về lưu trữ và điện toán đám mây là rất quan trọng, đặc biệt khi các công ty ngày càng chuyển sang sử dụng máy chủ cho các dịch vụ đám mây, với AWS (Amazon Web Services) và Google Cloud là những lựa chọn phổ biến.

Bảo mật dữ liệu là một yếu tố quan trọng trong quản lý thông tin, mặc dù một số công ty sở hữu đội ngũ chuyên trách, nhưng nhiều kỹ sư dữ liệu vẫn phải đảm nhiệm vai trò bảo vệ và lưu trữ dữ liệu một cách an toàn nhằm ngăn chặn việc mất mát hoặc đánh cắp thông tin.

1.3.3 Con đường phát triển Data Engineer

 Làm việc dưới sự hướng dẫn của các Data Engineer cao cấp

 Tham gia vào các nhiệm vụ cơ bản liên quan đến ETL (Extract, Transform, Load) và xử lý dữ liệu

 Xây dựng và duy trì các luồng dữ liệu đơn giản

 Làm việc với các công cụ và nền tảng dữ liệu cơ bản

 Có kinh nghiệm trong việc thiết kế và triển khai các quy trình ETL phức tạp

 Tham gia vào việc tối ưu hóa hiệu suất của các hệ thống xử lý dữ liệu

 Hiểu rõ về cơ sở dữ liệu phân tán và công nghệ lưu trữ dữ liệu lớn

 Có khả năng làm việc độc lập và giải quyết các vấn đề kỹ thuật

 Có khả năng thiết kế và triển khai toàn bộ hệ thống ETL và xử lý dữ liệu từ đầu đến cuối

 Làm việc với dữ liệu thời gian thực và hiểu rõ về các hệ thống streaming

 Có khả năng tối ưu hóa và mở rộng hệ thống xử lý dữ liệu cho việc đáp ứng nhu cầu tăng cao

 Làm việc chặt chẽ với các nhóm khác như Data Scientists và Data Analysts để đảm bảo dữ liệu đáp ứng yêu cầu phân tích

 Đứng đầu việc thiết kế kiến trúc dữ liệu và hệ thống xử lý dữ liệu cho toàn bộ tổ chức

 Có khả năng định hình chiến lược dữ liệu và đưa ra các quyết định liên quan đến công nghệ

 Lãnh đạo và hướng dẫn các Data Engineer trong nhóm

 Tham gia vào việc thảo luận chiến lược kỹ thuật với các bộ phận khác trong tổ chức

CƠ SỞ LÝ THUYẾT

Tìm hiểu về Cloud Computing

Điện toán đám mây, hay còn gọi là cloud computing, là mô hình cung cấp và quản lý tài nguyên máy tính qua Internet, bao gồm máy chủ, lưu trữ, mạng, dịch vụ và ứng dụng Thay vì sở hữu và quản lý trực tiếp tài nguyên tại trung tâm dữ liệu hoặc máy chủ cục bộ, người dùng và tổ chức có thể thuê hoặc sử dụng tài nguyên từ các nhà cung cấp dịch vụ đám mây.

Cloud computing mang lại sự linh hoạt và tiết kiệm chi phí cho người dùng, cho phép họ điều chỉnh tài nguyên theo nhu cầu thực tế Tài nguyên được cung cấp dưới dạng dịch vụ, giúp người dùng chỉ trả tiền cho những gì họ thực sự sử dụng, thay vì phải đầu tư lớn vào việc mua sắm và duy trì hạ tầng riêng.

Dịch vụ cloud computing cung cấp nhiều giải pháp như máy chủ ảo, lưu trữ và mạng, cùng với các dịch vụ cao cấp như cơ sở dữ liệu, tích hợp và phân tích dữ liệu Những nhà cung cấp dịch vụ đám mây nổi bật bao gồm AWS, Microsoft Azure và Google Cloud Platform.

2.1.2 So sánh với On-premises

Hình 2: So sánh Cloud Computing với On-premises

AWS (Amazon Web Services) là nền tảng điện toán đám mây hàng đầu toàn cầu, được Amazon.com phát triển và cung cấp Kể từ khi ra mắt vào năm 2006, AWS đã mang đến cho doanh nghiệp nhiều dịch vụ hữu ích như lưu trữ, tính toán, cơ sở dữ liệu và phân tích Với hơn 200 dịch vụ hiện có, AWS sở hữu hệ thống trung tâm dữ liệu trải dài khắp nơi trên thế giới, bao gồm Đông Mỹ, Tây Mỹ, Ireland, Brazil, Úc, Nhật Bản và Singapore, giúp đáp ứng nhu cầu ngày càng cao của người dùng.

Serverless là một kiến trúc ứng dụng trong công nghệ thông tin, cho phép các nhà phát triển tập trung vào việc viết mã và xây dựng ứng dụng mà không phải lo lắng về quản lý hạ tầng máy chủ truyền thống Mô hình này tối ưu hóa quy trình phát triển, giúp tiết kiệm thời gian và tài nguyên.

Mặc dù khái niệm "server-less" gợi ý rằng không cần máy chủ, thực tế là máy chủ vẫn tồn tại, nhưng việc quản lý chúng được ẩn đi và thực hiện bởi nhà cung cấp dịch vụ.

Dịch vụ đám mây có 8 cấp độ, giúp việc triển khai và mở rộng ứng dụng trở nên dễ dàng hơn Người dùng chỉ cần tập trung vào việc viết mã và cấu hình ứng dụng mà không cần lo lắng về hạ tầng.

Dịch vụ serverless cung cấp hàm chức năng (function-as-a-service) và điểm cuối (endpoints) cho API, cho phép hệ thống đám mây tự động triển khai và chạy các hàm này khi có yêu cầu, mà không cần người dùng phải quản lý máy chủ hay tài nguyên.

Mô hình serverless mang lại lợi ích về tiết kiệm thời gian và công sức trong việc triển khai ứng dụng, đồng thời giảm thiểu các vấn đề quản lý cơ sở hạ tầng máy chủ truyền thống Tuy nhiên, nó cũng tồn tại nhược điểm như khó kiểm soát chi phí trong môi trường serverless và hạn chế khả năng tùy chỉnh hệ thống do giới hạn từ nhà cung cấp dịch vụ đám mây.

Chi phí sử dụng dịch vụ là linh hoạt và phụ thuộc vào nhu cầu cá nhân, cho phép người dùng chỉ trả tiền cho những gì thực sự cần thiết Nhờ đó, người dùng có thể giảm chi phí từ 70% đến 90%, vì không phải chi trả cho các dịch vụ bổ sung không cần thiết.

Khả năng mở rộng của serverless vượt trội hơn so với điện toán đám mây truyền thống, vì nó tự động điều chỉnh lượng tài nguyên khi thực hiện các tác vụ yêu cầu nhiều tài nguyên, chỉ hoạt động khi có yêu cầu xử lý, giúp tối ưu hóa hiệu suất và chi phí.

2.5 Giới thiệu về đề tài thực hiện Đề tài em thực hiện có tiêu đề là “BUILDING SERVERLESS DATA PROCESSING PIPELINE AND API PIPELINE ON AWS” tập trung vào việc tạo ra một mô hình hiệu quả và linh hoạt cho việc xử lý dữ liệu và API cho phép các hệ thống khác tương tác với dữ liệu mà không cần quản lý máy chủ trực tiếp Trong thời đại số hóa hiện nay, việc xử lý và phân tích dữ liệu đang ngày càng trở nên quan trọng, và sự xuất hiện của mô hình đám mây cung cấp các giải pháp tiên tiến để đáp ứng nhu cầu này

Trong bài viết này, tôi sẽ phát triển một hệ thống đường ống xử lý dữ liệu phi máy chủ tự động sử dụng nền tảng AWS Hệ thống sẽ tận dụng các dịch vụ như AWS Lambda để triển khai các hàm xử lý dữ liệu và kích hoạt các dịch vụ khác Đồng thời, tôi sẽ kết hợp Amazon S3 với Delta để tối ưu hóa quy trình xử lý dữ liệu.

Hệ thống sử dụng Lake File để lưu trữ dữ liệu, kết hợp với Amazon Glue để xử lý và chuyển đổi dữ liệu sang định dạng Delta Amazon Glue ETL Crawler tạo metadata cho Delta Lake File lưu trữ trong Amazon S3, giúp truy vấn dữ liệu dễ dàng bằng Athena mà không cần tổ chức trong cơ sở dữ liệu hay kho dữ liệu truyền thống Để phân tích và trực quan hóa dữ liệu, người dùng có thể sử dụng Amazon Quicksight Mục tiêu của hệ thống là xây dựng quy trình xử lý linh hoạt, có khả năng mở rộng theo tải công việc và tự động điều chỉnh tài nguyên theo nhu cầu.

Bài viết này tập trung vào việc triển khai môi trường truy vấn dữ liệu hiệu quả bên cạnh xây dựng hệ thống xử lý dữ liệu phi máy chủ Sử dụng các công cụ như Amazon Athena, Amazon API Gateway và AWS Lambda, người dùng sẽ có khả năng truy vấn dữ liệu một cách dễ dàng và nhanh chóng mà không cần quản lý cơ sở hạ tầng phức tạp.

Tìm hiểu Serverless

Serverless là kiến trúc và mô hình triển khai ứng dụng trong công nghệ thông tin, cho phép các nhà phát triển tập trung vào việc viết mã và xây dựng ứng dụng mà không phải lo lắng về việc quản lý cơ sở hạ tầng máy chủ truyền thống.

Mặc dù thuật ngữ "server-less" gợi ý về việc không cần máy chủ, thực tế là máy chủ vẫn tồn tại; tuy nhiên, việc quản lý chúng được ẩn đi và thực hiện bởi nhà cung cấp dịch vụ.

Dịch vụ đám mây cung cấp 8 cấp độ khác nhau, giúp đơn giản hóa quá trình triển khai và mở rộng ứng dụng Người dùng chỉ cần tập trung vào việc viết mã và cấu hình ứng dụng mà không cần lo lắng về hạ tầng.

Dịch vụ serverless cung cấp hàm chức năng (function-as-a-service) và các điểm cuối (endpoints) cho API, cho phép triển khai và chạy tự động khi có yêu cầu mà không cần quản lý máy chủ hay tài nguyên.

Mô hình serverless mang lại lợi ích lớn trong việc tiết kiệm thời gian và công sức khi triển khai ứng dụng, đồng thời giảm thiểu các vấn đề quản lý hạ tầng máy chủ truyền thống Tuy nhiên, nó cũng tồn tại một số nhược điểm, chẳng hạn như khó khăn trong việc kiểm soát chi phí và hạn chế khả năng tùy chỉnh hệ thống do các giới hạn từ nhà cung cấp dịch vụ đám mây.

Ưu điểm của Serverless

Chi phí dịch vụ không cố định và thay đổi theo nhu cầu sử dụng, cho phép người dùng chỉ trả tiền cho những gì thực sự cần thiết Nhờ đó, người dùng có thể giảm chi phí từ 70% đến 90% bằng cách loại bỏ các dịch vụ bổ sung không cần thiết.

Khả năng mở rộng của serverless vượt trội so với điện toán đám mây truyền thống, vì nó tự động điều chỉnh tài nguyên khi cần thiết cho các tác vụ yêu cầu nhiều tài nguyên và chỉ hoạt động khi có yêu cầu xử lý.

Giới thiệu về đề tài thực hiện

Đề tài “XÂY DỰNG PIPELINE XỬ LÝ DỮ LIỆU VÀ PIPELINE API KHÔNG CÓ MÁY CHỦ TRÊN AWS” tập trung vào việc phát triển một mô hình linh hoạt và hiệu quả cho xử lý dữ liệu và API, cho phép các hệ thống tương tác với dữ liệu mà không cần quản lý máy chủ Trong bối cảnh số hóa hiện nay, việc xử lý và phân tích dữ liệu trở nên ngày càng quan trọng, và mô hình đám mây cung cấp các giải pháp tiên tiến để đáp ứng nhu cầu này.

Trong đề tài này, tôi sẽ xây dựng một hệ thống đường ống xử lý dữ liệu phi máy chủ tự động trên nền tảng AWS Hệ thống sẽ sử dụng dịch vụ AWS Lambda để triển khai các hàm xử lý và kích hoạt các dịch vụ khác, đồng thời kết hợp Amazon S3 với Delta để tối ưu hóa việc lưu trữ và xử lý dữ liệu.

Hệ thống sử dụng Lake File để lưu trữ dữ liệu và Amazon Glue để xử lý, chuyển đổi dữ liệu sang định dạng Delta Amazon Glue ETL Crawler được sử dụng để tạo metadata cho Delta Lake File lưu trữ trong Amazon S3, phục vụ cho việc truy vấn dữ liệu bằng Athena mà không cần phải tổ chức trong cơ sở dữ liệu hay kho dữ liệu có server base Để phân tích và trực quan hóa dữ liệu một cách sâu sắc, người dùng có thể sử dụng Amazon Quicksight Mục tiêu của hệ thống là xây dựng một quy trình xử lý linh hoạt, có khả năng mở rộng theo tải công việc và tự động điều chỉnh tài nguyên theo nhu cầu.

Đề tài không chỉ tập trung vào việc xây dựng hệ thống xử lý dữ liệu phi máy chủ mà còn triển khai môi trường truy vấn dữ liệu hiệu quả Sử dụng các công cụ như Amazon Athena, Amazon API Gateway và AWS Lambda, người dùng có thể dễ dàng và nhanh chóng truy vấn dữ liệu mà không cần quản lý cơ sở hạ tầng phức tạp.

Đề tài này kết hợp hệ thống xử lý dữ liệu phi máy chủ với môi trường truy vấn hiệu quả, nhằm tạo ra tiện ích trong việc phát triển ứng dụng dữ liệu Nó bao gồm các bước thu thập, xử lý, truy vấn và phân tích dữ liệu trong môi trường đám mây tiên tiến của AWS.

Các Services sử dụng trong đề tài

API Gateway là dịch vụ của AWS giúp xây dựng, quản lý và triển khai API một cách dễ dàng và an toàn Nó hoạt động như lớp trung gian giữa ứng dụng và các dịch vụ phía sau, cho phép các ứng dụng hoặc máy khách tương tác với chức năng và dịch vụ thông qua API.

Các tính năng và lợi ích chính của API Gateway bao gồm:

Tạo các API RESTful: API Gateway cho phép em tạo các API RESTful để truy cập vào các chức năng và tài nguyên của ứng dụng của em

Quản lý lưu lượng truy cập và phiên bản API là rất quan trọng để tối ưu hóa hiệu suất Việc này cho phép bạn kiểm soát lượng truy cập vào API, đồng thời cung cấp các phiên bản khác nhau của API để hỗ trợ và cải thiện quản lý.

API Gateway cung cấp bảo mật dữ liệu hiệu quả nhờ vào mã hóa SSL, đồng thời xác thực người dùng thông qua các phương pháp như API keys, AWS IAM và Cognito User Pools.

Quản lý và giám sát API trở nên dễ dàng hơn với API Gateway, cho phép bạn theo dõi, giám sát và gỡ lỗi thông qua các báo cáo, nhật ký và bảng điều khiển chi tiết.

API Gateway cho phép tích hợp dễ dàng với nhiều dịch vụ khác của AWS như Lambda, EC2, S3 và DynamoDB, tạo điều kiện thuận lợi cho việc xây dựng các ứng dụng phức tạp và linh hoạt.

API Gateway cung cấp thống kê chi tiết về lưu lượng và hiệu suất của API, giúp người dùng tối ưu hóa hiệu suất và nâng cao trải nghiệm sử dụng.

Amazon Lambda là dịch vụ tính toán đám mây của AWS, cho phép thực thi mã tự động mà không cần quản lý hạ tầng Với kiến trúc serverless, người dùng có thể tập trung vào việc viết mã và triển khai ứng dụng mà không lo về máy chủ Lambda hỗ trợ nhiều ngôn ngữ lập trình và có thể được kích hoạt qua các sự kiện như API Gateway, S3, và DynamoDB Dịch vụ này tính phí dựa trên thời gian chạy thực tế của mã, giúp tiết kiệm chi phí vận hành Tính linh hoạt, khả năng mở rộng và tích hợp dễ dàng khiến Lambda trở thành công cụ mạnh mẽ cho việc xây dựng ứng dụng hiệu quả trên nền tảng đám mây của AWS.

Amazon Athena là dịch vụ của AWS cho phép người dùng thực hiện truy vấn và phân tích dữ liệu một cách tương tác thông qua SQL Với Athena, bạn có thể truy vấn dữ liệu lưu trữ trên Amazon S3 mà không cần thiết lập cơ sở dữ liệu hay triển khai hạ tầng phức tạp.

Amazon Athena hỗ trợ nhiều định dạng dữ liệu như JSON, CSV, Parquet và Avro, cho phép người dùng phân tích dữ liệu từ nhiều nguồn khác nhau Với tính năng tự động cấu hình và mở rộng, Athena giúp truy vấn và phân tích dữ liệu nhanh chóng và hiệu quả, không cần lo lắng về quản lý cơ sở dữ liệu hay tối ưu hóa hiệu suất.

Dịch vụ này cung cấp công cụ hỗ trợ tạo và lưu trữ truy vấn, giám sát hiệu suất, và xem kết quả truy vấn qua bảng điều khiển AWS Athena tích hợp chặt chẽ với các dịch vụ khác của AWS, giúp người dùng dễ dàng tích hợp và phân tích dữ liệu từ nhiều nguồn khác nhau.

Amazon Glue là dịch vụ ETL (Extract, Transform, Load) của AWS, giúp người dùng xây dựng và quản lý các luồng công việc xử lý dữ liệu một cách dễ dàng và tự động Quá trình ETL đóng vai trò quan trọng trong việc chuẩn bị và tiền xử lý dữ liệu trước khi tiến hành phân tích và truy vấn.

Amazon Glue tự động phát hiện và xác định cấu trúc dữ liệu, đồng thời tạo ra các bước xử lý dữ liệu cần thiết để chuẩn bị cho phân tích Nó hỗ trợ nhiều nguồn dữ liệu phổ biến như Amazon S3, Amazon RDS, Amazon Redshift và nhiều nguồn khác, giúp tối ưu hóa quy trình xử lý dữ liệu.

Dịch vụ này tạo ra một môi trường trực quan và trực tuyến cho phép người dùng xem, chỉnh sửa và kiểm tra các bước xử lý dữ liệu trước khi triển khai Ngoài ra, Glue tự động mở rộng quy mô và điều chỉnh tài nguyên để phù hợp với lưu lượng công việc và yêu cầu xử lý.

Amazon Glue giúp giảm thiểu công sức và thời gian trong việc xây dựng và quản lý các luồng công việc ETL phức tạp, cho phép người dùng tập trung vào phân tích dữ liệu Dịch vụ này tối ưu hóa việc sử dụng dữ liệu, giúp đưa ra quyết định kinh doanh hiệu quả với thông tin chính xác.

Amazon S3 (Simple Storage Service) là dịch vụ lưu trữ đám mây do AWS cung cấp, cho phép người dùng lưu trữ và truy cập dữ liệu từ bất kỳ đâu trên Internet một cách dễ dàng và tiện lợi.

TRIỂN KHAI ĐỀ TÀI

Data Processing Pipeline

3.1.1 Tạo bucket inputbucketex trong Amazon S3

Em tạo bucket này mục đích để làm nơi lưu trữ tệp dữ liệu đầu vào, tệp chưa qua xử lý, tệp đang ở trạng thái thô nhất

To create a bucket in Amazon S3, navigate to the services section and name your bucket "inputbucketex." It is crucial to select the correct region, as your data will only reside in the chosen region Opt for Singapore to ensure low latency.

Lambda Function này được thiết kế để xử lý dữ liệu và tạo tệp mới từ dữ liệu đã xử lý, sau đó lưu vào outputbucketex Bên cạnh đó, hàm Lambda cũng kiểm tra sự tồn tại của tệp call.txt trong outputbucket; nếu tệp này chứa nội dung “hello world”, nó sẽ bị xóa, ngược lại, nếu không có, hàm sẽ tự động tạo tệp này Việc này được cấu hình trong mã nguồn nhằm tạo ra sự kiện kích hoạt cho bước tiếp theo trong pipeline.

Bước 1: Tạo Lambda Funtion có tên là split Chọn môi trường chạy là Python 3.7 Chọn kiến trúc là x86_64 đây là kiến trúc phổ biến tích hợp tốt

Bước 2: Trong phần cấp quyền, bạn có hai lựa chọn: sử dụng role đã tạo trong IAM hoặc tạo một role mới Để tương tác với các dịch vụ khác, bạn cần cấp chính sách hoặc quyền cho user, group hoặc role Bạn có thể cấp quyền cho role và sau đó gán nó cho user hoặc group.

Bước 3: Cấu hình sự kiện kích hoạt lambda split Ở đây em để sự kiện kích là khi có một file mới được upload lên bucketinputex

Để tối ưu hóa hiệu suất của hàm Lambda, bước 4 là tăng thời gian chạy tối đa, vì mặc định thời gian này chỉ là 3 giây Cần cấu hình thời gian chạy sao cho phù hợp với yêu cầu thực tế của hàm Lambda.

Để cấp quyền cho lambda function split tương tác với Amazon S3, bạn cần truy cập vào IAM Để tiết kiệm thời gian, có thể tạo sẵn một role với các quyền trong IAM và sau đó cấp lại cho các lambda function khác có quyền tương tự.

Để sử dụng thư viện Pandas trong AWS Lambda Function, bạn cần thêm layer thư viện nhằm giảm dung lượng tệp và tăng tốc độ xử lý AWS hỗ trợ nhanh chóng việc thêm layer cho Pandas, nhưng với các thư viện ít phổ biến, bạn phải tạo một tệp zip chứa các thư viện đã cài đặt để tải lên Lambda Function Việc này có thể phức tạp do môi trường Linux của Lambda, dẫn đến khả năng không tương thích Hơn nữa, giới hạn kích thước tệp zip tải lên là 250MB, do đó những thư viện lớn như pyspark không thể sử dụng.

In Step 7, write code in the Lambda Function to process the input data and create cleaned data in the output bucket If the data has already been processed, perform an upsert operation.

To test the functionality of a Lambda function, you need to use a JSON-formatted test file This file sends event data to the Lambda function, triggering its execution.

Để kiểm tra chi tiết cách thức hoạt động của mã, em sử dụng Amazon Cloud Watch, nơi ghi lại các file log và theo dõi lượng tài nguyên sử dụng Ngoài ra, em có thể thiết lập cảnh báo khi mức sử dụng vượt quá giới hạn đã định Sau khi mã hoạt động như mong muốn, em sẽ tiến hành triển khai.

3.1.3 Tạo và cấu hình Outputbucketex

Bucket này được sử dụng để lưu trữ dữ liệu đã được xử lý từ Lambda Function split Quy trình tạo bucket này tương tự như cách tạo inputbucketex.

Hình 18: 3.1.3 Tạo và cấu hình Lambda function convertDeltaLakeFile

Lambda Function convertDeltaLakeFile được sử dụng để kích hoạt Amazon Glue Jobs, một dịch vụ ETL trong Amazon Glue Do giới hạn kích thước tệp zip tải lên của Lambda Function là 250MB, nên không thể thêm thư viện pyspark để làm việc với Delta Lake, buộc phải sử dụng Amazon Glue Mặc dù Glue có chi phí cao hơn Lambda, nhưng hiện tại tôi đang trong thời gian dùng thử AWS, nên Lambda Function không bị tính phí Lambda convertDeltaLakeFile sẽ được kích hoạt khi có tệp mới hoặc hành động xóa tại bucket outputbucketex Nó sẽ kiểm tra bucket deltafilebucket xem có thư mục delta_score (đã được cấu hình trong Glue ETL Jobs createDelta) hay không; nếu chưa có, Lambda sẽ gọi ETL Jobs CreateDelta, còn nếu đã có, nó sẽ gọi ETL Jobs UpsertDelta để tạo bản ghi mới hoặc cập nhật bản ghi đã tồn tại, rất hữu ích trong trường hợp này.

24 hợp quản lý dữ liệu bán hàng có trạng thái đơn hàng thay đổi liên tục như đang xử lý, hoàn thành, đã hủy

Để cấu hình Lambda Function, đặt tên là convertDeltaLakeFile, chọn môi trường Python 3.7 Tiếp theo, chọn role đã có sẵn quyền cho Lambda Function split và thêm quyền truy cập vào Amazon Glue cho role này, vì hàm này sẽ tương tác với dịch vụ đó.

Hình 19: 3.1.4 Bước 1 Bước 2: Cấu hình sự kiện kích hoạt là khi có file mới hoặc file bị xóa có đuôi “.txt”

Hình 20: 3.1.4 Bước 2 Bước 3: Thực hiện cấu hình thời gian chạy tối đa

Bước 4: Viết code xử lý sau đó deploy lên

Step 1 involves creating a Jobs ETL CreateDelta, where AWS Glue ETL Jobs offers multiple creation methods, including Visual ETL and notebooks, with Visual ETL being the preferred choice in this instance.

Bước 2: Em sẽ tạo một role có tên là hoangle cho Amazon Glue để thực hiện lấy dữ liệu trong outputbucketex ra để chuyển đổi sang Delta

Bước 3: Cấu hình Glue ETL Job trong phần chi tiết job Chọn vai trò đã tạo ở trên và vì làm việc với delta lake, kiểu ETL Job được chọn là Spark cùng với lượng tài nguyên sử dụng phù hợp.

Bước 4: Tạo ETL Jobs CreOrUpdateDelta (UpsertDelta) bằng cách sử dụng notebook Spark Script Editor để có sự linh hoạt hơn so với giao diện trực quan Sau đó, cấu hình chọn vai trò đã thiết lập cho ETL Jobs, ngôn ngữ lập trình và lượng tài nguyên cần thiết.

API Pipeline

3.2.1 Tạo Lambda Function để truy vấn dữ liệu

Lambda Function get_data_api được thiết kế để khi được gọi từ Amazon API Gateway, nó sẽ thực hiện truy vấn dữ liệu từ Amazon Athena Sau đó, Lambda sẽ trả về dữ liệu dưới dạng JSON cho API Gateway, và cuối cùng gửi kết quả này đến client.

Bước 1: Tạo Lambda Function get_data_api Chọn môi trường chạy, chọn role đã được cấu hình quyền được phép truy cập vào athena để truy vấn dữ liệu

Hình 41: 3.2.1 Bước 1 Bước 2: Viết code để xử lý Code để trỏ tới Athena truy vấn dữ liệu

3.2.2 Tạo và cấu hình API Gateway

Bước 1: Em thực hiện xây dựng một Rest API có tên là MyAPI

Bước 2: Em tạo một cái Resource, trong cái resource này sẽ có các phương thức HTTP

In Step 3, configure an HTTP method for your newly created resource, specifically using the GET method Integrate this with the Lambda Function named get_api_data.

Sau khi cấu hình tích hợp với Lambda Function get_data_api Lập tức trong Lambda Function điều kiện kích hoạt là API Gateway

Hình 47: 3.2.2 Bước 3_2 Bước 4: Cấu hình cho phương thức get của resource vừa tạo Có thể dùng Test để kiểm tra API hoặc sử dụng Postman để kiểm tra

Sau khi hoàn tất các bước tạo API Gateway, bạn tiến hành triển khai (deploy) Lúc này, một cửa sổ sẽ xuất hiện để thực hiện việc deploy và tạo phiên bản cho API.

Tích hợp thêm Amazon Quicksight

Quicksight là phần mở rộng trong pipeline của em, em cần sử dụng quicksight khi muốn phân tích insight của tập dữ liệu

Bước đầu tiên trong việc sử dụng Amazon Quicksight là chọn nguồn dữ liệu đầu vào Amazon Quicksight hỗ trợ tích hợp với nhiều hệ thống lưu trữ dữ liệu khác nhau Trong trường hợp này, nguồn dữ liệu được chọn là tập dữ liệu đã được xử lý tại Amazon Athena.

Hình 51: Giao diện add dataset quicksight Bước 2: Chọn database và table cần thiết

Hình 52: Giao diện add database và table Bước 3: Edit hoặc xem qua tập dữ liệu trước khi phân tích

Trong bước 4, tôi phân tích các yếu tố ảnh hưởng đến điểm kiểm tra của học sinh, bao gồm giới tính, bữa ăn trưa, trình độ học vấn của cha mẹ và thời gian học hàng tuần.

Hình 54: giao diện trực quan

Bước 5: Thiết lập thời gian cập nhật dữ liệu hàng ngày trên Quicksight là rất quan trọng, đặc biệt với dữ liệu giao dịch thường xuyên như doanh số bán hàng trên sàn thương mại điện tử Mỗi ngày, tải file hóa đơn từ Shopee và chỉ cần đưa vào bucket inputbucketex Sau đó, dữ liệu sẽ được làm sạch, cập nhật, biến đổi và trực quan hóa một cách hiệu quả.

Hình 55: Đặt lịch tự động cập nhật

KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI

Kết quả đạt được

Trong đề tài "BUILDING SERVERLESS DATA PROCESSING PIPELINE AND

Chúng tôi đã đạt được những thành tựu ấn tượng trong việc xây dựng ống dẫn xử lý dữ liệu tự động và hiệu quả trên nền tảng AWS Bằng cách kết hợp và tối ưu hóa các dịch vụ như Amazon S3, AWS Lambda và Amazon Glue, chúng tôi đã tạo ra một giải pháp mạnh mẽ cho việc quản lý và xử lý dữ liệu.

Amazon Athena, Amazon QuickSight và Amazon API Gateway đã tạo ra một hệ thống mạnh mẽ và linh hoạt, giúp xử lý dữ liệu hiệu quả và cho phép các hệ thống khác tương tác với hệ thống dữ liệu thông qua API.

Một trong những kết quả đáng chú ý là việc tối ưu hoá chi phí thông qua sử dụng

AWS Lambda cho phép thực hiện các bước xử lý dữ liệu nhỏ mà không cần duy trì tài nguyên liên tục Việc sử dụng dịch vụ máy chủ này đã giúp tôi tiết kiệm đáng kể cả về nguồn lực và chi phí.

Việc chuyển đổi từ định dạng tệp thông thường sang Delta Lake thông qua Glue ETL Jobs đã nâng cao tính khả dụng và hiệu suất của dữ liệu, mang lại lợi ích rõ rệt cho quá trình quản lý và phân tích dữ liệu.

Lake cung cấp khả năng quản lý lịch sử thay đổi và tính năng ACID, giúp truy vấn và phân tích dữ liệu một cách chính xác và linh hoạt.

Bằng cách phát triển một ống dẫn xử lý dữ liệu tự động, tôi đã rút ngắn thời gian xử lý từ nhiều giờ xuống chỉ còn vài phút Điều này không chỉ nâng cao hiệu suất và tính khả dụng của hệ thống mà còn giảm thiểu sự can thiệp thủ công, tối ưu hóa quy trình làm việc một cách hiệu quả.

Hướng phát triển của đề tài

Em đã đạt nhiều thành tựu, nhưng vẫn còn nhiều cơ hội để tối ưu hóa và mở rộng hệ thống Tập trung vào tối ưu hiệu suất, tích hợp dịch vụ như Amazon RDS, DynamoDB, và Amazon Redshift, cũng như nâng cao bảo mật và tương tác giữa các phần của hệ thống, sẽ giúp em đáp ứng tốt hơn với nhu cầu ngày càng tăng về xử lý và truy vấn dữ liệu.

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Trong suốt kỳ thực tập, tôi đã tích lũy được nhiều kiến thức và kỹ năng quan trọng về công nghệ, đồng thời hiểu rõ quy trình làm việc thực tế tại công ty.

Apache Spark là một công cụ mạnh mẽ cho xử lý dữ liệu lớn, và tôi đã có cơ hội tìm hiểu về nó Tôi cũng đã học cách sử dụng Databricks để thực hành với Apache Spark, giúp nâng cao kỹ năng và hiểu biết của mình trong lĩnh vực này.

Delta Lake là một giải pháp quản lý dữ liệu mà tôi đã nghiên cứu và áp dụng, giúp nâng cao tính khả dụng, bảo mật và hiệu suất của dữ liệu Sự cải thiện này không chỉ tối ưu hóa quy trình xử lý dữ liệu mà còn tạo điều kiện thuận lợi cho các hoạt động phân tích và ra quyết định.

- Làm Quen với các dịch vụ AWS: Em đã làm quen với các dịch vụ của AWS như Amazon S3, Lambda, Glue, Athena và QuickSight, IAM, Cloud Watch, API Gateway

- Thời gian thực tập có hạn nên em cũng chỉ học được những phần kiến thức tổng quát chưa thực sự là đi sâu và nâng cao

- Các kỹ năng mềm của em cần được cải thiện Em cần cải thiện phong cách làm việc theo hướng chuyên nghiệp hơn

Khám phá sâu hơn về AWS: Tôi sẽ tìm kiếm cơ hội để thực hành và áp dụng thêm nhiều dịch vụ AWS khác nhằm xây dựng các hệ thống xử lý dữ liệu phân tán phức tạp.

Kỹ năng giao tiếp và thuyết trình là rất quan trọng trong môi trường làm việc Việc cải thiện khả năng hợp tác sẽ giúp tôi làm việc hiệu quả hơn Tôi cam kết phát triển những kỹ năng này để nâng cao hiệu suất công việc.

Để nâng cao kỹ năng lập trình Python và SQL, em cần cải thiện trình độ hiện tại của mình, vì kỹ năng này vẫn chỉ ở mức cơ bản Việc nâng cấp độ thông thạo là cần thiết để hoàn thiện các kỹ năng cần thiết cho công việc trong tương lai.

Ngày đăng: 12/12/2023, 19:43

w