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,173 @@
|
|
|
1
|
+
# Amazon SQS: Hướng dẫn toàn diện về hàng đợi tin nhắn trên AWS
|
|
2
|
+
|
|
3
|
+
**Amazon SQS (Simple Queue Service)** là dịch vụ quản lý hàng đợi tin nhắn (message queue) trên AWS.
|
|
4
|
+
|
|
5
|
+
Bạn có thể tưởng tượng SQS như một "hộp đựng phiếu" ở siêu thị:
|
|
6
|
+
- Người gửi bỏ phiếu vào hộp (Producer)
|
|
7
|
+
- Người nhận đến lấy phiếu khi rảnh và xử lý (Consumer)
|
|
8
|
+
- Hai bên không cần biết nhau, không phụ thuộc
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Khái niệm & Phân loại
|
|
13
|
+
|
|
14
|
+
### Phân loại
|
|
15
|
+
1. **Standard Queue**
|
|
16
|
+
- Throughput rất cao
|
|
17
|
+
- Không đảm bảo thứ tự
|
|
18
|
+
- “At-least-once delivery” (có thể trùng message)
|
|
19
|
+
2. **FIFO Queue**
|
|
20
|
+
- Giữ đúng thứ tự gửi
|
|
21
|
+
- “Exactly-once processing”
|
|
22
|
+
- Throughput thấp hơn Standard Queue nhưng có trật tự
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. Thành phần chính
|
|
27
|
+
|
|
28
|
+
| Thành phần | Mô tả |
|
|
29
|
+
|------------|-------|
|
|
30
|
+
| Queue | Nơi lưu message |
|
|
31
|
+
| Message | Dữ liệu gửi (tối đa 256KB) |
|
|
32
|
+
| Producer | Tạo và gửi message |
|
|
33
|
+
| Consumer | Lấy message và xử lý |
|
|
34
|
+
| Visibility Timeout | Thời gian message tạm bị ẩn để consumer xử lý |
|
|
35
|
+
| Dead-Letter Queue (DLQ) | Chứa message lỗi quá số lần xử lý cho phép |
|
|
36
|
+
| Message Retention | Thời gian lưu message (1 phút → 14 ngày) |
|
|
37
|
+
| Long Polling | Giảm chi phí & tăng hiệu quả lấy message |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 3. SQS dùng để làm gì?
|
|
42
|
+
|
|
43
|
+
### Giải quyết vấn đề
|
|
44
|
+
- Tách rời (decoupling) giữa các services → microservices bền vững hơn
|
|
45
|
+
- Xử lý không đồng bộ: hệ thống bận → message vẫn an toàn trong queue
|
|
46
|
+
- Không mất dữ liệu khi hạ tầng bị lỗi
|
|
47
|
+
- Ổn định tải (buffer) khi có spike traffic
|
|
48
|
+
|
|
49
|
+
### Khi nên dùng
|
|
50
|
+
- Khi cần buffer giữa các service
|
|
51
|
+
- Khi workload không cần xử lý ngay lập tức
|
|
52
|
+
- Khi cần tự động retry message lỗi
|
|
53
|
+
- Khi cần đảm bảo thứ tự xử lý → FIFO Queue
|
|
54
|
+
|
|
55
|
+
### Khi không nên dùng
|
|
56
|
+
- Cần push notification → dùng SNS
|
|
57
|
+
- Pub/sub nhiều subscriber → SNS hoặc EventBridge
|
|
58
|
+
- Real-time streaming → dùng Kinesis
|
|
59
|
+
- Workflow có logic điều hướng → dùng Step Functions
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 4. Ưu & Nhược điểm
|
|
64
|
+
|
|
65
|
+
### Ưu điểm
|
|
66
|
+
- Đảm bảo message không mất
|
|
67
|
+
- Tách rời producer – consumer
|
|
68
|
+
- Tự động retry bằng DLQ
|
|
69
|
+
- Chi phí thấp
|
|
70
|
+
- Scale gần như vô hạn
|
|
71
|
+
- Dễ tích hợp với Lambda và Auto Scaling
|
|
72
|
+
|
|
73
|
+
### Nhược điểm
|
|
74
|
+
- Không push, chỉ pull
|
|
75
|
+
- Consumer phải liên tục poll nếu không dùng long polling
|
|
76
|
+
- Không hỗ trợ routing theo rule phức tạp (EventBridge tốt hơn)
|
|
77
|
+
- FIFO throughput thấp hơn Standard Queue
|
|
78
|
+
- Không phù hợp cho real-time
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 5. So sánh với các dịch vụ tương tự
|
|
83
|
+
|
|
84
|
+
| Dịch vụ | Dùng khi nào | Khác SQS |
|
|
85
|
+
|---------|--------------|-----------|
|
|
86
|
+
| SNS | Pub/sub, push | SNS không lưu message, không retry như queue |
|
|
87
|
+
| EventBridge | Định tuyến sự kiện theo rule | EventBridge là event bus, SQS là queue |
|
|
88
|
+
| Kinesis | Streaming lớn, analytics | Kinesis có shard, giữ data 1–7 ngày |
|
|
89
|
+
| Kafka (MSK) | Streaming + pub/sub + event log | Kafka phức tạp hơn, SQS đơn giản hơn |
|
|
90
|
+
|
|
91
|
+
**Mẹo thi SAA:**
|
|
92
|
+
- SNS = push, fan-out
|
|
93
|
+
- SQS = pull, queue
|
|
94
|
+
- EventBridge = router
|
|
95
|
+
- Kinesis = streaming
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 6. Luồng hoạt động
|
|
100
|
+
|
|
101
|
+
1. Producer gửi message vào SQS
|
|
102
|
+
2. SQS lưu message bền vững (durable)
|
|
103
|
+
3. Consumer poll queue để nhận message
|
|
104
|
+
4. SQS ẩn message trong thời gian Visibility Timeout
|
|
105
|
+
5. Consumer xử lý:
|
|
106
|
+
- Nếu thành công → DeleteMessage
|
|
107
|
+
- Nếu lỗi → message hiện lại → retry
|
|
108
|
+
6. Message retry quá nhiều lần → chuyển vào DLQ
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 7. Cách mở rộng (Scalability)
|
|
113
|
+
|
|
114
|
+
- SQS tự động scale, không cấu hình
|
|
115
|
+
- Tạo nhiều consumer (EC2, ECS, Lambda) để xử lý nhanh hơn
|
|
116
|
+
- Dùng Auto Scaling theo metric:
|
|
117
|
+
- ApproximateNumberOfMessagesVisible
|
|
118
|
+
- ApproximateAgeOfOldestMessage
|
|
119
|
+
- Kết hợp SNS → SQS fan-out để lưu nhiều phiên bản message
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 8. Cách bảo mật
|
|
124
|
+
|
|
125
|
+
- IAM Policy giới hạn ai được gửi/nhận message
|
|
126
|
+
- Queue Access Policy cho phép cross-account hoặc SNS publish
|
|
127
|
+
- KMS encryption mã hóa message
|
|
128
|
+
- HTTPS cho API call
|
|
129
|
+
- VPC Endpoint để không đi Internet
|
|
130
|
+
- Client-side encryption (hiếm dùng)
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 9. SQS tích hợp với các dịch vụ
|
|
135
|
+
|
|
136
|
+
- SNS (fan-out)
|
|
137
|
+
- Lambda (consumer event)
|
|
138
|
+
- ECS / EC2 Auto Scaling
|
|
139
|
+
- CloudWatch Alarm
|
|
140
|
+
- AWS Step Functions
|
|
141
|
+
- S3 events → SNS → SQS
|
|
142
|
+
- EventBridge → SQS (routing)
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 10. Kiến trúc thực tế sử dụng SQS
|
|
147
|
+
|
|
148
|
+
1. **Decoupled Microservices**
|
|
149
|
+
Service A → SQS → Service B
|
|
150
|
+
|
|
151
|
+
2. **Fan-out Architecture**
|
|
152
|
+
Event → SNS → N SQS queues → multiple consumers
|
|
153
|
+
|
|
154
|
+
3. **Order Processing (FIFO)**
|
|
155
|
+
Order API → SQS FIFO → Worker
|
|
156
|
+
|
|
157
|
+
4. **Buffer cho hệ thống tải lớn**
|
|
158
|
+
Website → SQS buffer → Batch processor
|
|
159
|
+
|
|
160
|
+
5. **Xử lý ảnh/video async**
|
|
161
|
+
S3 upload → Event → SQS → Lambda/EC2 worker
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 11. Sự cố thường gặp & cách xử lý
|
|
166
|
+
|
|
167
|
+
| Sự cố | Cách xử lý |
|
|
168
|
+
|-------|------------|
|
|
169
|
+
| Message bị duplicate (Standard Queue) | Dùng FIFO nếu cần exactly-once, Idempotent consumer |
|
|
170
|
+
| Visibility Timeout quá ngắn → message bị xử lý 2 lần | Tăng timeout, dùng ChangeMessageVisibility khi xử lý lâu |
|
|
171
|
+
| Message bị đẩy vào DLQ quá nhanh | Kiểm tra logic xử lý, tăng maxReceiveCount, log chi tiết |
|
|
172
|
+
| Consumer chạy quá chậm | Tăng số lượng consumer, dùng Auto Scaling, long polling |
|
|
173
|
+
| Queue không nhận được message từ SNS | Kiểm tra Queue Policy có cho phép SNS gửi, kiểm tra KMS permission |
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Amazon VPC: Hướng dẫn toàn diện về mạng ảo trên AWS
|
|
2
|
+
|
|
3
|
+
**Amazon VPC (Virtual Private Cloud)** là một mạng ảo riêng biệt trên AWS, nơi bạn có toàn quyền kiểm soát cấu hình mạng như địa chỉ IP, subnet, bảng định tuyến, firewall, NAT...
|
|
4
|
+
|
|
5
|
+
Bạn có thể hình dung VPC như một trung tâm dữ liệu riêng trong AWS, tự chia mạng, bảo vệ và kết nối theo ý mình.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Khái niệm & Phân loại
|
|
10
|
+
|
|
11
|
+
- **Default VPC**: AWS tạo sẵn cho mỗi region, cấu hình cơ bản, dùng nhanh, phù hợp test/lab.
|
|
12
|
+
- **Custom VPC**: Tự tạo, tự thiết kế subnet, security, routing, dùng cho production.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 2. Thành phần chính
|
|
17
|
+
|
|
18
|
+
| Thành phần | Mô tả |
|
|
19
|
+
|------------|-------|
|
|
20
|
+
| Subnet | Chia VPC thành các vùng mạng nhỏ hơn (public/private) |
|
|
21
|
+
| Route Table | Bảng định tuyến quyết định gói tin đi đâu |
|
|
22
|
+
| Internet Gateway (IGW) | Kết nối subnet ra internet |
|
|
23
|
+
| NAT Gateway/Instance | Cho private subnet đi ra ngoài internet (1 chiều) |
|
|
24
|
+
| Security Group | Firewall cho instance, kiểm soát inbound/outbound |
|
|
25
|
+
| Network ACL (NACL) | Firewall cho subnet, kiểm soát traffic vào/ra subnet |
|
|
26
|
+
| Elastic IP | Địa chỉ IP tĩnh cho tài nguyên |
|
|
27
|
+
| VPC Peering | Kết nối VPC với nhau |
|
|
28
|
+
| Endpoints | Kết nối private tới dịch vụ AWS mà không cần internet |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 3. VPC dùng để làm gì?
|
|
33
|
+
|
|
34
|
+
### Mục đích
|
|
35
|
+
- Tạo môi trường mạng riêng, an toàn, triển khai các tài nguyên (EC2, RDS, Lambda) theo nhu cầu bảo mật và kết nối.
|
|
36
|
+
|
|
37
|
+
### Giải quyết vấn đề
|
|
38
|
+
- Phân tách môi trường (prod/dev/test)
|
|
39
|
+
- Bảo mật (ai được truy cập, subnet nào ra internet)
|
|
40
|
+
- Kết nối với on-premise (VPN, Direct Connect)
|
|
41
|
+
|
|
42
|
+
### Khi nên dùng
|
|
43
|
+
- Triển khai ứng dụng cần kiểm soát mạng, bảo mật cao
|
|
44
|
+
- Có nhiều tầng (web/app/db) cần subnet riêng
|
|
45
|
+
- Kết nối hybrid/on-premise
|
|
46
|
+
|
|
47
|
+
### Khi không nên dùng
|
|
48
|
+
- Không cần kiểm soát mạng (dùng dịch vụ fully managed như S3, DynamoDB)
|
|
49
|
+
- Ứng dụng nhỏ, chỉ cần test nhanh
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 4. Ưu & Nhược điểm
|
|
54
|
+
|
|
55
|
+
### Ưu điểm
|
|
56
|
+
- Toàn quyền kiểm soát cấu hình mạng
|
|
57
|
+
- Bảo mật tốt
|
|
58
|
+
- Dễ mở rộng, tích hợp với nhiều dịch vụ
|
|
59
|
+
- Kết nối được với on-premise
|
|
60
|
+
|
|
61
|
+
### Nhược điểm
|
|
62
|
+
- Cấu hình phức tạp, dễ sai sót (route, security, NACL)
|
|
63
|
+
- Nếu thiết kế kém, dễ tạo lỗ hổng bảo mật
|
|
64
|
+
- Có thể phát sinh chi phí (NAT Gateway, VPN...)
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 5. So sánh với dịch vụ tương tự
|
|
69
|
+
|
|
70
|
+
| Dịch vụ | Ưu điểm | Nhược điểm |
|
|
71
|
+
|---------|---------|------------|
|
|
72
|
+
| VPC | Toàn quyền kiểm soát mạng, bảo mật cao | Cấu hình phức tạp, dễ sai sót |
|
|
73
|
+
| AWS PrivateLink | Kết nối private tới dịch vụ AWS, không expose public IP | Chỉ dùng cho một số dịch vụ, không thay thế VPC |
|
|
74
|
+
| Default VPC | Dùng nhanh, không cần cấu hình nhiều | Không phù hợp production, thiếu tùy chỉnh |
|
|
75
|
+
| Public Cloud Shared Network | Đơn giản, nhanh | Không kiểm soát, bảo mật kém |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 6. Luồng hoạt động
|
|
80
|
+
|
|
81
|
+
1. Khởi tạo VPC (chọn CIDR, tạo subnet)
|
|
82
|
+
2. Tạo các tài nguyên trong subnet (EC2, RDS...)
|
|
83
|
+
3. Cấp quyền truy cập (Security Group, NACL)
|
|
84
|
+
4. Gắn Internet Gateway/NAT Gateway nếu cần kết nối internet
|
|
85
|
+
5. Thiết lập routing (route table)
|
|
86
|
+
6. Các tài nguyên hoạt động và giao tiếp theo cấu hình mạng đã tạo
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 7. Cách mở rộng
|
|
91
|
+
|
|
92
|
+
- Thêm subnet khi cần mở rộng vùng mạng
|
|
93
|
+
- Tăng CIDR block (thêm secondary CIDR)
|
|
94
|
+
- VPC Peering hoặc Transit Gateway: kết nối nhiều VPC
|
|
95
|
+
- Auto Scaling: tài nguyên trong VPC tự động thêm/bớt
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 8. Cách bảo mật
|
|
100
|
+
|
|
101
|
+
- Security Group: Kiểm soát truy cập từng instance
|
|
102
|
+
- NACL: Bảo vệ subnet, block IP bất thường
|
|
103
|
+
- Flow Logs: Ghi lại traffic, phát hiện bất thường
|
|
104
|
+
- Endpoints: Truy cập dịch vụ AWS mà không cần internet
|
|
105
|
+
- Bảo mật kết nối: VPN, Direct Connect dùng mã hóa
|
|
106
|
+
- Không expose tài nguyên ra public subnet khi không cần thiết
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 9. Tích hợp với dịch vụ nào
|
|
111
|
+
|
|
112
|
+
- EC2, RDS, ElastiCache, Lambda (in VPC), ECS, EKS
|
|
113
|
+
- Direct Connect, VPN (kết nối on-premise)
|
|
114
|
+
- AWS PrivateLink, VPC Endpoint: truy cập private tới dịch vụ AWS khác
|
|
115
|
+
- CloudFormation: tự động hóa tạo VPC
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 10. Kiến trúc thực tế dùng VPC
|
|
120
|
+
|
|
121
|
+
- **3-tier web app**:
|
|
122
|
+
- Public subnet (load balancer)
|
|
123
|
+
- Private subnet (app server, DB)
|
|
124
|
+
- NAT Gateway cho app server ra ngoài
|
|
125
|
+
- Security group phân tách rõ ràng
|
|
126
|
+
|
|
127
|
+
- **Hybrid cloud**: Kết nối VPC với data center qua VPN/Direct Connect
|
|
128
|
+
|
|
129
|
+
- **Multi-VPC**: VPC peering hoặc Transit Gateway để các VPC giao tiếp
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 11. Sự cố thường gặp & cách xử lý
|
|
134
|
+
|
|
135
|
+
| Sự cố | Cách xử lý |
|
|
136
|
+
|-------|------------|
|
|
137
|
+
| Không kết nối được internet | Thiếu Internet Gateway, route table chưa đúng, thiếu NAT Gateway cho private subnet |
|
|
138
|
+
| Không ping được giữa các instance | Security group, NACL block traffic |
|
|
139
|
+
| Không truy cập được DB | DB đặt ở private subnet, security group chưa mở port |
|
|
140
|
+
| Route table sai | Gói tin không đi đúng hướng, kiểm tra lại route |
|
|
141
|
+
| CIDR trùng khi peering VPC | Không peering được, cần đổi CIDR |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
VPC là nền tảng mạng quan trọng nhất trên AWS, giúp kiểm soát, bảo vệ và kết nối tài nguyên một cách linh hoạt và an toàn. Khi triển khai, hãy luôn lập sơ đồ, chú ý bảo mật và kiểm tra kỹ các bảng route, security group để tránh lỗi kết nối.
|
package/BlueprintTemplate/public/assets/lessons/groups/aws-application-integration-overview.md
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# AWS Application Integration – Tổng quan các dịch vụ và mô hình kiến trúc
|
|
2
|
+
|
|
3
|
+
Trong hệ sinh thái AWS, **Application Integration** là nhóm dịch vụ giúp các ứng dụng và microservices **giao tiếp với nhau một cách linh hoạt, mở rộng tốt và giảm phụ thuộc lẫn nhau**.
|
|
4
|
+
|
|
5
|
+
Bài viết này cung cấp:
|
|
6
|
+
- Tổng quan các dịch vụ Application Integration chính trên AWS
|
|
7
|
+
- Giải thích các mô hình kiến trúc thường gặp
|
|
8
|
+
- Gợi ý khi nào nên sử dụng từng dịch vụ
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Các dịch vụ Application Integration chính
|
|
13
|
+
|
|
14
|
+
### Amazon SQS (Simple Queue Service)
|
|
15
|
+
|
|
16
|
+
Amazon SQS là dịch vụ **hàng đợi tin nhắn** được quản lý hoàn toàn bởi AWS.
|
|
17
|
+
Một thành phần (producer) gửi message vào queue, các thành phần khác (consumer) sẽ lấy message ra xử lý khi sẵn sàng.
|
|
18
|
+
|
|
19
|
+
Điểm quan trọng là producer và consumer **không cần hoạt động cùng thời điểm**, giúp hệ thống tách biệt và ổn định hơn.
|
|
20
|
+
|
|
21
|
+
**Đặc điểm chính:**
|
|
22
|
+
- Fully managed queue
|
|
23
|
+
- Giúp decouple các microservices
|
|
24
|
+
- Message được lưu trữ tạm thời
|
|
25
|
+
- Consumer xử lý theo tốc độ riêng
|
|
26
|
+
- Hỗ trợ hai loại queue: Standard và FIFO
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
### Amazon SNS (Simple Notification Service)
|
|
31
|
+
|
|
32
|
+
Amazon SNS là dịch vụ **publish/subscribe**.
|
|
33
|
+
Khi một sự kiện xảy ra, SNS publish message và **nhiều subscriber có thể nhận cùng lúc**.
|
|
34
|
+
|
|
35
|
+
SNS phù hợp khi bạn cần gửi cùng một thông tin đến nhiều hệ thống khác nhau.
|
|
36
|
+
|
|
37
|
+
**Đặc điểm chính:**
|
|
38
|
+
- Mô hình Pub/Sub
|
|
39
|
+
- Push-based
|
|
40
|
+
- Tích hợp Lambda, SQS, Email, HTTP endpoint
|
|
41
|
+
- Thường dùng cho mô hình fan-out
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Amazon EventBridge
|
|
46
|
+
|
|
47
|
+
EventBridge là dịch vụ **phân phối và định tuyến sự kiện**.
|
|
48
|
+
Nó nhận events từ:
|
|
49
|
+
- AWS services
|
|
50
|
+
- Ứng dụng SaaS
|
|
51
|
+
- Custom application events
|
|
52
|
+
|
|
53
|
+
Sau đó route các event này đến đúng target dựa trên rule và điều kiện lọc.
|
|
54
|
+
|
|
55
|
+
**Đặc điểm chính:**
|
|
56
|
+
- Event bus trung tâm
|
|
57
|
+
- Rule-based routing
|
|
58
|
+
- Hỗ trợ event filtering
|
|
59
|
+
- Kết nối nhiều ứng dụng rời rạc
|
|
60
|
+
- Serverless
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### AWS Step Functions
|
|
65
|
+
|
|
66
|
+
AWS Step Functions dùng để **điều phối workflow** giữa nhiều bước xử lý khác nhau.
|
|
67
|
+
Bạn định nghĩa luồng xử lý dưới dạng **state machine**, AWS sẽ đảm nhiệm việc thực thi theo đúng thứ tự.
|
|
68
|
+
|
|
69
|
+
Điều này giúp tách logic workflow ra khỏi code nghiệp vụ.
|
|
70
|
+
|
|
71
|
+
**Đặc điểm chính:**
|
|
72
|
+
- Orchestration
|
|
73
|
+
- State machine
|
|
74
|
+
- Hỗ trợ retry, catch, parallel
|
|
75
|
+
- Kết hợp Lambda, ECS, Glue
|
|
76
|
+
- Dễ quan sát và debug
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### Amazon Kinesis (Tổng quan)
|
|
81
|
+
|
|
82
|
+
Amazon Kinesis là nhóm dịch vụ dùng cho **xử lý dữ liệu streaming thời gian thực**, ví dụ:
|
|
83
|
+
- Log hệ thống
|
|
84
|
+
- Clickstream
|
|
85
|
+
- Dữ liệu IoT
|
|
86
|
+
|
|
87
|
+
**Đặc điểm chính:**
|
|
88
|
+
- Real-time data streams
|
|
89
|
+
- Gồm Kinesis Data Streams, Firehose, Analytics
|
|
90
|
+
- Phù hợp cho big data pipeline và analytics
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 2. Các mô hình và khái niệm kiến trúc quan trọng
|
|
95
|
+
|
|
96
|
+
### Event-driven Architecture
|
|
97
|
+
|
|
98
|
+
Trong kiến trúc event-driven:
|
|
99
|
+
- Các hệ thống không gọi trực tiếp nhau
|
|
100
|
+
- Thay vào đó phát ra event
|
|
101
|
+
- Thành phần nào quan tâm sẽ tự xử lý
|
|
102
|
+
|
|
103
|
+
Cách tiếp cận này giúp hệ thống linh hoạt và dễ mở rộng.
|
|
104
|
+
|
|
105
|
+
**Đặc điểm:**
|
|
106
|
+
- Loose coupling
|
|
107
|
+
- Scalability tốt
|
|
108
|
+
- Ít phụ thuộc thời gian thực
|
|
109
|
+
- Thường dùng với SNS, SQS, EventBridge
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
### Fan-out Model
|
|
114
|
+
|
|
115
|
+
Fan-out là mô hình:
|
|
116
|
+
- Một event
|
|
117
|
+
- Được gửi đến nhiều consumer để xử lý song song
|
|
118
|
+
|
|
119
|
+
**Ví dụ phổ biến:**
|
|
120
|
+
- SNS nhận event
|
|
121
|
+
- SNS gửi message đến nhiều SQS queues
|
|
122
|
+
- Mỗi queue xử lý một nhiệm vụ riêng
|
|
123
|
+
|
|
124
|
+
**Lợi ích:**
|
|
125
|
+
- Parallel processing
|
|
126
|
+
- Các consumer không ảnh hưởng nhau
|
|
127
|
+
- Tăng throughput hệ thống
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### SQS: FIFO Queue vs Standard Queue
|
|
132
|
+
|
|
133
|
+
#### Standard Queue
|
|
134
|
+
- Không đảm bảo thứ tự message
|
|
135
|
+
- Throughput rất cao
|
|
136
|
+
- Có thể có duplicate message
|
|
137
|
+
|
|
138
|
+
Phù hợp khi **thứ tự xử lý không quan trọng**.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
#### FIFO Queue
|
|
143
|
+
- Đảm bảo đúng thứ tự gửi – nhận
|
|
144
|
+
- Không bị duplicate
|
|
145
|
+
- Throughput giới hạn (~3,000 message/giây)
|
|
146
|
+
|
|
147
|
+
Phù hợp cho:
|
|
148
|
+
- Thanh toán
|
|
149
|
+
- Xử lý đơn hàng
|
|
150
|
+
- Các nghiệp vụ cần đảm bảo thứ tự
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### Choreography vs Orchestration
|
|
155
|
+
|
|
156
|
+
#### Choreography
|
|
157
|
+
|
|
158
|
+
Trong mô hình choreography:
|
|
159
|
+
- Mỗi service tự lắng nghe event
|
|
160
|
+
- Tự quyết định hành động cần làm
|
|
161
|
+
- Không có trung tâm điều phối
|
|
162
|
+
|
|
163
|
+
Phù hợp với hệ thống microservices lớn, phân tán.
|
|
164
|
+
|
|
165
|
+
**Thường dùng:** EventBridge, SNS, SQS
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
#### Orchestration
|
|
170
|
+
|
|
171
|
+
Trong mô hình orchestration:
|
|
172
|
+
- Có một thành phần trung tâm điều phối luồng xử lý
|
|
173
|
+
- Thứ tự các bước được định nghĩa rõ ràng
|
|
174
|
+
- Dễ theo dõi, retry và xử lý lỗi
|
|
175
|
+
|
|
176
|
+
Trên AWS, **Step Functions là dịch vụ orchestration chính**.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 3. Tổng kết
|
|
181
|
+
|
|
182
|
+
Nhóm dịch vụ Application Integration giúp bạn:
|
|
183
|
+
- Kết nối các hệ thống một cách lỏng lẻo
|
|
184
|
+
- Thiết kế kiến trúc event-driven và serverless
|
|
185
|
+
- Mở rộng hệ thống mà không làm phức tạp code
|
|
186
|
+
|
|
187
|
+
**Ghi nhớ nhanh:**
|
|
188
|
+
- SQS: queue và decouple services
|
|
189
|
+
- SNS: publish/subscribe và fan-out
|
|
190
|
+
- EventBridge: event routing và integration
|
|
191
|
+
- Step Functions: workflow orchestration
|
|
192
|
+
- Kinesis: xử lý dữ liệu streaming thời gian thực
|
|
193
|
+
|
|
194
|
+
Nắm vững các dịch vụ này là nền tảng quan trọng để thiết kế hệ thống hiện đại trên AWS.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# AWS Compute Architecture – Tổng quan các dịch vụ và cách lựa chọn
|
|
2
|
+
|
|
3
|
+
Trong AWS, **Compute Architecture** là tập hợp các dịch vụ dùng để chạy ứng dụng, xử lý logic và mở rộng hệ thống theo nhu cầu.
|
|
4
|
+
Việc hiểu rõ từng dịch vụ và biết khi nào nên dùng dịch vụ nào là nền tảng quan trọng để thiết kế kiến trúc hiệu quả, tối ưu chi phí và dễ vận hành.
|
|
5
|
+
|
|
6
|
+
Bài viết này cung cấp:
|
|
7
|
+
- Tổng quan các dịch vụ compute phổ biến trên AWS
|
|
8
|
+
- Vai trò của load balancing và auto scaling
|
|
9
|
+
- Hướng dẫn lựa chọn dịch vụ phù hợp theo từng loại workload
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Các dịch vụ Compute chính trên AWS
|
|
14
|
+
|
|
15
|
+
### Amazon EC2 (Elastic Compute Cloud)
|
|
16
|
+
|
|
17
|
+
Amazon EC2 là **máy chủ ảo truyền thống** trên AWS.
|
|
18
|
+
Bạn có toàn quyền kiểm soát hệ điều hành và môi trường chạy ứng dụng, từ cài đặt phần mềm cho đến cấu hình mạng và bảo mật.
|
|
19
|
+
|
|
20
|
+
**Đặc điểm chính:**
|
|
21
|
+
- Toàn quyền kiểm soát OS
|
|
22
|
+
- Phù hợp với workload chạy lâu dài, ổn định
|
|
23
|
+
- Dùng khi cần custom networking, driver hoặc phần mềm đặc thù
|
|
24
|
+
- Tính phí theo thời gian chạy (On-Demand, Reserved, Spot)
|
|
25
|
+
- Mở rộng bằng Auto Scaling Group
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
### Application Load Balancer (ALB) & Network Load Balancer (NLB)
|
|
30
|
+
|
|
31
|
+
Load Balancer có nhiệm vụ **phân phối traffic** đến nhiều backend server để tránh quá tải và tăng độ sẵn sàng.
|
|
32
|
+
|
|
33
|
+
#### Application Load Balancer (ALB)
|
|
34
|
+
- Hoạt động ở Layer 7 (HTTP/HTTPS)
|
|
35
|
+
- Hỗ trợ routing theo path và host
|
|
36
|
+
- Phù hợp cho web application và microservices
|
|
37
|
+
|
|
38
|
+
#### Network Load Balancer (NLB)
|
|
39
|
+
- Hoạt động ở Layer 4 (TCP)
|
|
40
|
+
- Hiệu năng rất cao, độ trễ thấp
|
|
41
|
+
- Phù hợp cho hệ thống traffic lớn, tài chính, gaming, IoT
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Auto Scaling Group (ASG)
|
|
46
|
+
|
|
47
|
+
Auto Scaling Group giúp hệ thống **tự động tăng hoặc giảm số lượng EC2 instance** dựa trên tải thực tế.
|
|
48
|
+
|
|
49
|
+
**Đặc điểm chính:**
|
|
50
|
+
- Scale out khi CPU hoặc traffic tăng
|
|
51
|
+
- Scale in khi tải giảm
|
|
52
|
+
- Kết hợp với ALB để health check
|
|
53
|
+
- Giúp tối ưu chi phí và tăng tính sẵn sàng
|
|
54
|
+
- Thường dùng cùng CloudWatch alarms
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### Amazon ECS & AWS Fargate
|
|
59
|
+
|
|
60
|
+
#### Amazon ECS (EC2 mode)
|
|
61
|
+
ECS là dịch vụ điều phối container.
|
|
62
|
+
Ở chế độ EC2, bạn **tự quản lý các EC2 instance** chạy container.
|
|
63
|
+
|
|
64
|
+
**Phù hợp khi:**
|
|
65
|
+
- Muốn tối ưu chi phí (Spot EC2)
|
|
66
|
+
- Cần custom AMI, daemon hoặc monitoring đặc biệt
|
|
67
|
+
- Cần kiểm soát hạ tầng chi tiết
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
#### AWS Fargate
|
|
72
|
+
Fargate cho phép chạy container **mà không cần quản lý server**.
|
|
73
|
+
Bạn chỉ định CPU và RAM, AWS lo toàn bộ phần hạ tầng.
|
|
74
|
+
|
|
75
|
+
**Đặc điểm chính:**
|
|
76
|
+
- Serverless container
|
|
77
|
+
- Không cần quản lý EC2
|
|
78
|
+
- Triển khai nhanh, dễ vận hành
|
|
79
|
+
- Trả tiền theo CPU/RAM sử dụng
|
|
80
|
+
|
|
81
|
+
> ECS (EC2 mode) và Fargate dùng chung **ECS Task Definition**, chỉ khác cách vận hành hạ tầng.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### AWS Lambda
|
|
86
|
+
|
|
87
|
+
AWS Lambda cho phép chạy code dưới dạng **function serverless**.
|
|
88
|
+
Bạn chỉ tập trung viết logic, AWS tự động lo scaling và hạ tầng.
|
|
89
|
+
|
|
90
|
+
**Đặc điểm chính:**
|
|
91
|
+
- Event-driven (S3, API Gateway, EventBridge…)
|
|
92
|
+
- Rất tiết kiệm chi phí cho workload không liên tục
|
|
93
|
+
- Thời gian chạy tối đa 15 phút
|
|
94
|
+
- Không phù hợp cho workload dài hoặc CPU nặng
|
|
95
|
+
- Tự động scale gần như không giới hạn
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### Amazon API Gateway
|
|
100
|
+
|
|
101
|
+
API Gateway đóng vai trò **cổng vào cho API**.
|
|
102
|
+
Client gọi API → API Gateway điều phối request đến Lambda, ECS hoặc EC2.
|
|
103
|
+
|
|
104
|
+
**Đặc điểm chính:**
|
|
105
|
+
- Hỗ trợ REST API, HTTP API, WebSocket
|
|
106
|
+
- Auto scaling
|
|
107
|
+
- Throttling, caching, usage plan
|
|
108
|
+
- Kết hợp rất tốt với Lambda cho kiến trúc serverless
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### AWS Step Functions
|
|
113
|
+
|
|
114
|
+
Step Functions dùng để **điều phối workflow** giữa nhiều bước xử lý.
|
|
115
|
+
|
|
116
|
+
**Đặc điểm chính:**
|
|
117
|
+
- Workflow orchestration
|
|
118
|
+
- Điều khiển thứ tự thực thi
|
|
119
|
+
- Hỗ trợ retry, parallel steps
|
|
120
|
+
- Phù hợp cho automation, ETL, pipeline
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 2. Các quyết định kiến trúc quan trọng
|
|
125
|
+
|
|
126
|
+
### Khi nào dùng EC2 và khi nào dùng Lambda
|
|
127
|
+
|
|
128
|
+
**Chọn Lambda khi:**
|
|
129
|
+
- Workload theo sự kiện, không liên tục
|
|
130
|
+
- Không muốn quản lý server
|
|
131
|
+
- Cần auto scale nhanh
|
|
132
|
+
- Thời gian chạy ≤ 15 phút
|
|
133
|
+
|
|
134
|
+
**Chọn EC2 khi:**
|
|
135
|
+
- Workload chạy liên tục
|
|
136
|
+
- Cần custom OS, driver, agent
|
|
137
|
+
- CPU/RAM lớn
|
|
138
|
+
- Ứng dụng legacy
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
### Khi nào dùng ECS, Fargate và Lambda
|
|
143
|
+
|
|
144
|
+
- **Lambda**: xử lý logic nhỏ, event-based
|
|
145
|
+
- **Fargate**: chạy container serverless, dễ deploy
|
|
146
|
+
- **ECS (EC2 mode)**: kiểm soát hạ tầng, tối ưu chi phí, workload phức tạp
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### Khi nào cần Load Balancer
|
|
151
|
+
|
|
152
|
+
Bạn nên dùng Load Balancer khi:
|
|
153
|
+
- Hệ thống có từ 2 server trở lên
|
|
154
|
+
- Cần chia tải request
|
|
155
|
+
- Cần health check backend
|
|
156
|
+
- Yêu cầu high availability
|
|
157
|
+
|
|
158
|
+
**Gợi ý:**
|
|
159
|
+
- ALB cho HTTP/HTTPS
|
|
160
|
+
- NLB cho TCP, traffic lớn
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
### Khi nào cần Auto Scaling
|
|
165
|
+
|
|
166
|
+
Auto Scaling phù hợp khi:
|
|
167
|
+
- Traffic không ổn định
|
|
168
|
+
- CPU/Memory biến động mạnh
|
|
169
|
+
- Muốn tối ưu chi phí
|
|
170
|
+
- Cần tự động phục hồi khi instance gặp sự cố
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 3. Tổng kết
|
|
175
|
+
|
|
176
|
+
AWS cung cấp nhiều lựa chọn compute để phù hợp với từng loại ứng dụng và mô hình vận hành.
|
|
177
|
+
|
|
178
|
+
**Tóm tắt nhanh:**
|
|
179
|
+
- EC2: toàn quyền kiểm soát
|
|
180
|
+
- ALB/NLB: chia tải và tăng độ sẵn sàng
|
|
181
|
+
- Auto Scaling: mở rộng linh hoạt
|
|
182
|
+
- ECS/Fargate: container hóa ứng dụng
|
|
183
|
+
- Lambda: serverless function
|
|
184
|
+
- API Gateway: cổng vào API
|
|
185
|
+
- Step Functions: điều phối workflow
|
|
186
|
+
|
|
187
|
+
Việc chọn đúng dịch vụ compute giúp hệ thống **ổn định, mở rộng tốt và tiết kiệm chi phí** ngay từ đầu.
|