Web Applications
Nguồn tham khảo: Udemy — Developer to Architect Series

Mục tiêu bài viết
- Hiểu vị trí của Web Application trong kiến trúc tổng thể.
- Nắm các thành phần chính và vai trò của từng thành phần.
- Hiểu 3 thách thức lớn nhất của Web Application layer.
- Biết tiêu chí nào cần ưu tiên khi chọn technology cho layer này.
1) Vị trí của Web Application
Web Application là lớp đầu tiên phía server, trực tiếp nhận request từ người dùng.
USERS / CLIENTS
│
│ Internet
▼
┌──────────────────────────────────────────────┐
│ WEB APPLICATION │
│ │
│ CDN → HTTP Cache → Web Server → Session │
│ Cache │
└──────────────────────┬───────────────────────┘
│
▼
┌─────────────────┐
│ Backend Services │
└────────┬────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
Database Cache Message Queue
│
▼
Data Processing
│
▼
Data Warehouse / Storage
2) Các thành phần chính
| Thành phần | Vai trò |
|---|---|
| CDN | Phân phối static content gần người dùng |
| HTTP Cache | Cache response để giảm request vào server |
| Web Server | Xử lý HTTP request và trả response |
| Session Cache | Lưu session/state cần thiết |
| Backend Services | Xử lý business logic |
| Object Cache | Cache dữ liệu/object thường xuyên truy cập |
| Message Queue | Xử lý asynchronous processing |
| Database | Lưu trữ dữ liệu lâu dài |
| Data Processing | Xử lý dữ liệu phục vụ analytics |
| Data Warehouse | Phục vụ reporting/analytics |
| Unstructured Storage | Lưu logs, files, dữ liệu không cấu trúc |
3) Thách thức lớn nhất
① Nhận lượng request lớn nhất
Mọi request đều đi qua Web Application, nhưng không phải request nào cũng cần đi xuống database.
Internet Users
│
▼
┌─────────────┐
│ Web App │ 🔥 Highest Load
└──────┬──────┘
▼
┌─────────────┐
│ Services │
└──────┬──────┘
▼
┌─────────────┐
│ Database │ 🧊 Lowest Load
└─────────────┘
Load giảm dần từ Web App → Services → Database. Nhưng Database lại khó scale hơn vì phải quản lý state + consistency — trong khi Web App có thể dễ dàng scale-out bằng nhiều instance stateless.
② Client ở xa
Khác với giao tiếp nội bộ giữa service và database (local network):
User (khác quốc gia / continent)
│
│ Internet — network latency cao
▼
Web Application
→ Network latency trở thành vấn đề quan trọng cần giải quyết bằng CDN, caching.
③ Communication phải secure
Request đi qua Internet nên cần:
Client
│
│ HTTPS / TLS
▼
Web Application
→ Phải đảm bảo confidentiality, integrity, authentication và chống các kiểu tấn công phổ biến.
4) Tiêu chí chọn technology cho Web Application
WEB APPLICATION
│
┌─────────┴─────────┐
▼ ▼
Serve content Handle load
hiệu quả đến đâu? được bao nhiêu?
| Tiêu chí | Câu hỏi |
|---|---|
| ⚡ Performance | Xử lý request nhanh không? |
| 📈 Scalability | Chịu được bao nhiêu request đồng thời? |
| 🔄 Caching | Giảm request xuống backend như thế nào? |
| 🌍 Network | Phục vụ client ở xa ra sao (CDN)? |
| 🔐 Security | Bảo mật communication thế nào? |
| 💾 Session/State | Quản lý state ra sao (stateless design)? |
Tóm tắt
Web Application = High Load + Remote Clients + Secure Communication
Đây chính là lý do trong Software Architecture / System Design, Web Application thường là nơi đầu tiên cần nghĩ đến load balancing, caching, CDN, horizontal scaling và stateless design.