Thiết kế kiến trúc hiệu năng cao trên AWS

1.1 Xác định storage services và configuration phù hợp với performance needs

AWS có nhiều storage services, mỗi service phù hợp với một kiểu workload khác nhau. Khi chọn storage, hãy nhìn vào throughput, IOPS và latency.

  • Throughput: Lượng data có thể read/write mỗi giây.
  • IOPS: Số read/write operations mỗi giây.
  • Latency: Thời gian hoàn thành một read/write operation.

Một số AWS storage services quan trọng:

Amazon S3: Object storage có durability, availability và scalability cao. Phù hợp cho backup, media files, application data và data lake.

S3 có nhiều storage classes. S3 Standard phù hợp với data truy cập thường xuyên, còn S3 Glacier phù hợp với long-term archive.

Amazon EBS: Block storage gắn với EC2 instance. EBS có nhiều volume types:

  • gp3: Cân bằng giữa cost và performance cho nhiều workload phổ biến.
  • io2 Block Express: IOPS cao, latency thấp, phù hợp với mission-critical applications.
  • st1: Throughput cao cho sequential I/O lớn.
  • sc1: Chi phí thấp cho data ít truy cập.

Amazon EFS: Scalable file system có thể share giữa nhiều EC2 instances. Phù hợp với web servers, CMS và shared file storage.

EFS có các performance modes như General PurposeMax I/O để phù hợp với workload khác nhau.

Amazon FSx: Managed file system cho Windows File Server, Lustre và các workload cần high performance file storage.

1.2 Xác định scalable storage services cho nhu cầu tương lai

Storage trên cloud cần scale theo data growth. AWS storage services được thiết kế để mở rộng theo nhu cầu.

Cách các services scale:

Amazon S3: Scale gần như không giới hạn và tự động xử lý data volume cũng như request traffic tăng lên.

Amazon EBS: Có thể resize volume và thay đổi performance khi cần. Có thể dùng RAID để tăng performance hoặc availability.

Amazon EFS: Tự động scale storage khi thêm hoặc xóa files, đồng thời hỗ trợ tăng throughput.

Amazon FSx: Có thể scale storage capacity và throughput theo nhu cầu workload.

1.3 Các điểm cần cân nhắc về performance và scalability

  • Workload characteristics: Hiểu read/write pattern, throughput và IOPS needs.
  • Data access pattern: Xác định data được truy cập thường xuyên hay ít truy cập để chọn storage class phù hợp.
  • Performance testing: Test để xác nhận storage configuration đáp ứng application requirements.
  • Monitoring: Theo dõi performance và usage để phát hiện bottleneck và điều chỉnh kịp thời.

2.1 Decouple workloads để các components scale độc lập

Decoupling là nguyên tắc quan trọng để xây dựng scalable và resilient applications. Thay vì để mọi component phụ thuộc chặt vào nhau, hãy tách chúng ra để mỗi phần có thể scale riêng.

Lợi ích chính:

Better scalability: Component nào cần thêm capacity thì scale component đó, không cần scale toàn bộ system.

Higher resilience: Nếu một component lỗi, các component khác vẫn có thể tiếp tục hoạt động.

Easier maintenance: Mỗi component có thể update, deploy hoặc troubleshoot độc lập hơn.

Một số kỹ thuật decoupling trên AWS:

Message queues: Amazon SQS và Amazon MQ giúp các components giao tiếp asynchronous, không cần chờ nhau xử lý xong.

Event-driven architecture: Amazon SNS và Amazon EventBridge giúp application phản ứng theo event.

API Gateway: Amazon API Gateway đóng vai trò front door cho API, giúp tách frontend khỏi backend services.

Hiểu đơn giản: decoupling giúp mỗi phần làm đúng việc của nó, không kéo cả hệ thống đứng hình khi một phần bị bận.

2.2 Xác định metrics và conditions cho scaling actions

