Bài viết này tập trung vào cách thiết kế kiến trúc AWS có hiệu năng cao, có khả năng mở rộng và phù hợp với từng loại workload. Nội dung bao gồm các giải pháp lưu trữ như Amazon S3, Amazon EBS, Amazon EFS và Amazon FSx; các giải pháp điện toán như Amazon EC2, AWS Lambda, Amazon ECS và Amazon EKS; cũng như cách lựa chọn tài nguyên phù hợp dựa trên CPU, bộ nhớ, lưu trữ và mạng.
Bên cạnh đó, bài viết cũng trình bày cách thiết kế cơ sở dữ liệu hiệu năng cao với read replica, Multi-AZ, Amazon RDS, Amazon Aurora, Amazon DynamoDB, Amazon Redshift và Amazon ElastiCache. Phần cuối đi vào kiến trúc mạng hiệu năng cao, chiến lược cân bằng tải, data lake, streaming dữ liệu, truyền dữ liệu, trực quan hóa dữ liệu và chuyển đổi định dạng dữ liệu như từ CSV sang Parquet.
Nói ngắn gọn, đây là phần giúp bạn chọn đúng “đồ nghề” AWS để hệ thống chạy nhanh, mở rộng tốt và không bị hụt hơi khi dữ liệu hoặc lượng người dùng tăng lên.
Mục lục
- Xác định các giải pháp lưu trữ hiệu năng cao và/hoặc có khả năng mở rộng
- Thiết kế các giải pháp điện toán hiệu năng cao và co giãn
- Xác định các giải pháp cơ sở dữ liệu hiệu năng cao
- Xác định kiến trúc mạng hiệu năng cao và/hoặc có khả năng mở rộng
- Xác định các giải pháp nạp và chuyển đổi dữ liệu hiệu năng cao
3.1. Xác định các giải pháp lưu trữ hiệu năng cao và/hoặc có khả năng mở rộng
Xác định các dịch vụ và cấu hình lưu trữ đáp ứng nhu cầu hiệu năng
AWS cung cấp nhiều dịch vụ lưu trữ khác nhau, mỗi dịch vụ có các đặc điểm hiệu năng riêng. Việc chọn đúng dịch vụ và cấu hình phụ thuộc vào nhu cầu cụ thể của ứng dụng, chẳng hạn như:
- Thông lượng: Lượng dữ liệu có thể được đọc hoặc ghi mỗi giây.
- IOPS (Số thao tác đầu vào/đầu ra mỗi giây): Số lượng thao tác đọc hoặc ghi có thể được thực hiện mỗi giây.
- Độ trễ: Thời gian cần để hoàn thành một thao tác đọc hoặc ghi.
Dưới đây là một số dịch vụ lưu trữ AWS quan trọng và các điểm cần cân nhắc về hiệu năng:
Amazon S3 (Simple Storage Service): S3 là dịch vụ lưu trữ đối tượng cung cấp độ bền, tính sẵn sàng và khả năng mở rộng cao. Dịch vụ này phù hợp với nhiều trường hợp sử dụng, bao gồm lưu trữ bản sao lưu, tệp phương tiện và dữ liệu ứng dụng.
S3 cung cấp nhiều lớp lưu trữ khác nhau, mỗi lớp có đặc điểm hiệu năng và chi phí riêng. Ví dụ, S3 Standard cung cấp hiệu năng cao cho dữ liệu được truy cập thường xuyên, trong khi S3 Glacier được thiết kế cho lưu trữ lâu dài. Nói dễ hiểu, dữ liệu nào cần dùng thường xuyên thì để nơi dễ lấy, còn dữ liệu “cất kho” thì để nơi tiết kiệm hơn.
Amazon EBS (Elastic Block Storage): EBS cung cấp các volume lưu trữ khối có thể gắn vào các phiên bản EC2. EBS volume cung cấp nhiều tùy chọn hiệu năng khác nhau, bao gồm:
- gp3 (General Purpose SSD): Cung cấp sự cân bằng giữa giá và hiệu năng cho nhiều loại khối lượng công việc.
- io2 Block Express (Provisioned IOPS SSD): Cung cấp hiệu năng cao nhất với IOPS ổn định và độ trễ thấp, phù hợp với các ứng dụng quan trọng.
- st1 (Throughput Optimized HDD): Cung cấp thông lượng cao cho dữ liệu được truy cập thường xuyên với các thao tác I/O tuần tự lớn.
- sc1 (Cold HDD): Cung cấp lưu trữ có chi phí thấp nhất cho dữ liệu ít được truy cập.
Amazon EFS (Elastic File System): EFS cung cấp một hệ thống tệp có khả năng mở rộng và co giãn, có thể được chia sẻ bởi nhiều phiên bản EC2. EFS phù hợp với các ứng dụng cần lưu trữ tệp dùng chung, chẳng hạn như máy chủ web và hệ thống quản lý nội dung.
EFS cung cấp các chế độ hiệu năng khác nhau, bao gồm General Purpose và Max I/O, để đáp ứng các nhu cầu hiệu năng khác nhau.
Amazon FSx: Dịch vụ này cung cấp các hệ thống tệp được quản lý hoàn toàn, tương thích với các hệ thống tệp phổ biến như Windows File Server và Lustre. FSx cung cấp hiệu năng cao và khả năng mở rộng cho các khối lượng công việc đòi hỏi cao.
Xác định các dịch vụ lưu trữ có thể mở rộng để đáp ứng nhu cầu trong tương lai
Khả năng mở rộng là một khía cạnh rất quan trọng của lưu trữ đám mây. Các dịch vụ lưu trữ AWS được thiết kế để mở rộng nhằm đáp ứng nhu cầu lưu trữ dữ liệu ngày càng tăng.
Dưới đây là cách các dịch vụ khác nhau xử lý khả năng mở rộng:
Amazon S3: S3 vốn có khả năng mở rộng rất cao. Bạn có thể lưu trữ gần như không giới hạn lượng dữ liệu trong S3, và dịch vụ này tự động mở rộng để xử lý lưu lượng truy cập cũng như khối lượng dữ liệu tăng lên.
Amazon EBS: EBS volume có thể được thay đổi kích thước và thay đổi đặc điểm hiệu năng khi cần. Bạn cũng có thể sử dụng cấu hình RAID để tăng hiệu năng và tính sẵn sàng.
Amazon EFS: EFS tự động mở rộng dung lượng lưu trữ khi bạn thêm hoặc xóa tệp. Dịch vụ này cũng cung cấp khả năng tăng thông lượng khi cần.
Amazon FSx: Hệ thống tệp FSx có thể được mở rộng về dung lượng lưu trữ và thông lượng.
Các điểm cân nhắc chính về hiệu năng và khả năng mở rộng
- Đặc điểm khối lượng công việc: Hiểu các mẫu đọc/ghi của ứng dụng, yêu cầu thông lượng và nhu cầu IOPS.
- Mẫu truy cập dữ liệu: Xác định tần suất dữ liệu được truy cập và chọn lớp lưu trữ hoặc dịch vụ phù hợp.
- Kiểm thử hiệu năng: Thực hiện kiểm thử hiệu năng để xác nhận cấu hình lưu trữ đáp ứng yêu cầu của ứng dụng.
- Giám sát: Giám sát hiệu năng và mức sử dụng lưu trữ để xác định các điểm nghẽn tiềm ẩn và điều chỉnh cấu hình khi cần.
3.2. Thiết kế các giải pháp điện toán hiệu năng cao và co giãn
Tách rời các khối lượng công việc để các thành phần có thể mở rộng độc lập
Tách rời là một nguyên tắc kiến trúc quan trọng để xây dựng các ứng dụng có khả năng mở rộng và khả năng phục hồi. Nguyên tắc này liên quan đến việc tách các thành phần khác nhau của ứng dụng để chúng có thể hoạt động và mở rộng độc lập.
Cách tiếp cận này mang lại một số lợi ích:
Khả năng mở rộng được cải thiện: Bằng cách tách rời các thành phần, bạn có thể mở rộng từng thành phần dựa trên nhu cầu cụ thể của nó. Ví dụ, nếu ứng dụng gặp đợt tăng đột biến về yêu cầu người dùng, bạn có thể mở rộng các máy chủ web mà không cần mở rộng các máy chủ cơ sở dữ liệu.
Tăng khả năng phục hồi: Nếu một thành phần bị lỗi, các thành phần khác vẫn có thể tiếp tục hoạt động. Điều này cải thiện tính sẵn sàng tổng thể và khả năng chịu lỗi của ứng dụng.
Dễ bảo trì hơn: Các thành phần được tách rời sẽ dễ bảo trì và cập nhật hơn, vì thay đổi ở một thành phần ít có khả năng ảnh hưởng đến các thành phần khác.
Dưới đây là một số kỹ thuật phổ biến để tách rời khối lượng công việc trong AWS:
Hàng đợi tin nhắn: Các dịch vụ như Amazon SQS (Simple Queue Service) và Amazon MQ cho phép bạn tách rời các thành phần bằng cách sử dụng tin nhắn để giao tiếp giữa chúng. Điều này cho phép giao tiếp bất đồng bộ, trong đó các thành phần không cần chờ nhau hoàn thành tác vụ.
Kiến trúc hướng sự kiện: Các dịch vụ như Amazon SNS (Simple Notification Service) và Amazon EventBridge cho phép bạn xây dựng các ứng dụng phản ứng với sự kiện. Khi một sự kiện xảy ra, thông báo sẽ được gửi đến các thành phần quan tâm, sau đó các thành phần này có thể thực hiện các hành động cần thiết.
API Gateway: Amazon API Gateway cho phép bạn tạo, phát hành và quản lý API đóng vai trò là cửa trước cho các ứng dụng của bạn. Điều này tách rời phần frontend của ứng dụng khỏi các dịch vụ backend.
Nói vui một chút, tách rời giống như chia việc trong một nhóm tốt: ai làm phần nấy, người này bận thì người khác không nhất thiết phải đứng hình theo.
Xác định các chỉ số và điều kiện để thực hiện hành động mở rộng
Auto Scaling là một tính năng quan trọng trong AWS, cho phép bạn tự động điều chỉnh số lượng tài nguyên điện toán dựa trên nhu cầu. Để sử dụng Auto Scaling hiệu quả, bạn cần xác định đúng các chỉ số và điều kiện để kích hoạt hành động mở rộng.
Dưới đây là một số khái niệm quan trọng:
Chỉ số: Đây là các chỉ báo hiệu năng mà bạn giám sát để xác định khi nào cần mở rộng tài nguyên. Các chỉ số phổ biến bao gồm mức sử dụng CPU, mức sử dụng bộ nhớ, lưu lượng mạng và số lượng yêu cầu.
Điều kiện: Đây là các ngưỡng bạn đặt cho chỉ số để kích hoạt hành động mở rộng. Ví dụ, bạn có thể đặt điều kiện mở rộng ra ngoài, tức thêm phiên bản, khi mức sử dụng CPU trung bình của các máy chủ web vượt quá 70%.
Chính sách mở rộng: Các chính sách này xác định cách Auto Scaling phản hồi với thay đổi trong chỉ số. Bạn có thể sử dụng nhiều loại chính sách mở rộng khác nhau, chẳng hạn như mở rộng theo dõi mục tiêu để duy trì một giá trị chỉ số cụ thể, mở rộng theo bước để điều chỉnh dung lượng dựa trên thay đổi của chỉ số, và mở rộng theo lịch để mở rộng dựa trên lịch trình.
Dưới đây là một số dịch vụ AWS mà bạn có thể sử dụng cho Auto Scaling:
Amazon EC2 Auto Scaling: Dịch vụ này cho phép bạn tự động mở rộng số lượng phiên bản EC2 trong ứng dụng.
Application Load Balancer: Application Load Balancer có thể tự động phân phối lưu lượng truy cập qua nhiều phiên bản EC2 và hỗ trợ mở rộng các phiên bản đó khi cần.
AWS Lambda: Lambda tự động mở rộng các hàm của bạn dựa trên số lượng yêu cầu đến.
Bằng cách sử dụng hiệu quả các dịch vụ và kỹ thuật này, bạn có thể thiết kế các giải pháp điện toán hiệu năng cao và co giãn, có thể xử lý các khối lượng công việc thay đổi một cách hiệu quả và tiết kiệm chi phí.
Các điểm chính cần ghi nhớ
- Tách rời là điều thiết yếu để xây dựng các ứng dụng có khả năng mở rộng và khả năng phục hồi.
- Auto Scaling cho phép bạn tự động điều chỉnh tài nguyên điện toán dựa trên nhu cầu.
- Xác định đúng chỉ số và điều kiện là yếu tố rất quan trọng để Auto Scaling hoạt động hiệu quả.
Lựa chọn các tùy chọn và tính năng điện toán phù hợp
AWS cung cấp nhiều dịch vụ điện toán, mỗi dịch vụ có điểm mạnh và trường hợp sử dụng riêng. Việc chọn đúng dịch vụ là rất quan trọng để đạt hiệu năng cao và tính co giãn.
Một số tùy chọn điện toán chính bao gồm:
Amazon EC2 (Elastic Compute Cloud): EC2 cung cấp máy chủ ảo trên đám mây, với rất nhiều loại phiên bản được tối ưu cho các khối lượng công việc khác nhau. Các loại phiên bản khác nhau về CPU, bộ nhớ, lưu trữ và dung lượng mạng.
Các nhóm phiên bản EC2 phổ biến gồm:
- General Purpose: Cân bằng tài nguyên điện toán, bộ nhớ và mạng. Phù hợp với nhiều loại khối lượng công việc, chẳng hạn như máy chủ web và cơ sở dữ liệu nhỏ đến trung bình.
- Compute Optimized: Cung cấp hiệu năng CPU cao. Lý tưởng cho các ứng dụng cần nhiều điện toán, chẳng hạn như xử lý theo lô, chuyển mã phương tiện và điện toán hiệu năng cao.
- Memory Optimized: Có dung lượng bộ nhớ lớn. Phù hợp với các ứng dụng cần nhiều bộ nhớ, chẳng hạn như cơ sở dữ liệu trong bộ nhớ, bộ nhớ đệm và phân tích dữ liệu lớn thời gian thực.
- Storage Optimized: Cung cấp thông lượng đĩa và IOPS cao. Lý tưởng cho các ứng dụng yêu cầu truy cập tốc độ cao vào các tập dữ liệu lớn, chẳng hạn như cơ sở dữ liệu NoSQL và kho dữ liệu.
- Accelerated Computing: Sử dụng bộ tăng tốc phần cứng như GPU hoặc FPGA để tăng tốc các khối lượng công việc cụ thể. Phù hợp với dựng hình đồ họa, học máy và mã hóa video.
AWS Lambda: Lambda là dịch vụ điện toán phi máy chủ cho phép bạn chạy mã mà không cần cung cấp hoặc quản lý máy chủ. Lambda tự động mở rộng theo nhu cầu, khiến dịch vụ này phù hợp với các ứng dụng hướng sự kiện và microservice.
Amazon ECS (Elastic Container Service): ECS là dịch vụ điều phối container cho phép bạn chạy và quản lý Docker container trên AWS. ECS phù hợp với các ứng dụng được xây dựng theo kiến trúc microservice.
Amazon EKS (Elastic Kubernetes Service): EKS là dịch vụ Kubernetes được quản lý, giúp dễ dàng chạy Kubernetes trên AWS. EKS phù hợp với các tổ chức đã sử dụng Kubernetes và muốn tận dụng hạ tầng AWS.
Lựa chọn loại và kích thước tài nguyên phù hợp
Sau khi chọn dịch vụ điện toán phù hợp, bạn cần chọn đúng loại và kích thước tài nguyên để đáp ứng yêu cầu của ứng dụng.
Việc này bao gồm cân nhắc các yếu tố như:
- CPU: Năng lực xử lý mà ứng dụng yêu cầu.
- Bộ nhớ: Lượng RAM cần thiết để chạy ứng dụng hiệu quả.
- Lưu trữ: Dung lượng và loại lưu trữ cần thiết để lưu dữ liệu của ứng dụng.
- Mạng: Yêu cầu về băng thông mạng và độ trễ của ứng dụng.
Ví dụ, khi sử dụng EC2, bạn sẽ chọn loại phiên bản cung cấp sự cân bằng phù hợp giữa CPU, bộ nhớ, lưu trữ và mạng cho khối lượng công việc. Khi sử dụng Lambda, bạn sẽ cấu hình lượng bộ nhớ được cấp cho hàm, điều này cũng quyết định lượng CPU và băng thông mạng khả dụng.
Các điểm cân nhắc chính khi thiết kế giải pháp điện toán hiệu năng cao và co giãn
- Khả năng mở rộng: Thiết kế ứng dụng để tự động mở rộng theo thay đổi về nhu cầu. Điều này có thể đạt được bằng cách sử dụng các dịch vụ như Auto Scaling cho EC2 và khả năng tự động mở rộng của Lambda.
- Hiệu năng: Chọn đúng tùy chọn điện toán và kích thước tài nguyên để đáp ứng yêu cầu hiệu năng của ứng dụng. Cân nhắc các yếu tố như CPU, bộ nhớ, lưu trữ và mạng.
- Hiệu quả chi phí: Tối ưu chi phí điện toán bằng cách chọn đúng mô hình giá, ví dụ như On-Demand, Reserved hoặc Spot, và định cỡ tài nguyên phù hợp.
- Giám sát: Giám sát hiệu năng của tài nguyên điện toán để xác định và xử lý mọi điểm nghẽn hoặc sự cố.
3.3. Xác định các giải pháp cơ sở dữ liệu hiệu năng cao
Cấu hình read replica để đáp ứng yêu cầu kinh doanh
Read replica là các bản sao của phiên bản cơ sở dữ liệu chính, được dùng để xử lý lưu lượng đọc. Điều này giúp cải thiện hiệu năng và tính sẵn sàng của cơ sở dữ liệu bằng cách giảm tải các thao tác đọc khỏi phiên bản chính.
Lợi ích của Read Replica
Tăng thông lượng đọc: Read replica có thể xử lý một phần đáng kể lưu lượng đọc, giúp phiên bản chính rảnh hơn để xử lý các thao tác ghi.
Cải thiện tính sẵn sàng: Nếu phiên bản chính bị lỗi, một read replica có thể được thăng cấp thành phiên bản chính mới, giúp giảm thiểu thời gian ngừng hoạt động.
Khôi phục sau thảm họa: Read replica có thể được đặt ở các Availability Zone (AZ) hoặc Region khác nhau, cung cấp khả năng khôi phục sau thảm họa.
Trường hợp sử dụng
- Các ứng dụng có lưu lượng đọc lớn, chẳng hạn như trang web thương mại điện tử và hệ thống quản lý nội dung.
- Báo cáo và phân tích, nơi cần truy vấn khối lượng dữ liệu lớn.
Các điểm cần cân nhắc
- Read replica là bất đồng bộ, nghĩa là có thể có độ trễ nhỏ giữa thời điểm dữ liệu được ghi vào phiên bản chính và thời điểm dữ liệu có sẵn trên read replica.
- Bạn có thể tạo nhiều read replica cho một phiên bản chính.
- Read replica cũng có thể có read replica riêng, tạo thành kiến trúc read replica nhiều tầng.
Thiết kế kiến trúc cơ sở dữ liệu
Thiết kế kiến trúc cơ sở dữ liệu hiệu quả bao gồm việc chọn đúng công nghệ cơ sở dữ liệu, cấu hình phù hợp và tích hợp với các dịch vụ AWS khác.
Các điểm cân nhắc chính
Loại và cấu trúc dữ liệu: Các công nghệ cơ sở dữ liệu khác nhau phù hợp với các loại dữ liệu khác nhau. Ví dụ, cơ sở dữ liệu quan hệ phù hợp với dữ liệu có cấu trúc, trong khi cơ sở dữ liệu NoSQL phù hợp với dữ liệu không có cấu trúc hoặc bán cấu trúc.
Đặc điểm khối lượng công việc: Hiểu tỷ lệ đọc/ghi, khối lượng dữ liệu và mẫu truy vấn là yếu tố rất quan trọng để chọn đúng cơ sở dữ liệu và cấu hình nó cho hiệu năng tối ưu.
Yêu cầu về khả năng mở rộng và tính sẵn sàng: Bạn cần cân nhắc cơ sở dữ liệu cần mở rộng như thế nào để xử lý khối lượng dữ liệu và lưu lượng ngày càng tăng, cũng như mức độ sẵn sàng và khả năng chịu lỗi cần thiết.
Các kiến trúc phổ biến
- Một phiên bản cơ sở dữ liệu duy nhất: Phù hợp với các ứng dụng nhỏ có lưu lượng thấp.
- Triển khai Multi-AZ: Cung cấp tính sẵn sàng cao bằng cách sao chép phiên bản cơ sở dữ liệu qua nhiều AZ.
- Read replica: Cải thiện hiệu năng đọc và tính sẵn sàng.
- Phân mảnh cơ sở dữ liệu: Phân phối dữ liệu qua nhiều phiên bản cơ sở dữ liệu để cải thiện khả năng mở rộng.
Xác định database engine phù hợp
AWS cung cấp nhiều database engine thông qua Amazon RDS (Relational Database Service) và các dịch vụ khác. Việc chọn đúng engine là yếu tố quan trọng để đạt hiệu năng tối ưu và đáp ứng các yêu cầu ứng dụng cụ thể.
MySQL: Đây là một cơ sở dữ liệu quan hệ mã nguồn mở phổ biến, nổi tiếng vì dễ sử dụng và có cộng đồng hỗ trợ mạnh. MySQL phù hợp với ứng dụng web, nền tảng thương mại điện tử và hệ thống quản lý nội dung.
PostgreSQL: Đây là một cơ sở dữ liệu quan hệ mã nguồn mở mạnh mẽ, nổi tiếng với các tính năng nâng cao, tuân thủ chuẩn SQL và tính toàn vẹn dữ liệu cao. PostgreSQL phù hợp với các ứng dụng yêu cầu giao dịch phức tạp, kho dữ liệu và dữ liệu không gian địa lý.
Các database engine khác
Amazon Aurora: Dịch vụ cơ sở dữ liệu quan hệ tương thích với MySQL và PostgreSQL, cung cấp hiệu năng và tính sẵn sàng tốt hơn so với MySQL và PostgreSQL tiêu chuẩn.
Oracle: Cơ sở dữ liệu quan hệ thương mại, nổi tiếng với các tính năng cấp doanh nghiệp và khả năng mở rộng.
Microsoft SQL Server: Cơ sở dữ liệu quan hệ thương mại của Microsoft, thường được sử dụng trong môi trường doanh nghiệp.
Amazon DynamoDB: Dịch vụ cơ sở dữ liệu NoSQL cung cấp hiệu năng và khả năng mở rộng cao cho các ứng dụng có lưu lượng lớn và yêu cầu độ trễ thấp.
Amazon Redshift: Dịch vụ kho dữ liệu được tối ưu cho phân tích dữ liệu quy mô lớn.
Chọn giữa MySQL và PostgreSQL
Dưới đây là so sánh nhanh để giúp bạn quyết định:
| Tiêu chí | MySQL | PostgreSQL |
|---|---|---|
| Dễ sử dụng | Dễ thiết lập và sử dụng hơn | Cấu hình phức tạp hơn |
| Hiệu năng | Thường nhanh hơn cho các truy vấn đọc đơn giản | Hiệu năng tốt hơn cho các truy vấn phức tạp |
| Tính năng | Ít tính năng nâng cao hơn | Nhiều tính năng và extension nâng cao hơn |
| Tính toàn vẹn dữ liệu | Kiểm tra tính toàn vẹn dữ liệu ít nghiêm ngặt hơn | Kiểm tra tính toàn vẹn dữ liệu nghiêm ngặt hơn |
| Khả năng mở rộng | Khả năng mở rộng tốt cho khối lượng công việc thiên về đọc | Khả năng mở rộng tốt khi được tinh chỉnh cẩn thận |
| Cộng đồng | Cộng đồng lớn và năng động | Cộng đồng mạnh và năng động |
Xác định loại cơ sở dữ liệu phù hợp
AWS cung cấp nhiều dịch vụ cơ sở dữ liệu, mỗi dịch vụ được thiết kế cho các trường hợp sử dụng khác nhau. Việc chọn đúng cơ sở dữ liệu là rất quan trọng để đạt hiệu năng cao và đáp ứng yêu cầu kinh doanh.
Dưới đây là một số điểm cân nhắc và ví dụ chính:
Cơ sở dữ liệu quan hệ
Các cơ sở dữ liệu này sử dụng schema có cấu trúc với bảng, hàng và cột, đồng thời thực thi các mối quan hệ giữa dữ liệu. Chúng phù hợp với các ứng dụng yêu cầu thuộc tính ACID (Atomicity, Consistency, Isolation, Durability), chẳng hạn như giao dịch tài chính và quản lý hàng tồn kho.
Amazon Aurora: Dịch vụ cơ sở dữ liệu quan hệ tương thích với MySQL và PostgreSQL, cung cấp hiệu năng cao, khả năng mở rộng và tính sẵn sàng. Đây là lựa chọn tốt cho các ứng dụng đòi hỏi cao cần các tính năng của cơ sở dữ liệu quan hệ truyền thống.
Amazon RDS (Relational Database Service): Hỗ trợ nhiều database engine khác nhau, bao gồm MySQL, PostgreSQL, MariaDB, Oracle, SQL Server và Amazon Aurora. Dịch vụ này đơn giản hóa các tác vụ quản lý cơ sở dữ liệu, chẳng hạn như vá lỗi, sao lưu và khôi phục.
Cơ sở dữ liệu NoSQL
Các cơ sở dữ liệu này sử dụng schema linh hoạt và được thiết kế cho khả năng mở rộng cũng như hiệu năng cao. Chúng phù hợp với các ứng dụng yêu cầu thông lượng cao và độ trễ thấp, chẳng hạn như ứng dụng web, ứng dụng di động và ứng dụng IoT.
Amazon DynamoDB: Dịch vụ cơ sở dữ liệu NoSQL được quản lý hoàn toàn, cung cấp hiệu năng nhanh và có thể dự đoán với khả năng mở rộng liền mạch. Đây là lựa chọn tốt cho các ứng dụng yêu cầu thông lượng đọc và ghi cao cùng độ trễ thấp.
Các cơ sở dữ liệu chuyên biệt khác
AWS cũng cung cấp các cơ sở dữ liệu chuyên biệt cho các trường hợp sử dụng cụ thể:
Amazon Redshift: Dịch vụ kho dữ liệu được thiết kế cho phân tích dữ liệu quy mô lớn và trí tuệ kinh doanh.
Amazon ElastiCache: Dịch vụ bộ nhớ đệm có thể cải thiện hiệu năng ứng dụng bằng cách lưu trữ dữ liệu được truy cập thường xuyên trong bộ nhớ.
Amazon Neptune: Dịch vụ cơ sở dữ liệu đồ thị giúp dễ dàng xây dựng và chạy các ứng dụng làm việc với các tập dữ liệu có mức độ kết nối cao.
Tích hợp bộ nhớ đệm để đáp ứng yêu cầu kinh doanh
Bộ nhớ đệm là kỹ thuật lưu trữ dữ liệu được truy cập thường xuyên trong một lớp lưu trữ tốc độ cao, gọi là cache, để giảm tải cho cơ sở dữ liệu bên dưới và cải thiện hiệu năng ứng dụng.
AWS cung cấp Amazon ElastiCache cho mục đích này. Dưới đây là cách có thể tích hợp bộ nhớ đệm:
Chiến lược cache
Read-Through Caching: Ứng dụng kiểm tra cache trước để tìm dữ liệu được yêu cầu. Nếu không tìm thấy dữ liệu, tức cache miss, ứng dụng truy xuất dữ liệu từ cơ sở dữ liệu, lưu dữ liệu vào cache, rồi trả về cho người dùng.
Write-Through Caching: Khi ứng dụng ghi dữ liệu, nó ghi đồng thời vào cả cache và cơ sở dữ liệu. Điều này bảo đảm cache luôn nhất quán với cơ sở dữ liệu.
Lazy Loading/Cache-Aside: Ứng dụng kiểm tra cache trước. Khi cache miss, ứng dụng lấy dữ liệu từ cơ sở dữ liệu, lưu vào cache và trả về. Các yêu cầu tiếp theo cho cùng dữ liệu sẽ được phục vụ từ cache.
Nói đơn giản, cache giống như để những món hay dùng ngay trên bàn làm việc, khỏi phải chạy xuống kho lấy lại nhiều lần.
Amazon ElastiCache
Amazon ElastiCache hỗ trợ hai caching engine:
Memcached: Hệ thống cache trong bộ nhớ đơn giản và nhanh, phù hợp để cache dữ liệu được truy cập thường xuyên, chẳng hạn như dữ liệu phiên và các mảnh trang web.
Redis: Kho dữ liệu trong bộ nhớ nâng cao, hỗ trợ nhiều cấu trúc dữ liệu khác nhau, chẳng hạn như danh sách, tập hợp và hash. Redis phù hợp với các kịch bản cache phức tạp hơn, chẳng hạn như bảng xếp hạng và phân tích thời gian thực.
Các điểm cân nhắc chính khi chọn cơ sở dữ liệu và triển khai cache
- Mô hình dữ liệu: Cân nhắc cấu trúc dữ liệu và các mối quan hệ giữa các phần tử dữ liệu.
- Yêu cầu về khả năng mở rộng và hiệu năng: Xác định thông lượng đọc và ghi dự kiến, yêu cầu độ trễ và khối lượng dữ liệu.
- Yêu cầu về tính nhất quán: Quyết định mức độ nhất quán dữ liệu mà ứng dụng yêu cầu.
- Chi phí: Đánh giá chi phí của các dịch vụ cơ sở dữ liệu và tùy chọn cache khác nhau.
3.4. Xác định kiến trúc mạng hiệu năng cao và/hoặc có khả năng mở rộng
Tạo topology mạng cho nhiều kiến trúc khác nhau, ví dụ: toàn cầu, hybrid, nhiều tầng
Kiến trúc toàn cầu
Kiến trúc toàn cầu là kiến trúc trải rộng trên nhiều AWS Region. Các điểm cân nhắc chính bao gồm:
Độ trễ: Giảm thiểu độ trễ cho người dùng trên toàn cầu là rất quan trọng. Các dịch vụ như Amazon Route 53 để định tuyến DNS dựa trên vị trí địa lý hoặc độ trễ, Amazon CloudFront để cache nội dung gần người dùng hơn, và Global Accelerator để định hướng lưu lượng đến endpoint tối ưu là các dịch vụ rất quan trọng.
Sao chép và đồng bộ dữ liệu: Cần có cơ chế để giữ dữ liệu nhất quán giữa các Region. Các dịch vụ như sao chép liên vùng của Amazon S3 và các tính năng sao chép cơ sở dữ liệu thường được sử dụng.
Khôi phục sau thảm họa: Các kiến trúc toàn cầu thường đóng vai trò là giải pháp khôi phục sau thảm họa cho nhau.
Kiến trúc hybrid
Kiến trúc hybrid kết hợp hạ tầng on-premises với AWS. Các điểm cân nhắc chính bao gồm:
Kết nối: Cần các kết nối bảo mật và băng thông cao. Các tùy chọn bao gồm AWS Direct Connect, tức kết nối chuyên dụng, và AWS VPN, tức kết nối được mã hóa qua internet.
Phân đoạn mạng: Phân đoạn mạng đúng cách giữa on-premises và AWS là điều rất quan trọng đối với bảo mật.
Quản lý nhất quán: Các công cụ và quy trình để quản lý cả tài nguyên on-premises và AWS là rất quan trọng.
Kiến trúc nhiều tầng, ví dụ: 3 tầng
Kiến trúc nhiều tầng chia ứng dụng thành các tầng logic, thường gồm tầng trình bày, tầng ứng dụng và tầng dữ liệu. Các điểm cân nhắc chính bao gồm:
Bảo mật: Mỗi tầng nên được cô lập bằng security group và Network ACL (NACL).
Khả năng mở rộng: Mỗi tầng nên có khả năng mở rộng độc lập.
Cân bằng tải: Phân phối lưu lượng qua nhiều phiên bản trong mỗi tầng giúp bảo đảm tính sẵn sàng và hiệu năng.
Xác định cấu hình mạng có thể mở rộng để đáp ứng nhu cầu trong tương lai
Tính co giãn: Thiết kế mạng có thể tự động mở rộng hoặc thu hẹp tài nguyên dựa trên nhu cầu. Điều này bao gồm sử dụng Auto Scaling group cho phiên bản EC2, Elastic Load Balancing để phân phối lưu lượng, và các dịch vụ như Amazon SQS và SNS để tách rời các thành phần.
Kích thước subnet: Sử dụng các khối CIDR cung cấp đủ địa chỉ IP cho tăng trưởng trong tương lai.
Tránh điểm lỗi đơn: Thiết kế các thành phần mạng dư thừa, ví dụ như nhiều Availability Zone hoặc nhiều kết nối VPN.
Tự động hóa: Sử dụng công cụ Infrastructure as Code (IaC) như AWS CloudFormation hoặc Terraform để tự động hóa việc cung cấp và cấu hình mạng.
Xác định vị trí đặt tài nguyên phù hợp để đáp ứng yêu cầu kinh doanh
Yêu cầu độ trễ: Đặt tài nguyên gần người dùng hoặc các hệ thống phụ thuộc khác để giảm thiểu độ trễ.
Yêu cầu về nơi lưu trú dữ liệu: Đặt dữ liệu ở các AWS Region cụ thể để tuân thủ yêu cầu pháp lý.
Tối ưu chi phí: Chọn các dịch vụ và Region AWS hiệu quả nhất về chi phí.
Tính sẵn sàng và khôi phục sau thảm họa: Phân phối tài nguyên qua nhiều Availability Zone hoặc Region để bảo đảm tính sẵn sàng cao và khả năng khôi phục sau thảm họa.
Chọn chiến lược cân bằng tải phù hợp
Application Load Balancer (ALB): Phù hợp nhất cho lưu lượng HTTP/HTTPS và định tuyến ở cấp ứng dụng, ví dụ như định tuyến dựa trên path hoặc host header.
Network Load Balancer (NLB): Phù hợp nhất cho lưu lượng TCP/UDP và các yêu cầu hiệu năng cao với độ trễ thấp. NLB hoạt động ở Layer 4, tức Transport Layer.
Classic Load Balancer (CLB): Đây là thế hệ load balancer cũ hơn. CLB vẫn còn khả dụng, nhưng nhìn chung ít được ưu tiên hơn ALB và NLB.
Global Accelerator: Cải thiện hiệu năng cho các ứng dụng toàn cầu bằng cách định tuyến lưu lượng qua backbone mạng toàn cầu của AWS.
3.5. Xác định các giải pháp nạp và chuyển đổi dữ liệu hiệu năng cao
Xây dựng và bảo mật data lake
Data lake là một kho lưu trữ tập trung, cho phép bạn lưu trữ dữ liệu có cấu trúc, bán cấu trúc và không có cấu trúc ở mọi quy mô.
AWS cung cấp một số dịch vụ để xây dựng và bảo mật data lake:
Amazon S3 (Simple Storage Service): S3 là nền tảng của hầu hết data lake trên AWS. Dịch vụ này cung cấp lưu trữ đối tượng có độ bền cao và khả năng mở rộng cao để lưu dữ liệu ở định dạng gốc.
AWS Lake Formation: Dịch vụ này đơn giản hóa quy trình xây dựng, bảo mật và quản lý data lake. Nó tự động hóa các tác vụ như khám phá dữ liệu, lập danh mục dữ liệu và kiểm soát truy cập chi tiết.
AWS Glue: Đây là dịch vụ trích xuất, chuyển đổi và tải (ETL) được quản lý hoàn toàn, giúp dễ dàng chuẩn bị và tải dữ liệu cho phân tích. Glue cung cấp data catalog, ETL job và crawler để tự động khám phá dữ liệu.
Bảo mật cho Data Lake
Bảo mật data lake bao gồm triển khai nhiều biện pháp bảo mật khác nhau, chẳng hạn như:
- Kiểm soát truy cập: Sử dụng IAM role và policy để kiểm soát ai có thể truy cập dữ liệu trong lake.
- Mã hóa: Mã hóa dữ liệu khi lưu trữ và khi truyền bằng mã hóa phía máy chủ của S3 hoặc mã hóa phía máy khách.
- Che dữ liệu và token hóa: Bảo vệ dữ liệu nhạy cảm bằng cách che dữ liệu hoặc token hóa dữ liệu.
- Kiểm toán: Ghi log và giám sát quyền truy cập vào dữ liệu trong lake.
Thiết kế kiến trúc streaming dữ liệu
Streaming dữ liệu liên quan đến việc xử lý dữ liệu theo thời gian thực khi dữ liệu được tạo ra. AWS cung cấp một số dịch vụ để xây dựng kiến trúc streaming dữ liệu:
Amazon Kinesis: Đây là một nhóm dịch vụ để xử lý dữ liệu streaming theo thời gian thực ở mọi quy mô. Nhóm này bao gồm:
- Kinesis Data Streams: Dùng để thu thập và lưu trữ các luồng dữ liệu.
- Kinesis Data Firehose: Dùng để tải dữ liệu streaming vào kho dữ liệu và công cụ phân tích.
- Kinesis Data Analytics: Dùng để xử lý dữ liệu streaming bằng ứng dụng SQL hoặc Java.
Amazon Managed Streaming for Apache Kafka (MSK): Đây là dịch vụ được quản lý hoàn toàn để chạy các cụm Apache Kafka trên AWS. Kafka là một nền tảng streaming phân tán mã nguồn mở phổ biến.
Thiết kế giải pháp truyền dữ liệu
Truyền dữ liệu vào và ra khỏi AWS một cách hiệu quả là điều rất quan trọng đối với nhiều ứng dụng dựa trên dữ liệu. AWS cung cấp một số dịch vụ để truyền dữ liệu:
AWS Snow Family
Nhóm dịch vụ này cung cấp các thiết bị vật lý để truyền lượng dữ liệu lớn vào và ra khỏi AWS. Nhóm này bao gồm:
- Snowcone: Một thiết bị nhỏ, bền chắc, dùng cho điện toán biên và truyền dữ liệu.
- Snowball Edge: Một thiết bị lớn hơn với nhiều dung lượng lưu trữ và khả năng điện toán hơn.
- Snowmobile: Dịch vụ truyền dữ liệu quy mô exabyte bằng xe tải.
AWS DataSync: Dịch vụ này đơn giản hóa và tự động hóa việc truyền dữ liệu giữa lưu trữ on-premises và các dịch vụ lưu trữ AWS.
AWS Transfer Family: Nhóm dịch vụ này cung cấp khả năng truyền tệp được quản lý bằng các giao thức như SFTP, FTPS và FTP.
Triển khai chiến lược trực quan hóa
Trực quan hóa dữ liệu là điều thiết yếu để hiểu các mẫu, xu hướng và insight. AWS cung cấp một số dịch vụ để trực quan hóa dữ liệu:
Amazon QuickSight: Đây là dịch vụ trí tuệ kinh doanh trên đám mây, cho phép bạn tạo dashboard và biểu đồ trực quan tương tác từ nhiều nguồn dữ liệu khác nhau.
Tích hợp với các công cụ trực quan hóa khác: Bạn cũng có thể tích hợp các dịch vụ dữ liệu AWS với các công cụ trực quan hóa phổ biến khác như Tableau, Power BI và Looker.
Các điểm cân nhắc chính để đạt hiệu năng cao
- Khả năng mở rộng: Thiết kế giải pháp để xử lý khối lượng và tốc độ dữ liệu ngày càng tăng.
- Tối ưu chi phí: Chọn các dịch vụ và cấu hình hiệu quả nhất về chi phí cho nhu cầu của bạn.
- Bảo mật: Triển khai các biện pháp bảo mật phù hợp để bảo vệ dữ liệu.
- Giám sát hiệu năng: Giám sát hiệu năng của các pipeline nạp và chuyển đổi dữ liệu để xác định và xử lý điểm nghẽn.
Lựa chọn tùy chọn điện toán phù hợp cho xử lý dữ liệu, ví dụ: Amazon EMR
Chọn đúng dịch vụ điện toán là điều rất quan trọng để xử lý dữ liệu hiệu quả. AWS cung cấp nhiều tùy chọn, nhưng Amazon EMR (Elastic MapReduce) đặc biệt phù hợp với xử lý dữ liệu quy mô lớn.
Amazon EMR: Dịch vụ được quản lý này đơn giản hóa việc chạy các framework dữ liệu lớn như Apache Hadoop, Spark, Hive và Presto. EMR cho phép bạn xử lý lượng dữ liệu khổng lồ bằng điện toán phân tán.
Các trường hợp sử dụng chính bao gồm:
- Phân tích log: Xử lý và phân tích các tệp log lớn từ máy chủ web, ứng dụng và các nguồn khác.
- Kho dữ liệu: Xây dựng và quản lý các kho dữ liệu lớn phục vụ trí tuệ kinh doanh và báo cáo.
- Học máy: Huấn luyện và triển khai mô hình học máy trên các tập dữ liệu lớn.
- Trích xuất, chuyển đổi, tải (ETL): Thực hiện các chuyển đổi dữ liệu phức tạp và tải dữ liệu vào kho dữ liệu hoặc các kho lưu trữ dữ liệu khác.
Khi chọn EMR, bạn cần cân nhắc
- Loại phiên bản: Chọn loại phiên bản EC2 phù hợp dựa trên yêu cầu khối lượng công việc, ví dụ như tối ưu bộ nhớ hoặc tối ưu điện toán.
- Kích thước cụm: Xác định số lượng node trong cụm EMR dựa trên khối lượng dữ liệu và nhu cầu xử lý.
- Bản phát hành EMR: Chọn phiên bản phát hành EMR phù hợp, bao gồm các phiên bản cụ thể của các framework dữ liệu lớn.
- Tùy chọn lưu trữ: Chọn tùy chọn lưu trữ phù hợp, chẳng hạn như Amazon S3 cho lưu trữ lâu dài và HDFS cho lưu trữ tạm thời trong cụm.
Các tùy chọn điện toán khác có thể cân nhắc
Các tùy chọn dưới đây thường ít phù hợp hơn EMR cho các chuyển đổi quy mô lớn, trừ khi các chuyển đổi tương đối đơn giản:
AWS Lambda: Điện toán phi máy chủ cho xử lý hướng sự kiện với các tập dữ liệu nhỏ hơn hoặc các chuyển đổi được kích hoạt.
AWS Glue: Dịch vụ ETL phi máy chủ, thường được sử dụng với data lake. Glue phù hợp cho khám phá schema và các chuyển đổi đơn giản hơn.
Amazon EC2: Phù hợp khi bạn cần kiểm soát tùy chỉnh hơn đối với môi trường xử lý, nhưng cũng đòi hỏi nhiều công sức quản lý hơn.
Lựa chọn cấu hình phù hợp cho quá trình nạp dữ liệu
Nạp dữ liệu hiệu quả là điều thiết yếu cho xử lý dữ liệu hiệu năng cao. Có nhiều yếu tố ảnh hưởng đến lựa chọn phương pháp nạp dữ liệu:
- Nguồn dữ liệu: Nguồn của dữ liệu, ví dụ như cơ sở dữ liệu, tệp log hoặc cảm biến, sẽ quyết định phương pháp nạp dữ liệu phù hợp.
- Khối lượng và tốc độ dữ liệu: Lượng dữ liệu và tốc độ dữ liệu được tạo ra sẽ ảnh hưởng đến việc chọn dịch vụ.
- Định dạng dữ liệu: Định dạng của dữ liệu, ví dụ như CSV, JSON hoặc Avro, sẽ ảnh hưởng đến yêu cầu xử lý.
Một số dịch vụ và cấu hình AWS quan trọng cho nạp dữ liệu bao gồm:
Amazon S3: Thường được dùng làm vùng đáp cho dữ liệu thô. Bạn có thể sử dụng nhiều phương pháp khác nhau để nạp dữ liệu vào S3, chẳng hạn như AWS CLI, SDK hoặc công cụ bên thứ ba.
AWS Kinesis: Dành cho nạp dữ liệu streaming theo thời gian thực. Kinesis Data Streams có thể nạp dữ liệu tốc độ cao từ nhiều nguồn khác nhau.
AWS Glue Crawlers: Tự động khám phá schema từ dữ liệu được lưu trong S3 hoặc các kho dữ liệu khác.
AWS DataSync: Dùng để truyền dữ liệu hiệu quả và bảo mật giữa lưu trữ on-premises và các dịch vụ lưu trữ AWS.
AWS Snow Family: Dùng để truyền lượng dữ liệu lớn ngoại tuyến.
Chuyển đổi dữ liệu giữa các định dạng, ví dụ: CSV sang Parquet
Chuyển đổi dữ liệu giữa các định dạng là một yêu cầu phổ biến trong xử lý dữ liệu. Các định dạng khác nhau có đặc điểm khác nhau về hiệu quả lưu trữ, hiệu năng truy vấn và sự phát triển schema.
CSV (Comma-Separated Values): Đây là định dạng đơn giản và được sử dụng rộng rãi, nhưng không hiệu quả lắm cho lưu trữ hoặc truy vấn các tập dữ liệu lớn.
Parquet: Đây là định dạng lưu trữ dạng cột được tối ưu cho truy vấn phân tích. Parquet mang lại mức tiết kiệm lưu trữ đáng kể và cải thiện hiệu năng truy vấn so với các định dạng theo hàng như CSV.
JSON (JavaScript Object Notation): Đây là định dạng bán cấu trúc, thường được dùng cho ứng dụng web và API.
Avro: Đây là định dạng theo hàng có hỗ trợ schema phong phú. Avro thường được sử dụng trong hệ sinh thái Hadoop.
Công cụ để chuyển đổi dữ liệu
Amazon EMR (Spark, Hive): Các framework này có thể thực hiện các chuyển đổi dữ liệu phức tạp, bao gồm chuyển đổi định dạng. Spark đặc biệt phù hợp với các chuyển đổi quy mô lớn.
AWS Glue: Có thể được sử dụng cho các chuyển đổi đơn giản hơn và chuyển đổi định dạng.
AWS Lambda: Phù hợp với các chuyển đổi quy mô nhỏ hơn hoặc chuyển đổi hướng sự kiện.
Chuyển đổi từ CSV sang Parquet là một tối ưu hóa phổ biến. Lưu trữ dạng cột của Parquet cho phép nén dữ liệu hiệu quả và truy xuất chọn lọc theo cột, từ đó giúp thời gian truy vấn nhanh hơn và chi phí lưu trữ thấp hơn. Nói vui một chút, CSV giống như cả lớp xếp hàng dài, còn Parquet thì đã chia nhóm gọn gàng, cần ai gọi đúng nhóm đó nên nhanh hơn nhiều.