blog-blueprint 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BlueprintTemplate/.editorconfig +17 -0
- package/BlueprintTemplate/.gitlab-ci.yml +34 -0
- package/BlueprintTemplate/DESIGN.txt +37 -0
- package/BlueprintTemplate/README.md +78 -0
- package/BlueprintTemplate/angular.json +101 -0
- package/BlueprintTemplate/gitignore +42 -0
- package/BlueprintTemplate/package.json +58 -0
- package/BlueprintTemplate/public/assets/lessons/aws/aws-overview.md +139 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-aurora-guide.md +181 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-dynamodb-guide.md +139 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-ec2-guide.md +152 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-eventbridge-guide.md +152 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-iam-guide.md +132 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-lambda-guide.md +129 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-rds-guide.md +193 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-s3-guide.md +158 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-sns-guide.md +163 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-sqs-guide.md +173 -0
- package/BlueprintTemplate/public/assets/lessons/core/aws-vpc-guide.md +145 -0
- package/BlueprintTemplate/public/assets/lessons/groups/aws-application-integration-overview.md +194 -0
- package/BlueprintTemplate/public/assets/lessons/groups/aws-compute-architecture-overview.md +187 -0
- package/BlueprintTemplate/public/assets/lessons/groups/aws-database-architecture.md +104 -0
- package/BlueprintTemplate/public/assets/lessons/groups/aws-networking-architecture.md +97 -0
- package/BlueprintTemplate/public/assets/lessons/groups/aws-security-architecture.md +88 -0
- package/BlueprintTemplate/public/assets/lessons/groups/aws-storage-architecture.md +116 -0
- package/BlueprintTemplate/public/assets/lessons/index.json +202 -0
- package/BlueprintTemplate/public/assets/lessons/theory/aws-caching-strategy.md +61 -0
- package/BlueprintTemplate/public/assets/lessons/theory/aws-disaster-recovery-strategies.md +117 -0
- package/BlueprintTemplate/public/assets/lessons/theory/aws-event-driven-architecture.md +77 -0
- package/BlueprintTemplate/public/assets/lessons/theory/aws-ha-ft-scalability.md +98 -0
- package/BlueprintTemplate/public/assets/lessons/theory/aws-hybrid-cloud.md +82 -0
- package/BlueprintTemplate/public/assets/lessons/theory/aws-microservices-vs-monolithic.md +77 -0
- package/BlueprintTemplate/public/assets/lessons/theory/aws-well-architected-framework.md +174 -0
- package/BlueprintTemplate/public/favicon.ico +0 -0
- package/BlueprintTemplate/public/robots.txt +23 -0
- package/BlueprintTemplate/public/sitemap.xml +11 -0
- package/BlueprintTemplate/src/app/app.config.server.ts +12 -0
- package/BlueprintTemplate/src/app/app.config.ts +16 -0
- package/BlueprintTemplate/src/app/app.html +36 -0
- package/BlueprintTemplate/src/app/app.routes.server.ts +8 -0
- package/BlueprintTemplate/src/app/app.routes.ts +11 -0
- package/BlueprintTemplate/src/app/app.scss +71 -0
- package/BlueprintTemplate/src/app/app.ts +50 -0
- package/BlueprintTemplate/src/app/core/models/lesson.model.ts +8 -0
- package/BlueprintTemplate/src/app/core/services/lesson.service.ts +46 -0
- package/BlueprintTemplate/src/app/core/services/seo.service.ts +68 -0
- package/BlueprintTemplate/src/app/features/about/about.html +14 -0
- package/BlueprintTemplate/src/app/features/about/about.scss +4 -0
- package/BlueprintTemplate/src/app/features/about/about.ts +23 -0
- package/BlueprintTemplate/src/app/features/lesson-detail/lesson-detail.html +4 -0
- package/BlueprintTemplate/src/app/features/lesson-detail/lesson-detail.scss +0 -0
- package/BlueprintTemplate/src/app/features/lesson-detail/lesson-detail.ts +55 -0
- package/BlueprintTemplate/src/app/features/lesson-list/lesson-list.html +13 -0
- package/BlueprintTemplate/src/app/features/lesson-list/lesson-list.scss +0 -0
- package/BlueprintTemplate/src/app/features/lesson-list/lesson-list.ts +59 -0
- package/BlueprintTemplate/src/app/shared/facades/event-abstract.facade.ts +18 -0
- package/BlueprintTemplate/src/app/shared/facades/pages.facade.ts +55 -0
- package/BlueprintTemplate/src/app/shared/utils/common.utils.ts +3 -0
- package/BlueprintTemplate/src/index.html +35 -0
- package/BlueprintTemplate/src/main.server.ts.bak +7 -0
- package/BlueprintTemplate/src/main.ts +6 -0
- package/BlueprintTemplate/src/server.ts.bak +68 -0
- package/BlueprintTemplate/src/styles.scss +36 -0
- package/BlueprintTemplate/tsconfig.app.json +17 -0
- package/BlueprintTemplate/tsconfig.json +34 -0
- package/README.md +22 -0
- package/create.js +92 -0
- package/package.json +21 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# AWS Lambda: Hướng dẫn toàn diện về serverless functions
|
|
2
|
+
|
|
3
|
+
**AWS Lambda** là dịch vụ điện toán **serverless** (không cần quản lý máy chủ), cho phép bạn chạy code mà không cần quản lý hạ tầng. Bạn chỉ cần viết hàm (function), upload lên Lambda, và Lambda sẽ lo việc chạy code khi có sự kiện kích hoạt.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Khái niệm và phân loại
|
|
8
|
+
|
|
9
|
+
- **Khái niệm**: Lambda là dịch vụ "Function as a Service" (FaaS) chạy code dựa trên sự kiện.
|
|
10
|
+
- **Phân loại**:
|
|
11
|
+
- Lambda là dịch vụ FaaS trên AWS.
|
|
12
|
+
- Các nền tảng tương tự: Azure Functions, Google Cloud Functions.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 2. Thành phần chính
|
|
17
|
+
|
|
18
|
+
- **Function**: Đoạn mã bạn muốn chạy (Python, Node.js, Java, Go, v.v.).
|
|
19
|
+
- **Event Source**: Nguồn sự kiện kích hoạt hàm (API Gateway, S3, DynamoDB, SNS, SQS...).
|
|
20
|
+
- **Execution Role (IAM)**: Quyền truy cập tài nguyên AWS cho Lambda.
|
|
21
|
+
- **Environment Variables**: Biến môi trường cấu hình cho hàm.
|
|
22
|
+
- **Layers**: Thư viện và dependencies chia sẻ giữa nhiều hàm.
|
|
23
|
+
- **Concurrency**: Số lượng instance hàm Lambda có thể chạy song song.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 3. Mục đích sử dụng
|
|
28
|
+
|
|
29
|
+
### Dùng để
|
|
30
|
+
- Chạy các đoạn code ngắn, xử lý sự kiện (event-driven) mà không cần quản lý server.
|
|
31
|
+
|
|
32
|
+
### Giải quyết vấn đề
|
|
33
|
+
- Loại bỏ gánh nặng vận hành máy chủ.
|
|
34
|
+
- Tự động mở rộng và tối ưu chi phí cho các tác vụ ngắn hạn hoặc không liên tục.
|
|
35
|
+
|
|
36
|
+
### Khi nào nên dùng
|
|
37
|
+
- Tác vụ **ngắn** và **stateless**.
|
|
38
|
+
- Xử lý sự kiện (event), ví dụ upload file, gửi email, xử lý dữ liệu nhỏ.
|
|
39
|
+
- Backend serverless tích hợp với API Gateway.
|
|
40
|
+
|
|
41
|
+
### Khi không nên dùng
|
|
42
|
+
- Tác vụ **chạy lâu** (timeout tối đa 15 phút).
|
|
43
|
+
- Ứng dụng cần lưu trạng thái liên tục (stateful).
|
|
44
|
+
- Cần kiểm soát hạ tầng phần cứng, mạng chi tiết.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 4. Ưu và nhược điểm
|
|
49
|
+
|
|
50
|
+
### Ưu điểm
|
|
51
|
+
- Không cần quản lý server.
|
|
52
|
+
- Tự động scale (mở rộng).
|
|
53
|
+
- Trả tiền theo số lần gọi và thời gian chạy (tiết kiệm chi phí).
|
|
54
|
+
- Tích hợp sâu với các dịch vụ AWS khác.
|
|
55
|
+
|
|
56
|
+
### Nhược điểm
|
|
57
|
+
- Giới hạn thời gian chạy (15 phút).
|
|
58
|
+
- Khó debug, log phức tạp hơn.
|
|
59
|
+
- Cold start (chậm lần chạy đầu).
|
|
60
|
+
- Giới hạn về tài nguyên (RAM, CPU).
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 5. So sánh với các dịch vụ tương tự
|
|
65
|
+
|
|
66
|
+
| Dịch vụ | Ưu điểm | Nhược điểm |
|
|
67
|
+
|---------|-------------------------------|-------------------------|
|
|
68
|
+
| **Lambda** | Serverless, tích hợp AWS tốt | Timeout 15 phút, cold start |
|
|
69
|
+
| **ECS Fargate** | Chạy container, chạy lâu, scale tốt | Cần cấu hình, chi phí cao hơn |
|
|
70
|
+
| **EC2** | Toàn quyền kiểm soát VM, mạnh mẽ | Phải quản lý, không serverless |
|
|
71
|
+
| **Google Cloud Functions / Azure Functions** | Tương tự Lambda | Tích hợp sâu với hệ sinh thái riêng |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 6. Luồng hoạt động
|
|
76
|
+
|
|
77
|
+
1. **Sự kiện xảy ra** (ví dụ upload file lên S3).
|
|
78
|
+
2. **Event source gửi sự kiện đến Lambda**.
|
|
79
|
+
3. **Lambda nhận sự kiện**, khởi tạo instance nếu cần.
|
|
80
|
+
4. **Lambda thực thi hàm** với input là payload từ sự kiện.
|
|
81
|
+
5. **Kết quả trả về** hoặc thực hiện tác vụ tiếp theo (ghi log, gửi dữ liệu, trigger dịch vụ khác).
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 7. Cách mở rộng (Scalability)
|
|
86
|
+
|
|
87
|
+
- Lambda **tự động mở rộng** theo số lượng sự kiện (concurrency).
|
|
88
|
+
- Có thể giới hạn số instance song song để kiểm soát chi phí/tài nguyên.
|
|
89
|
+
- AWS quản lý hoàn toàn việc scale, không cần cấu hình phức tạp.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 8. Cách bảo mật
|
|
94
|
+
|
|
95
|
+
- **IAM Role**: Chỉ cấp quyền cần thiết cho Lambda.
|
|
96
|
+
- **Environment variable encryption**: Mã hóa biến môi trường.
|
|
97
|
+
- **VPC Integration**: Chạy Lambda trong private VPC subnet.
|
|
98
|
+
- **Resource policy**: Kiểm soát nguồn sự kiện được phép trigger Lambda.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 9. Tích hợp với dịch vụ nào
|
|
103
|
+
|
|
104
|
+
- **AWS Services**: S3, DynamoDB, API Gateway, SNS, SQS, Kinesis, CloudWatch, Step Functions, Cognito, EventBridge...
|
|
105
|
+
- **Third-party API**: Gọi các API ngoài AWS qua HTTP(S).
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 10. Kiến trúc thực tế dùng Lambda
|
|
110
|
+
|
|
111
|
+
- **Serverless API backend**: API Gateway → Lambda → DynamoDB.
|
|
112
|
+
- **Xử lý file tự động**: S3 upload → Lambda → Resize ảnh → Lưu S3.
|
|
113
|
+
- **ETL pipeline**: Kinesis stream → Lambda → Lưu kết quả vào S3/DynamoDB.
|
|
114
|
+
- **Automation**: CloudWatch Events → Lambda → Quản lý tài nguyên AWS.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 11. Sự cố thường gặp và cách xử lý
|
|
119
|
+
|
|
120
|
+
- **Timeout**: Chia nhỏ tác vụ, tăng timeout, kiểm tra logic code.
|
|
121
|
+
- **Memory/CPU exceeded**: Tối ưu code, tăng cấu hình RAM.
|
|
122
|
+
- **Permission denied**: Kiểm tra IAM role, policy.
|
|
123
|
+
- **Cold start lâu**: Dùng provisioned concurrency, tối ưu package code.
|
|
124
|
+
- **Throttling**: Tăng limit concurrency hoặc điều chỉnh event source.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
> **Tóm lại:**
|
|
129
|
+
AWS Lambda là công cụ mạnh mẽ để xây dựng hệ thống serverless, tiết kiệm chi phí và vận hành. Hiểu rõ giới hạn và dùng đúng use case sẽ giúp phát huy tối đa hiệu quả.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Amazon RDS: Hướng dẫn toàn diện về cơ sở dữ liệu quản lý trên AWS
|
|
2
|
+
|
|
3
|
+
**Amazon RDS (Relational Database Service)** là dịch vụ giúp bạn chạy **database SQL mà không cần tự quản lý server**. AWS sẽ lo toàn bộ việc cài đặt DB, backup, patch, failover, monitoring. Bạn chỉ cần tập trung vào tạo schema, viết query và tối ưu ứng dụng.
|
|
4
|
+
|
|
5
|
+
RDS là cơ sở dữ liệu SQL “có người làm quản trị DB giúp bạn”.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Khái niệm và phân loại
|
|
10
|
+
|
|
11
|
+
- **Khái niệm**: Dịch vụ quản lý database SQL, giảm gánh nặng quản trị.
|
|
12
|
+
- **Phân loại / Engines**:
|
|
13
|
+
|
|
14
|
+
| Engine | Ý nghĩa |
|
|
15
|
+
|--------|---------|
|
|
16
|
+
| MySQL | Open-source SQL DB |
|
|
17
|
+
| PostgreSQL | SQL DB mạnh, mở rộng |
|
|
18
|
+
| MariaDB | MySQL fork |
|
|
19
|
+
| Oracle | Enterprise DB |
|
|
20
|
+
| SQL Server | Microsoft DB |
|
|
21
|
+
| Amazon Aurora | AWS SQL DB (MySQL/Postgres compatible) |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Thành phần chính
|
|
26
|
+
|
|
27
|
+
| Thành phần | Mô tả |
|
|
28
|
+
|------------|-------|
|
|
29
|
+
| DB Instance | Máy chủ DB chính |
|
|
30
|
+
| Multi-AZ Standby | Bản sao để failover |
|
|
31
|
+
| Read Replicas | Cụm DB đọc, giảm tải |
|
|
32
|
+
| Parameter Group | Cấu hình DB |
|
|
33
|
+
| Subnet Group | VPC subnets của DB |
|
|
34
|
+
| Option Group | Tính năng mở rộng (SQL Server Agent, Oracle packs…) |
|
|
35
|
+
| Backup + Snapshots | Sao lưu dữ liệu |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 3. Mục đích sử dụng và giải pháp kiến trúc
|
|
40
|
+
|
|
41
|
+
### Vấn đề khi tự quản lý database
|
|
42
|
+
- Cài DB khó, backup thủ công
|
|
43
|
+
- Failover phức tạp
|
|
44
|
+
- Scale đọc phức tạp
|
|
45
|
+
- Patch bảo mật tốn thời gian
|
|
46
|
+
|
|
47
|
+
### Giải pháp RDS mang lại
|
|
48
|
+
- **Managed service**: không quản lý server
|
|
49
|
+
- **Backup tự động**
|
|
50
|
+
- **Multi-AZ failover** 1–2 phút
|
|
51
|
+
- **Read Replicas** cho workload đọc nhiều
|
|
52
|
+
- **Tăng/giảm tài nguyên dễ dàng** (vertical scale)
|
|
53
|
+
- **Snapshot** để clone môi trường dev/test
|
|
54
|
+
|
|
55
|
+
> RDS = high availability + managed + dễ mở rộng cho đọc nhiều.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 4. Khi nào nên dùng / không nên dùng
|
|
60
|
+
|
|
61
|
+
### Nên dùng
|
|
62
|
+
- Ứng dụng cần SQL database
|
|
63
|
+
- Giảm gánh nặng quản trị
|
|
64
|
+
- Cần HA + backup tự động
|
|
65
|
+
- Workload đọc nhiều → dùng Read Replicas
|
|
66
|
+
- Không muốn downtime khi patch/backup
|
|
67
|
+
|
|
68
|
+
### Không nên dùng
|
|
69
|
+
- Cần truy cập OS, cài custom DB plugin → dùng EC2
|
|
70
|
+
- Scale ghi cực cao → dùng DynamoDB hoặc Aurora
|
|
71
|
+
- Workload distributed, global → DynamoDB/Global Tables
|
|
72
|
+
- Chi phí thấp, học tập/testing → dùng Aurora Serverless v2
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 5. Ưu điểm và nhược điểm
|
|
77
|
+
|
|
78
|
+
### Ưu điểm
|
|
79
|
+
- Managed, AWS xử lý hầu hết
|
|
80
|
+
- High Availability (Multi-AZ)
|
|
81
|
+
- Auto backups
|
|
82
|
+
- Read Replicas (scale-out đọc)
|
|
83
|
+
- Bảo mật cao (IAM, KMS, SG, VPC)
|
|
84
|
+
- Dễ mở rộng (scaling)
|
|
85
|
+
|
|
86
|
+
### Nhược điểm
|
|
87
|
+
- Không tùy chỉnh OS
|
|
88
|
+
- Không scale write theo chiều ngang
|
|
89
|
+
- Chi phí cao hơn EC2 tự cài
|
|
90
|
+
- Multi-AZ = tốn gấp đôi chi phí
|
|
91
|
+
- Không global replication (trừ Aurora)
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 6. So sánh với các dịch vụ tương tự
|
|
96
|
+
|
|
97
|
+
| So sánh | RDS | Aurora |
|
|
98
|
+
|---------|-----|-------|
|
|
99
|
+
| Performance | Bình thường | Nhanh hơn 3–5 lần |
|
|
100
|
+
| HA | Tốt | Cực mạnh (6 copies/3 AZ) |
|
|
101
|
+
| Read replicas | Ít | 15 replicas |
|
|
102
|
+
| Serverless | Không | Có Serverless v2 |
|
|
103
|
+
|
|
104
|
+
| So sánh | RDS | DynamoDB |
|
|
105
|
+
|---------|-----|---------|
|
|
106
|
+
| Schema | Có | Không |
|
|
107
|
+
| JOIN | Có | Không |
|
|
108
|
+
| Scale | Vertical (read) | Horizontal (read + write) |
|
|
109
|
+
| Use case | Ứng dụng quan hệ | Event-driven, IoT |
|
|
110
|
+
|
|
111
|
+
| So sánh | RDS | DB tự cài EC2 |
|
|
112
|
+
|---------|-----|---------------|
|
|
113
|
+
| Managed | Có | Không |
|
|
114
|
+
| Backup/failover | Tự động | Tự cấu hình |
|
|
115
|
+
| Patch | Tự động | Tự update |
|
|
116
|
+
| OS access | Không | Full control |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 7. Luồng hoạt động
|
|
121
|
+
|
|
122
|
+
**RDS Multi-AZ flow** (ví dụ):
|
|
123
|
+
1. App gửi query vào RDS Primary
|
|
124
|
+
2. DB ghi vào lưu trữ (EBS)
|
|
125
|
+
3. RDS replicate async sang Standby ở AZ khác
|
|
126
|
+
4. Nếu Primary chết → failover sang Standby (DNS đổi endpoint)
|
|
127
|
+
5. App reconnect tự động
|
|
128
|
+
|
|
129
|
+
> SAA exam thường hỏi về failover flow này.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 8. Cách mở rộng (Scaling)
|
|
134
|
+
|
|
135
|
+
- **Vertical Scaling**: Tăng CPU, RAM, Storage (có thể downtime trừ Aurora)
|
|
136
|
+
- **Horizontal Scaling**: Add Read Replicas, route API sử dụng read-only endpoint
|
|
137
|
+
> Lưu ý: RDS không scale write horizontally, chỉ Aurora hỗ trợ.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 9. Cách bảo mật
|
|
142
|
+
|
|
143
|
+
- **VPC** → chạy trong private subnet
|
|
144
|
+
- **Security Group** → mở port 3306/5432 khi cần
|
|
145
|
+
- **KMS encryption at rest**
|
|
146
|
+
- **TLS encryption in transit**
|
|
147
|
+
- **IAM Authentication** (MySQL, PG)
|
|
148
|
+
- **Secrets Manager** → quản lý mật khẩu
|
|
149
|
+
- **Subnet Group** → tách AZ
|
|
150
|
+
> Không cho phép SSH vào server.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 10. Tích hợp với các dịch vụ khác
|
|
155
|
+
|
|
156
|
+
| Service | Ý nghĩa |
|
|
157
|
+
|---------|---------|
|
|
158
|
+
| EC2 / ECS / Lambda | Truy cập RDS |
|
|
159
|
+
| Secrets Manager | Lưu mật khẩu DB |
|
|
160
|
+
| CloudWatch Logs, Metrics | Giám sát |
|
|
161
|
+
| CloudTrail | Audit |
|
|
162
|
+
| SNS | Alerts |
|
|
163
|
+
| S3 | Backup, export/import data |
|
|
164
|
+
| DMS | Migration giữa engines |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 11. Kiến trúc thực tế dùng RDS
|
|
169
|
+
|
|
170
|
+
- **Phổ biến (SAA exam)**:
|
|
171
|
+
ALB → ECS Fargate / EC2 Auto Scaling → RDS Multi-AZ → Read Replicas
|
|
172
|
+
- **Serverless**:
|
|
173
|
+
API Gateway → Lambda → RDS Proxy → RDS / Aurora Serverless v2
|
|
174
|
+
- **High-read**:
|
|
175
|
+
App → Read Replicas cho báo cáo nặng
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 12. Sự cố thường gặp và cách xử lý
|
|
180
|
+
|
|
181
|
+
| Sự cố | Nguyên nhân | Cách xử lý |
|
|
182
|
+
|-------|------------|------------|
|
|
183
|
+
| Connection timeout | DB trong private subnet | Kiểm tra SG & routing |
|
|
184
|
+
| Too many connections | App không release connection | Dùng RDS Proxy |
|
|
185
|
+
| Slow query | Query không index | Tối ưu index |
|
|
186
|
+
| Storage full | Auto-scaling không bật | Enable autoscaling storage |
|
|
187
|
+
| Failover 1–2 phút | Multi-AZ event | App phải tự retry |
|
|
188
|
+
| Read lag | Replicas bị chậm | Tối ưu write hoặc dùng Aurora |
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
> **Tóm lại:**
|
|
193
|
+
Amazon RDS là dịch vụ database quản lý mạnh mẽ, giúp giảm gánh nặng vận hành, backup tự động, HA tốt và mở rộng dễ dàng cho workload đọc nhiều. Hiểu rõ hạn chế và lựa chọn đúng use case sẽ phát huy tối đa hiệu quả.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Amazon S3: Hướng dẫn toàn diện về lưu trữ đối tượng trên AWS
|
|
2
|
+
|
|
3
|
+
**Amazon S3 (Simple Storage Service)** là dịch vụ lưu trữ đối tượng (object storage) trên đám mây của AWS.
|
|
4
|
+
Bạn có thể tưởng tượng S3 như một “ổ cứng online” rất lớn, nơi bạn lưu trữ mọi loại file: ảnh, video, tài liệu, backup,...
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Khái niệm & Phân loại
|
|
9
|
+
|
|
10
|
+
### Khái niệm
|
|
11
|
+
Dịch vụ lưu trữ đối tượng, bền vững, mở rộng linh hoạt, dễ tích hợp với các dịch vụ AWS khác.
|
|
12
|
+
|
|
13
|
+
### Storage Classes
|
|
14
|
+
| Lớp lưu trữ | Mục đích |
|
|
15
|
+
|------------|----------|
|
|
16
|
+
| S3 Standard | Truy cập thường xuyên |
|
|
17
|
+
| S3 Intelligent-Tiering | Tự động chuyển đổi để tối ưu chi phí |
|
|
18
|
+
| S3 Standard-IA | Dữ liệu ít truy cập |
|
|
19
|
+
| S3 One Zone-IA | Như IA nhưng chỉ 1 AZ, chi phí thấp |
|
|
20
|
+
| S3 Glacier / Glacier Deep Archive | Lưu trữ lâu dài, truy xuất chậm, chi phí thấp nhất |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. Thành phần chính
|
|
25
|
+
|
|
26
|
+
| Thành phần | Mô tả |
|
|
27
|
+
|------------|-------|
|
|
28
|
+
| Bucket | Thùng chứa dữ liệu, giống thư mục gốc |
|
|
29
|
+
| Objects | Từng file lưu trữ trong bucket |
|
|
30
|
+
| Key | Tên của object, giống tên file |
|
|
31
|
+
| Versioning | Lưu nhiều phiên bản của cùng một object |
|
|
32
|
+
| Access Control | Phân quyền truy cập bucket/object |
|
|
33
|
+
| Lifecycle | Quy định tự động chuyển, xóa file theo thời gian |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 3. Mục đích sử dụng
|
|
38
|
+
|
|
39
|
+
- **Lưu trữ file**: Website, ứng dụng, backup, log, dữ liệu big data
|
|
40
|
+
- **Chia sẻ file**: Giữa user, app, hoặc public
|
|
41
|
+
- **Tích hợp với dịch vụ AWS khác**: Lambda, EC2, Athena, Redshift, Glue,...
|
|
42
|
+
|
|
43
|
+
### Giải quyết vấn đề
|
|
44
|
+
- Lo hạ tầng lưu trữ (mua, bảo trì, mở rộng ổ cứng)
|
|
45
|
+
- Đảm bảo **durability** cao, dữ liệu an toàn
|
|
46
|
+
- Truy cập dữ liệu mọi nơi, tốc độ cao, tích hợp dễ dàng
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 4. Khi nào nên dùng / không nên dùng
|
|
51
|
+
|
|
52
|
+
### Nên dùng
|
|
53
|
+
- Lưu trữ file lớn, số lượng lớn (ảnh, video, log, backup)
|
|
54
|
+
- Chia sẻ file qua Internet hoặc giữa các dịch vụ AWS
|
|
55
|
+
- Mở rộng dung lượng dễ dàng, không cần quản lý server
|
|
56
|
+
- Dữ liệu bền vững, an toàn, dễ backup và phục hồi
|
|
57
|
+
|
|
58
|
+
### Không nên dùng
|
|
59
|
+
- Cần lưu trữ dạng database
|
|
60
|
+
- Truy cập file tốc độ siêu nhanh (real-time)
|
|
61
|
+
- Hệ thống file truyền thống (mount như ổ đĩa)
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 5. Ưu điểm & Nhược điểm
|
|
66
|
+
|
|
67
|
+
### Ưu điểm
|
|
68
|
+
- Đơn giản, dễ dùng, mở rộng vô hạn
|
|
69
|
+
- Chi phí hợp lý (trả cho dung lượng & traffic)
|
|
70
|
+
- An toàn, bền vững (99.999999999% durability)
|
|
71
|
+
- Tích hợp mạnh mẽ với nhiều dịch vụ AWS
|
|
72
|
+
- Có thể public hoặc private từng file/bucket
|
|
73
|
+
|
|
74
|
+
### Nhược điểm
|
|
75
|
+
- Không phù hợp cho dữ liệu dạng database, file system
|
|
76
|
+
- Chi phí tăng nếu truy cập nhiều (GET, PUT, traffic ra ngoài AWS)
|
|
77
|
+
- Độ trễ truy xuất cao hơn EBS/EFS
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 6. So sánh với các dịch vụ tương tự
|
|
82
|
+
|
|
83
|
+
| Dịch vụ | Loại lưu trữ | Ưu điểm | Nhược điểm |
|
|
84
|
+
|---------|--------------|---------|------------|
|
|
85
|
+
| S3 | Object Storage | Rẻ, mở rộng vô hạn, durability cao | Không mount trực tiếp |
|
|
86
|
+
| EBS | Block Storage | Mount như ổ cứng cho EC2, tốc độ cao | Gắn được 1 EC2, không chia sẻ |
|
|
87
|
+
| EFS | File Storage | Mount nhiều EC2, chia sẻ như ổ đĩa mạng | Chi phí cao hơn S3, dung lượng tự mở rộng |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 7. Luồng hoạt động
|
|
92
|
+
|
|
93
|
+
1. User/app gửi file lên S3 (AWS Console, SDK, CLI, API)
|
|
94
|
+
2. S3 lưu file thành object trong bucket
|
|
95
|
+
3. User/app lấy file về (link, API, download)
|
|
96
|
+
4. Quyền truy cập do bạn cấu hình
|
|
97
|
+
5. Các dịch vụ AWS khác có thể truy xuất dữ liệu (Lambda, EMR, Athena…)
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 8. Cách mở rộng
|
|
102
|
+
|
|
103
|
+
- Tự động mở rộng dung lượng không giới hạn
|
|
104
|
+
- Storage class tự động điều chỉnh (Intelligent-Tiering)
|
|
105
|
+
- Lifecycle Policy: tự động chuyển file sang lớp rẻ hơn, xóa file cũ
|
|
106
|
+
- Multi-region replication: sao chép dữ liệu sang nhiều khu vực địa lý
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 9. Cách bảo mật
|
|
111
|
+
|
|
112
|
+
- **Bucket Policy & IAM Policy**: quản lý quyền truy cập
|
|
113
|
+
- **Block Public Access**: giới hạn hoặc chặn public hoàn toàn
|
|
114
|
+
- **Server-side encryption**: mã hóa dữ liệu khi lưu
|
|
115
|
+
- **MFA Delete**: xác thực 2 lớp khi xóa dữ liệu quan trọng
|
|
116
|
+
- **Access Logging/Audit**: ghi lại mọi hoạt động truy cập
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 10. Tích hợp với các dịch vụ khác
|
|
121
|
+
|
|
122
|
+
- **Lambda**: xử lý file tự động khi upload
|
|
123
|
+
- **CloudFront**: CDN, tăng tốc phân phối file
|
|
124
|
+
- **Athena**: truy vấn dữ liệu S3 bằng SQL
|
|
125
|
+
- **Glue**: ETL dữ liệu
|
|
126
|
+
- **EC2, EMR, Redshift, Data Pipeline, Backup, Transfer Family**: đọc/ghi dữ liệu
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 11. Kiến trúc thực tế dùng S3
|
|
131
|
+
|
|
132
|
+
- **Static Website Hosting**: lưu trữ website tĩnh
|
|
133
|
+
- **Big Data Lake**: dữ liệu thô cho phân tích
|
|
134
|
+
- **Backup/Restore**: backup máy chủ, database, file
|
|
135
|
+
- **Media Hosting**: lưu trữ ảnh, video, tài liệu
|
|
136
|
+
- **Event-driven**: Lambda tự động xử lý file (resize, scan…)
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 12. Sự cố thường gặp & cách xử lý
|
|
141
|
+
|
|
142
|
+
| Sự cố | Cách xử lý |
|
|
143
|
+
|-------|------------|
|
|
144
|
+
| Không truy cập được bucket/file | Kiểm tra quyền (bucket policy/IAM), block public |
|
|
145
|
+
| Lỡ xóa dữ liệu | Bật versioning để phục hồi |
|
|
146
|
+
| Dữ liệu public ngoài ý muốn | Bật Block Public Access, kiểm tra quyền |
|
|
147
|
+
| Truy cập chậm, tốn tiền ngoài dự kiến | Chọn region phù hợp, dùng CloudFront, tối ưu storage class |
|
|
148
|
+
| Dữ liệu nhạy cảm bị rò rỉ | Bật encryption, audit quyền thường xuyên |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Tóm tắt
|
|
153
|
+
|
|
154
|
+
- **S3** là dịch vụ lưu trữ file/object trên cloud, đơn giản, bền vững, dễ mở rộng
|
|
155
|
+
- Dùng cho lưu trữ, backup, chia sẻ file mọi quy mô
|
|
156
|
+
- Bảo mật mạnh, tích hợp sâu với AWS
|
|
157
|
+
- Không dùng cho database hay file system truyền thống
|
|
158
|
+
- Luôn kiểm soát quyền, bật encryption và versioning
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Amazon SNS: Hướng dẫn toàn diện về gửi thông báo Pub/Sub trên AWS
|
|
2
|
+
|
|
3
|
+
**Amazon SNS (Simple Notification Service)** là dịch vụ gửi thông báo theo cơ chế pub/sub của AWS.
|
|
4
|
+
|
|
5
|
+
Bạn có thể tưởng tượng SNS như một “loa phát thanh”:
|
|
6
|
+
- Ai muốn nghe → đăng ký (Subscribers)
|
|
7
|
+
- Khi có sự kiện → publish message vào “loa” → tất cả người nghe nhận thông báo.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Khái niệm & Phân loại
|
|
12
|
+
|
|
13
|
+
### Phân loại
|
|
14
|
+
1. **SNS Topic (Pub/Sub Messaging)** – gửi message cho nhiều subscriber cùng lúc.
|
|
15
|
+
2. **SNS FIFO Topic** – giống Topic thường nhưng đảm bảo thứ tự & chỉ 1 lần duy nhất.
|
|
16
|
+
3. **Direct SMS/Email/Mobile Push** – gửi trực tiếp, không qua Topic (ít dùng cho kiến trúc lớn).
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 2. Thành phần chính
|
|
21
|
+
|
|
22
|
+
| Thành phần | Mô tả |
|
|
23
|
+
|------------|-------|
|
|
24
|
+
| Topic | Kênh trung gian để publish message |
|
|
25
|
+
| Subscribers | Dịch vụ nhận thông báo: SQS queue, Lambda, Email, SMS, HTTP/HTTPS endpoint |
|
|
26
|
+
| Publisher | Bất kỳ dịch vụ nào gửi message vào topic |
|
|
27
|
+
| Message | Nội dung cần gửi |
|
|
28
|
+
| Delivery Policy | Chính sách retry khi gửi thất bại |
|
|
29
|
+
| Access Policy | Ai được phép publish/subscribe |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 3. SNS dùng để làm gì?
|
|
34
|
+
|
|
35
|
+
### Giải quyết vấn đề
|
|
36
|
+
- Tách rời (decoupling) giữa hệ thống gửi sự kiện và hệ thống xử lý
|
|
37
|
+
- Gửi thông báo realtime đến nhiều hệ thống khác nhau
|
|
38
|
+
- **Fan-out pattern**: 1 publish → nhiều subscribers (SQS, Lambda…) cùng nhận
|
|
39
|
+
|
|
40
|
+
### Khi nên dùng
|
|
41
|
+
- Khi nhiều service cần nhận cùng 1 sự kiện
|
|
42
|
+
- Khi muốn kích hoạt Lambda hoặc đẩy message vào SQS
|
|
43
|
+
- Push notification/email đơn giản
|
|
44
|
+
- Hệ thống event-driven, loosely coupled
|
|
45
|
+
|
|
46
|
+
### Khi không nên dùng
|
|
47
|
+
- Cần lưu trữ lâu dài → SNS không lưu message lâu
|
|
48
|
+
- Cần retry trên phía consumer → dùng SQS
|
|
49
|
+
- Pull-based → SNS chỉ push, không pull
|
|
50
|
+
- Workflow phải có state → dùng Step Functions
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 4. Ưu & Nhược điểm
|
|
55
|
+
|
|
56
|
+
### Ưu điểm
|
|
57
|
+
- Gửi cực nhanh, latency thấp
|
|
58
|
+
- Fan-out mạnh: 1 event đến nhiều SQS, Lambda…
|
|
59
|
+
- Không phải quản lý server
|
|
60
|
+
- Hỗ trợ nhiều kênh (SQS, Lambda, Email, SMS)
|
|
61
|
+
- Rất rẻ, gần như miễn phí cho kiến trúc
|
|
62
|
+
|
|
63
|
+
### Nhược điểm
|
|
64
|
+
- Không lưu message lâu → message thất bại là mất
|
|
65
|
+
- Không pull được
|
|
66
|
+
- Không phù hợp batch processing
|
|
67
|
+
- Retry config phức tạp hơn SQS
|
|
68
|
+
- Không có visibility timeout & DLQ như SQS (trừ SNS + SQS)
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 5. So sánh với các dịch vụ tương tự
|
|
73
|
+
|
|
74
|
+
| Dịch vụ | Dùng khi nào | Khác SNS |
|
|
75
|
+
|---------|--------------|-----------|
|
|
76
|
+
| SQS | Cần queue, retry, pull-based | SQS lưu message, SNS không |
|
|
77
|
+
| EventBridge | Event bus phức tạp, routing by rule | EventBridge = event router; SNS = pub/sub đơn giản |
|
|
78
|
+
| Kinesis | Streaming real-time, analytics | Kinesis có shard, lưu 1–7 ngày, xử lý lớn |
|
|
79
|
+
|
|
80
|
+
**Mẹo thi SAA:**
|
|
81
|
+
- SNS = push
|
|
82
|
+
- SQS = pull
|
|
83
|
+
- EventBridge = rule-based routing
|
|
84
|
+
- Kinesis = real-time big stream
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 6. Luồng hoạt động
|
|
89
|
+
|
|
90
|
+
1. Ứng dụng publish message → SNS Topic
|
|
91
|
+
2. SNS nhận message và gửi song song đến tất cả subscribers
|
|
92
|
+
3. Nếu subscriber là:
|
|
93
|
+
- SQS → SNS đẩy message vào queue
|
|
94
|
+
- Lambda → SNS invoke Lambda
|
|
95
|
+
- HTTP endpoint → SNS gửi HTTP POST
|
|
96
|
+
4. Nếu thất bại → SNS retry theo chính sách
|
|
97
|
+
5. Subscribers xử lý message theo logic của họ
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 7. Cách mở rộng (Scalability)
|
|
102
|
+
|
|
103
|
+
- SNS tự động scale, không cần cấu hình:
|
|
104
|
+
- Không giới hạn số lượng publish/sec
|
|
105
|
+
- Không giới hạn subscriber
|
|
106
|
+
- Không giới hạn topic
|
|
107
|
+
- Hoạt động multi-AZ trong region
|
|
108
|
+
|
|
109
|
+
- Tối ưu:
|
|
110
|
+
- Fan-out SNS → nhiều SQS (mỗi team 1 queue)
|
|
111
|
+
- SNS FIFO nếu cần thứ tự tuyệt đối
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 8. Cách bảo mật
|
|
116
|
+
|
|
117
|
+
- IAM policies để giới hạn ai được publish/subscribe
|
|
118
|
+
- Topic Policy giới hạn truy cập từ VPC khác hoặc account khác
|
|
119
|
+
- HTTPS endpoint dùng TLS
|
|
120
|
+
- Message encryption với KMS
|
|
121
|
+
- VPC Endpoint for SNS → gửi message mà không ra Internet
|
|
122
|
+
- Access sandbox bằng client-side filtering
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 9. Tích hợp với các dịch vụ
|
|
127
|
+
|
|
128
|
+
- Lambda (trigger)
|
|
129
|
+
- SQS (fan-out)
|
|
130
|
+
- CloudWatch Alarm (gửi cảnh báo)
|
|
131
|
+
- Auto Scaling (thông báo scaling event)
|
|
132
|
+
- EventBridge
|
|
133
|
+
- SES (email nâng cao)
|
|
134
|
+
- S3 events → SNS → SQS/Lambda
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 10. Kiến trúc thực tế dùng SNS
|
|
139
|
+
|
|
140
|
+
- **Fan-out Architecture:**
|
|
141
|
+
S3 event → SNS Topic → 3 SQS queues → 3 Lambda workers
|
|
142
|
+
→ Mỗi team xử lý khác nhau, không ảnh hưởng nhau
|
|
143
|
+
|
|
144
|
+
- **Monitoring & Alerting:**
|
|
145
|
+
CloudWatch Alarm → SNS → Email/SMS + Lambda logging
|
|
146
|
+
|
|
147
|
+
- **Microservices Event-driven:**
|
|
148
|
+
Service A → SNS → Service B, C, D
|
|
149
|
+
|
|
150
|
+
- **Order Processing (FIFO):**
|
|
151
|
+
Order Service → SNS FIFO → SQS FIFO → Worker
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 11. Sự cố thường gặp & cách xử lý
|
|
156
|
+
|
|
157
|
+
| Sự cố | Cách xử lý |
|
|
158
|
+
|-------|------------|
|
|
159
|
+
| Subscriber không nhận message | Kiểm tra PendingConfirmation, IAM Topic Policy, Endpoint Permission (HTTP 200 required) |
|
|
160
|
+
| Lambda invoke không thành công | Kiểm tra timeout, retry policy, DLQ (SNS → SQS → DLQ) |
|
|
161
|
+
| Message không vào SQS | Kiểm tra SNS Topic Policy, quyền KMS nếu queue encrypt |
|
|
162
|
+
| HTTP endpoint bị spam / DDoS-like | Dùng message filtering, API Gateway làm shield, hạn chế publish bằng IAM |
|
|
163
|
+
| Publish từ VPC không được | Tạo VPC Endpoint, kiểm tra route table |
|