Auto Scaling giúp tự động tăng hoặc giảm compute resources theo demand. Muốn Auto Scaling hiệu quả, bạn cần chọn đúng metrics, thresholds và scaling policies.

Các khái niệm chính:

Metrics: Chỉ số dùng để quyết định khi nào cần scale, ví dụ CPU utilization, memory usage, network traffic hoặc request count.

Conditions: Ngưỡng kích hoạt scaling action, ví dụ scale out khi CPU trung bình vượt 70%.

Scaling policies: Cách Auto Scaling phản ứng với metrics, ví dụ target tracking, step scaling hoặc scheduled scaling.

Một số AWS services hỗ trợ scaling:

Amazon EC2 Auto Scaling: Tự động tăng hoặc giảm số lượng EC2 instances.

Application Load Balancer: Phân phối traffic qua nhiều EC2 instances và hỗ trợ architecture có khả năng scale.

AWS Lambda: Tự động scale function theo số lượng requests hoặc events.

Khi kết hợp đúng Auto Scaling, Load Balancer và metrics, compute layer sẽ vừa high performance vừa cost-efficient hơn.

2.3 Các điểm chính cần ghi nhớ

  • Decoupling giúp application scale tốt hơn và resilient hơn.
  • Auto Scaling giúp compute resources tự điều chỉnh theo demand.
  • Metrics và conditions đúng là yếu tố quan trọng để scaling hoạt động hiệu quả.

2.4 Lựa chọn compute options và features phù hợp

AWS có nhiều compute services. Chọn đúng service giúp workload đạt performance, scalability và operational efficiency tốt hơn.

Một số compute options chính:

Amazon EC2: Virtual servers trên cloud. EC2 có nhiều instance families tối ưu cho CPU, memory, storage hoặc network.

Các EC2 instance families phổ biến:

  • General Purpose: Cân bằng CPU, memory và network. Phù hợp với web servers và small-to-medium databases.
  • Compute Optimized: CPU performance cao, phù hợp với batch processing, media transcoding và high-performance computing.
  • Memory Optimized: Memory lớn, phù hợp với in-memory database, caching và real-time analytics.
  • Storage Optimized: Disk throughput và IOPS cao, phù hợp với NoSQL database và data warehouse workloads.
  • Accelerated Computing: Dùng GPU hoặc FPGA cho machine learning, graphics rendering và video processing.

AWS Lambda: Serverless compute để chạy code mà không cần quản lý server. Phù hợp với event-driven applications và microservices.

Amazon ECS: Container orchestration service để chạy và quản lý Docker containers trên AWS.

Amazon EKS: Managed Kubernetes service, phù hợp với team đã dùng Kubernetes và muốn chạy trên AWS infrastructure.

2.5 Lựa chọn resource type và size phù hợp

Sau khi chọn compute service, bước tiếp theo là chọn đúng resource type và size cho workload.

Các yếu tố cần cân nhắc:

  • CPU: Năng lực xử lý mà application cần.
  • Memory: Lượng RAM cần để application chạy ổn định.
  • Storage: Dung lượng, IOPS và throughput cần thiết.
  • Network: Bandwidth và latency requirements.

Với EC2, bạn chọn instance type dựa trên CPU, memory, storage và network. Với Lambda, bạn cấu hình memory, đồng thời ảnh hưởng đến CPU và network capacity.

2.6 Các điểm cân nhắc khi thiết kế compute solution

  • Scalability: Thiết kế để application scale theo demand bằng EC2 Auto Scaling hoặc Lambda scaling.
  • Performance: Chọn compute option và resource size đúng với workload.
  • Cost efficiency: Dùng đúng pricing model như On-Demand, Reserved, Savings Plans hoặc Spot.
  • Monitoring: Theo dõi compute performance để phát hiện bottleneck và sự cố.

3.1 Cấu hình read replica để đáp ứng business requirements

Read replica là bản sao của primary database, dùng để xử lý read traffic. Cách này giúp giảm tải cho primary database và cải thiện read performance.

