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.
Files changed (68) hide show
  1. package/BlueprintTemplate/.editorconfig +17 -0
  2. package/BlueprintTemplate/.gitlab-ci.yml +34 -0
  3. package/BlueprintTemplate/DESIGN.txt +37 -0
  4. package/BlueprintTemplate/README.md +78 -0
  5. package/BlueprintTemplate/angular.json +101 -0
  6. package/BlueprintTemplate/gitignore +42 -0
  7. package/BlueprintTemplate/package.json +58 -0
  8. package/BlueprintTemplate/public/assets/lessons/aws/aws-overview.md +139 -0
  9. package/BlueprintTemplate/public/assets/lessons/core/aws-aurora-guide.md +181 -0
  10. package/BlueprintTemplate/public/assets/lessons/core/aws-dynamodb-guide.md +139 -0
  11. package/BlueprintTemplate/public/assets/lessons/core/aws-ec2-guide.md +152 -0
  12. package/BlueprintTemplate/public/assets/lessons/core/aws-eventbridge-guide.md +152 -0
  13. package/BlueprintTemplate/public/assets/lessons/core/aws-iam-guide.md +132 -0
  14. package/BlueprintTemplate/public/assets/lessons/core/aws-lambda-guide.md +129 -0
  15. package/BlueprintTemplate/public/assets/lessons/core/aws-rds-guide.md +193 -0
  16. package/BlueprintTemplate/public/assets/lessons/core/aws-s3-guide.md +158 -0
  17. package/BlueprintTemplate/public/assets/lessons/core/aws-sns-guide.md +163 -0
  18. package/BlueprintTemplate/public/assets/lessons/core/aws-sqs-guide.md +173 -0
  19. package/BlueprintTemplate/public/assets/lessons/core/aws-vpc-guide.md +145 -0
  20. package/BlueprintTemplate/public/assets/lessons/groups/aws-application-integration-overview.md +194 -0
  21. package/BlueprintTemplate/public/assets/lessons/groups/aws-compute-architecture-overview.md +187 -0
  22. package/BlueprintTemplate/public/assets/lessons/groups/aws-database-architecture.md +104 -0
  23. package/BlueprintTemplate/public/assets/lessons/groups/aws-networking-architecture.md +97 -0
  24. package/BlueprintTemplate/public/assets/lessons/groups/aws-security-architecture.md +88 -0
  25. package/BlueprintTemplate/public/assets/lessons/groups/aws-storage-architecture.md +116 -0
  26. package/BlueprintTemplate/public/assets/lessons/index.json +202 -0
  27. package/BlueprintTemplate/public/assets/lessons/theory/aws-caching-strategy.md +61 -0
  28. package/BlueprintTemplate/public/assets/lessons/theory/aws-disaster-recovery-strategies.md +117 -0
  29. package/BlueprintTemplate/public/assets/lessons/theory/aws-event-driven-architecture.md +77 -0
  30. package/BlueprintTemplate/public/assets/lessons/theory/aws-ha-ft-scalability.md +98 -0
  31. package/BlueprintTemplate/public/assets/lessons/theory/aws-hybrid-cloud.md +82 -0
  32. package/BlueprintTemplate/public/assets/lessons/theory/aws-microservices-vs-monolithic.md +77 -0
  33. package/BlueprintTemplate/public/assets/lessons/theory/aws-well-architected-framework.md +174 -0
  34. package/BlueprintTemplate/public/favicon.ico +0 -0
  35. package/BlueprintTemplate/public/robots.txt +23 -0
  36. package/BlueprintTemplate/public/sitemap.xml +11 -0
  37. package/BlueprintTemplate/src/app/app.config.server.ts +12 -0
  38. package/BlueprintTemplate/src/app/app.config.ts +16 -0
  39. package/BlueprintTemplate/src/app/app.html +36 -0
  40. package/BlueprintTemplate/src/app/app.routes.server.ts +8 -0
  41. package/BlueprintTemplate/src/app/app.routes.ts +11 -0
  42. package/BlueprintTemplate/src/app/app.scss +71 -0
  43. package/BlueprintTemplate/src/app/app.ts +50 -0
  44. package/BlueprintTemplate/src/app/core/models/lesson.model.ts +8 -0
  45. package/BlueprintTemplate/src/app/core/services/lesson.service.ts +46 -0
  46. package/BlueprintTemplate/src/app/core/services/seo.service.ts +68 -0
  47. package/BlueprintTemplate/src/app/features/about/about.html +14 -0
  48. package/BlueprintTemplate/src/app/features/about/about.scss +4 -0
  49. package/BlueprintTemplate/src/app/features/about/about.ts +23 -0
  50. package/BlueprintTemplate/src/app/features/lesson-detail/lesson-detail.html +4 -0
  51. package/BlueprintTemplate/src/app/features/lesson-detail/lesson-detail.scss +0 -0
  52. package/BlueprintTemplate/src/app/features/lesson-detail/lesson-detail.ts +55 -0
  53. package/BlueprintTemplate/src/app/features/lesson-list/lesson-list.html +13 -0
  54. package/BlueprintTemplate/src/app/features/lesson-list/lesson-list.scss +0 -0
  55. package/BlueprintTemplate/src/app/features/lesson-list/lesson-list.ts +59 -0
  56. package/BlueprintTemplate/src/app/shared/facades/event-abstract.facade.ts +18 -0
  57. package/BlueprintTemplate/src/app/shared/facades/pages.facade.ts +55 -0
  58. package/BlueprintTemplate/src/app/shared/utils/common.utils.ts +3 -0
  59. package/BlueprintTemplate/src/index.html +35 -0
  60. package/BlueprintTemplate/src/main.server.ts.bak +7 -0
  61. package/BlueprintTemplate/src/main.ts +6 -0
  62. package/BlueprintTemplate/src/server.ts.bak +68 -0
  63. package/BlueprintTemplate/src/styles.scss +36 -0
  64. package/BlueprintTemplate/tsconfig.app.json +17 -0
  65. package/BlueprintTemplate/tsconfig.json +34 -0
  66. package/README.md +22 -0
  67. package/create.js +92 -0
  68. 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 |