3.2 Lợi ích của Read Replica

Increase read throughput: Read replica xử lý read queries, để primary database tập trung hơn vào write operations.

Improve availability: Khi cần, read replica có thể được promote thành primary database mới.

Disaster recovery: Read replica có thể đặt ở AZ hoặc Region khác để hỗ trợ DR strategy.

3.3 Use cases

  • Read-heavy applications như e-commerce website hoặc CMS.
  • Reporting và analytics cần chạy queries trên lượng data lớn.

3.4 Các điểm cần cân nhắc

  • Read replica thường là asynchronous, nên có thể có replication lag.
  • Một primary database có thể có nhiều read replicas.
  • Read replica cũng có thể có read replica riêng trong một số architecture.

3.5 Thiết kế database architecture

Database architecture tốt bắt đầu từ việc chọn đúng database technology, configuration và cách tích hợp với các AWS services khác.

3.6 Các điểm cân nhắc chính

Data type và data structure: Relational database phù hợp với structured data, còn NoSQL phù hợp với semi-structured hoặc flexible schema.

Workload characteristics: Hiểu read/write ratio, data volume và query pattern để chọn database đúng.

Scalability và availability requirements: Xác định database cần scale ra sao và cần high availability ở mức nào.

3.7 Các architecture phổ biến

  • Single database instance: Phù hợp với application nhỏ, traffic thấp.
  • Multi-AZ deployment: Tăng high availability bằng cách replicate database qua nhiều AZ.
  • Read replica: Tăng read performance và hỗ trợ availability.
  • Database sharding: Chia data qua nhiều database instances để tăng scalability.

3.8 Xác định database engine phù hợp

AWS hỗ trợ nhiều database engines qua Amazon RDS và các database services khác. Chọn đúng engine giúp đạt performance và feature requirements tốt hơn.

MySQL: Relational database phổ biến, dễ dùng, phù hợp với web applications, e-commerce và CMS.

PostgreSQL: Relational database mạnh, hỗ trợ advanced features, SQL compliance và data integrity tốt. Phù hợp với complex transactions, analytics và geospatial data.

3.9 Các database engine khác

Amazon Aurora: MySQL/PostgreSQL-compatible relational database với performance và availability cao hơn bản standard.

Oracle: Enterprise relational database cho workload cần tính năng doanh nghiệp và scalability cao.

Microsoft SQL Server: Relational database phổ biến trong enterprise environment của Microsoft.

Amazon DynamoDB: Managed NoSQL database cho high-traffic applications cần low latency và scalability cao.

Amazon Redshift: Data warehouse service cho large-scale analytics.

3.10 Chọn giữa MySQL và PostgreSQL

Dưới đây là so sánh nhanh:

Tiêu chíMySQLPostgreSQL
Dễ sử dụngDễ setup và dùng hơnCấu hình linh hoạt nhưng phức tạp hơn
PerformanceTốt cho simple read queriesTốt cho complex queries
FeaturesĐơn giản hơnNhiều advanced features và extensions hơn
Data integrityÍt nghiêm ngặt hơnNghiêm ngặt hơn
ScalabilityTốt cho read-heavy workloadsTốt khi được tuning đúng cách
CommunityLớn và activeMạnh và active

3.11 Xác định database type phù hợp

Mỗi database service được thiết kế cho một use case khác nhau. Chọn đúng database type giúp application đạt performance và cost efficiency tốt hơn.

Một số nhóm database chính:

3.12 Relational database

Relational database dùng structured schema với table, row và column. Phù hợp với workload cần ACID, ví dụ financial transaction hoặc inventory management.

Amazon Aurora: Relational database tương thích MySQL/PostgreSQL, phù hợp với application cần high performance, scalability và availability.

Amazon RDS: Managed relational database service hỗ trợ MySQL, PostgreSQL, MariaDB, Oracle, SQL Server và Aurora. RDS đơn giản hóa patching, backup và recovery.

3.13 NoSQL database

NoSQL database có flexible schema, phù hợp với high-throughput, low-latency applications như web, mobile và IoT.

Amazon DynamoDB: Fully managed NoSQL database với predictable performance, seamless scaling và low latency.

3.14 Specialized databases

AWS cũng có specialized databases cho các use case cụ thể:

Amazon Redshift: Data warehouse cho large-scale analytics và business intelligence.

Amazon ElastiCache: In-memory caching service giúp giảm tải database và tăng application performance.

Amazon Neptune: Graph database cho highly connected data như recommendation, fraud detection hoặc knowledge graph.

3.15 Tích hợp cache để đáp ứng business requirements

Cache lưu data thường được truy cập trong high-speed storage layer, giúp giảm tải database và cải thiện response time.

AWS cung cấp Amazon ElastiCache cho caching. Một số caching strategies phổ biến:

3.16 Cache strategies

Read-Through Caching: Application kiểm tra cache trước. Nếu cache miss, lấy data từ database, lưu vào cache rồi trả về user.

Write-Through Caching: Khi ghi data, application ghi vào cả cache và database để giữ consistency.

Lazy Loading/Cache-Aside: Application chỉ load data vào cache khi có request và cache miss.

Nói đơn giản, cache giúp giữ data hay dùng ở gần application hơn, để không phải hỏi database quá nhiều lần.

3.17 Amazon ElastiCache

Amazon ElastiCache hỗ trợ hai caching engines:

Memcached: Simple in-memory cache, nhanh và phù hợp với session data hoặc page fragments.

Redis: Advanced in-memory data store, hỗ trợ nhiều data structures. Phù hợp với leaderboard, real-time analytics và caching phức tạp hơn.

3.18 Các điểm cân nhắc khi chọn database và cache

  • Data model: Hiểu cấu trúc data và quan hệ giữa các entities.
  • Scalability và performance: Xác định read/write throughput, latency và data volume.
  • Consistency requirements: Quyết định mức độ consistency mà application cần.
  • Cost: So sánh cost giữa các database services và caching options.

4.1 Tạo network topology cho global, hybrid và multi-tier architecture

4.2 Global architecture

Global architecture chạy trên nhiều AWS Regions để phục vụ users ở nhiều khu vực khác nhau.

Latency: Dùng Amazon Route 53, Amazon CloudFront và AWS Global Accelerator để đưa traffic đến endpoint tối ưu và giảm latency.

Data replication: Dùng S3 Cross-Region Replication hoặc database replication để đồng bộ data giữa Regions.

Disaster recovery: Multi-Region architecture có thể hỗ trợ DR khi một Region gặp sự cố.

4.3 Hybrid architecture

Hybrid architecture kết hợp on-premises infrastructure với AWS.

Connectivity: Dùng AWS Direct Connect cho dedicated connection hoặc AWS VPN cho encrypted connection qua internet.

Network segmentation: Tách rõ network giữa on-premises và AWS để tăng security.

Consistent management: Cần quy trình và tool để quản lý cả on-premises resources và AWS resources.

4.4 Multi-tier architecture, ví dụ: 3-tier

Multi-tier architecture chia application thành presentation layer, application layer và data layer.

Security: Cô lập từng layer bằng Security Group và NACL.

Scalability: Mỗi layer nên scale độc lập theo demand riêng.

Load balancing: Dùng load balancer để phân phối traffic qua nhiều instances và tăng availability.

4.5 Xác định scalable networking configuration cho tương lai

Elasticity: Thiết kế network hỗ trợ Auto Scaling group, Elastic Load Balancing, SQS và SNS để scale theo demand.

Subnet sizing: Chọn CIDR block đủ lớn để còn IP addresses cho future growth.

Avoid single point of failure: Dùng nhiều Availability Zones, nhiều VPN connections hoặc redundant network components.

Automation: Dùng Infrastructure as Code như AWS CloudFormation hoặc Terraform để provision và quản lý network nhất quán.

4.6 Xác định resource placement phù hợp với business requirements

Latency requirements: Đặt resources gần users hoặc dependent systems để giảm latency.

Data residency requirements: Chọn AWS Region phù hợp với yêu cầu pháp lý và compliance.

Cost optimization: Chọn Region và services có cost phù hợp với workload.

Availability và disaster recovery: Phân phối resources qua nhiều AZ hoặc Region để tăng availability và DR capability.

4.7 Chọn load balancing strategy phù hợp

Application Load Balancer (ALB): Phù hợp với HTTP/HTTPS traffic và routing theo path hoặc host header.

Network Load Balancer (NLB): Phù hợp với TCP/UDP traffic, high performance và low latency ở Layer 4.

Classic Load Balancer (CLB): Load balancer thế hệ cũ. Vẫn dùng được, nhưng thường nên ưu tiên ALB hoặc NLB.

Global Accelerator: Cải thiện global application performance bằng cách route traffic qua AWS global network backbone.

5.1 Xây dựng và bảo mật data lake

Data lake là centralized storage để lưu structured, semi-structured và unstructured data ở quy mô lớn.

Một số AWS services thường dùng cho data lake:

Amazon S3: Nền tảng phổ biến cho data lake trên AWS, dùng để lưu raw data với durability và scalability cao.

AWS Lake Formation: Giúp build, secure và manage data lake nhanh hơn với data discovery, cataloging và fine-grained access control.

AWS Glue: Managed ETL service, cung cấp Data Catalog, ETL jobs và crawlers để khám phá schema và chuẩn bị data cho analytics.

5.2 Bảo mật cho Data Lake

Data lake security thường gồm nhiều layer:

  • Access control: Dùng IAM role và policy để kiểm soát ai được truy cập data.
  • Encryption: Encrypt data at rest và in transit bằng S3 server-side encryption hoặc client-side encryption.
  • Data masking và tokenization: Bảo vệ sensitive data khi cần.
  • Auditing: Log và monitor data access trong data lake.

5.3 Thiết kế streaming data architecture

Streaming data architecture xử lý data gần real-time khi data được tạo ra.

Amazon Kinesis: Nhóm services cho real-time streaming data ở mọi quy mô, gồm:

  • Kinesis Data Streams: Thu thập và lưu trữ data streams.
  • Kinesis Data Firehose: Load streaming data vào storage hoặc analytics services.
  • Kinesis Data Analytics: Xử lý streaming data bằng SQL hoặc Java applications.

Amazon MSK: Managed service để chạy Apache Kafka clusters trên AWS.

5.4 Thiết kế data transfer solution

Data transfer vào và ra khỏi AWS cần được thiết kế theo data volume, speed, security và network constraints.

5.5 AWS Snow Family

AWS Snow Family dùng physical devices để transfer lượng data lớn vào hoặc ra khỏi AWS.

  • Snowcone: Thiết bị nhỏ, bền, dùng cho edge computing và data transfer.
  • Snowball Edge: Thiết bị lớn hơn, có storage và compute capacity cao hơn.
  • Snowmobile: Dịch vụ transfer data quy mô exabyte bằng xe tải chuyên dụng.

AWS DataSync: Tự động hóa data transfer giữa on-premises storage và AWS storage services.

AWS Transfer Family: Managed file transfer qua SFTP, FTPS và FTP.

5.6 Triển khai visualization strategy

Data visualization giúp biến data thành dashboards, charts và insights dễ hiểu hơn.

Amazon QuickSight: Cloud BI service để tạo interactive dashboards từ nhiều data sources.

Integration với tools khác: AWS data services cũng có thể tích hợp với Tableau, Power BI và Looker.

5.7 Các điểm cân nhắc để đạt high performance

  • Scalability: Thiết kế để xử lý data volume và velocity tăng dần.
  • Cost optimization: Chọn service và configuration phù hợp với nhu cầu thực tế.
  • Security: Bảo vệ data bằng access control, encryption và monitoring.
  • Performance monitoring: Theo dõi data pipelines để phát hiện bottlenecks.

5.8 Lựa chọn compute option cho data processing, ví dụ: Amazon EMR

Chọn đúng compute service rất quan trọng khi xử lý data ở quy mô lớn. Amazon EMR thường phù hợp với big data processing.

Amazon EMR: Managed service để chạy Apache Hadoop, Spark, Hive và Presto. EMR giúp xử lý large-scale data bằng distributed computing.

Use cases phổ biến:

  • Log analysis: Xử lý và phân tích log files lớn.
  • Data warehouse: Xây dựng data warehouse cho BI và reporting.
  • Machine learning: Train và deploy ML models trên large datasets.
  • ETL: Transform data phức tạp và load vào data warehouse hoặc data store khác.

5.9 Khi chọn EMR, bạn cần cân nhắc

  • Instance type: Chọn EC2 instance type phù hợp, ví dụ compute optimized hoặc memory optimized.
  • Cluster size: Xác định số nodes dựa trên data volume và processing needs.
  • EMR release: Chọn EMR version phù hợp với Hadoop, Spark, Hive hoặc Presto versions cần dùng.
  • Storage options: Dùng Amazon S3 cho long-term storage và HDFS cho temporary cluster storage khi cần.

5.10 Các compute options khác có thể cân nhắc

Các options dưới đây phù hợp với từng kiểu data processing khác nhau:

AWS Lambda: Serverless compute cho event-driven processing và small datasets.

AWS Glue: Serverless ETL service, phù hợp với data lake, schema discovery và transformation đơn giản đến trung bình.

Amazon EC2: Phù hợp khi bạn cần full control trên processing environment, nhưng cần tự quản lý nhiều hơn.

5.11 Lựa chọn configuration phù hợp cho data ingestion

Data ingestion hiệu quả phụ thuộc vào source, volume, velocity và data format.

  • Data source: Có thể là database, log files, application events hoặc IoT sensors.
  • Data volume và velocity: Quyết định nên dùng batch ingestion hay streaming ingestion.
  • Data format: CSV, JSON, Avro hoặc Parquet sẽ ảnh hưởng đến processing và storage design.

Một số AWS services thường dùng cho data ingestion:

Amazon S3: Thường dùng làm landing zone cho raw data. Có thể ingest qua AWS CLI, SDK hoặc third-party tools.

AWS Kinesis: Dùng cho real-time streaming ingestion với data tốc độ cao.

AWS Glue Crawlers: Tự động discover schema từ data trong S3 hoặc data stores khác.

AWS DataSync: Transfer data hiệu quả và bảo mật giữa on-premises storage và AWS.

AWS Snow Family: Dùng cho offline transfer khi data volume quá lớn để transfer qua network.

5.12 Chuyển đổi data format, ví dụ: CSV sang Parquet

Data format ảnh hưởng trực tiếp đến storage efficiency, query performance và schema evolution.

CSV: Đơn giản và phổ biến, nhưng không tối ưu cho large-scale analytics.

Parquet: Columnar format, tối ưu cho analytics queries, compression và selective column reads.

JSON: Semi-structured format, phổ biến với web applications và APIs.

Avro: Row-based format có schema support tốt, thường dùng trong Hadoop ecosystem.

5.13 Tools để data transformation

Amazon EMR (Spark, Hive): Phù hợp với complex và large-scale transformations.

AWS Glue: Phù hợp với ETL jobs và format conversion đơn giản đến trung bình.

AWS Lambda: Phù hợp với small-scale hoặc event-driven transformations.

CSV sang Parquet là tối ưu hóa rất phổ biến. Parquet giúp giảm storage cost, tăng query performance và phù hợp hơn cho analytics workload.