Bài học: kiến trúc microsoft điển hình (typical microservice architecture)

Trong hệ thống hiện đại, kiến trúc microservice được sử dụng rộng rãi để xây dựng các ứng dụng lớn với khả năng mở rộng, bảo trì và triển khai độc lập. Bài học này trình bày các thành phần chính của một hệ thống microservice hoàn chỉnh.


1. :man_technologist: Clients – Khách hàng

:white_check_mark: Loại khách hàng:

  • Web: Truy cập hệ thống thông qua trình duyệt.
  • Mobile: Truy cập từ các thiết bị di động như điện thoại, tablet.
  • PC: Truy cập từ máy tính cá nhân.

:bullseye: Mục tiêu:

Các loại client này tương tác với hệ thống qua internet. Tất cả được nhóm vào loại “Client”, đóng vai trò là điểm bắt đầu của mọi truy cập đến hệ thống.


2. :globe_showing_europe_africa: CDN (Mạng phân phối nội dung)

:flashlight: Vị trí:

CDN được đặt gần người dùng để lưu trữ cache nội dung tĩnh (HTML, CSS, JS, hình ảnh).

:gear: Cách hoạt động:

  • Khi client gửi yêu cầu, CDN kiểm tra có nội dung đã cache chưa.
  • Nếu có, trả nội dung trực tiếp cho client → giúp tăng tốc độ tải trang, giảm tải cho hệ thống backend.

3. :balance_scale: Load Balancer – Bộ cân bằng tải

:loudspeaker: Vai trò:

  • Phân phối yêu cầu từ client đến các máy chủ backend.
  • Tránh trường hợp một máy chủ bị quá tải, đảm bảo độ tin cậy và khả năng sẵn sàng cao.

4. :door: API Gateway – Cổng API

:microphone: Chức năng:

  • cửa ngõ duy nhất tiếp nhận mọi yêu cầu từ phía client.
  • Định tuyến (route) yêu cầu đến microservice tương ứng dựa trên URL.

:bullseye: Xử lý thêm:

  • Xác thực người dùng (authentication).
  • Ghi log truy cập, giới hạn tốc độ (rate limiting).
  • Tích hợp với hệ thống xác thực trung tâm (Identity Provider).

5. :passport_control: Identity Provider – Nhà cung cấp danh tính

:headphone: Vai trò:

  • Xác thực danh tính người dùng (qua tài khoản, token, v.v).
  • Cấp quyền truy cập phù hợp.
  • Đảm bảo mọi yêu cầu truy cập microservice đều được kiểm soát bảo mật.

6. :card_index: Service Registry & Discovery – Đăng ký & tìm kiếm dịch vụ

:bell: Chức năng:

  • Lưu danh sách các dịch vụ đang hoạt động.
  • Cho phép các dịch vụ tự động phát hiện và gọi nhau mà không cần cấu hình cố định IP.

:bullseye: Lợi ích:

  • Hỗ trợ mở rộng (scaling) linh hoạt.
  • Giúp hệ thống kháng lỗi (tolerant) tốt hơn khi có dịch vụ thay đổi hoặc gặp sự cố.

7. :puzzle_piece: Microservices Layer – Lớp dịch vụ nhỏ

:paperclip: Phân theo domain:

  • Domain A gồm: Service A.1, A.2, A.3.
  • Domain B gồm: Service B.1, B.2.

:crayon: Mỗi service:

  • Là một REST API độc lập.
  • Xử lý các chức năng chuyên biệt như xử lý logic nghiệp vụ, xử lý dữ liệu, v.v.
  • Có thể được viết bằng công nghệ khác nhau và triển khai độc lập.

:bullseye: Lợi ích:

  • Dễ mở rộng theo từng chức năng.
  • Linh hoạt khi phát triển hoặc bảo trì từng phần nhỏ.

8. :file_cabinet: Databases – Cơ sở dữ liệu

:pushpin: Phân chia:

  • DB A phục vụ các dịch vụ thuộc Domain A.
  • DB B phục vụ các dịch vụ thuộc Domain B.

:pencil: Đặc điểm:

  • Mỗi microservice quản lý dữ liệu riêng biệt.
  • Tránh phụ thuộc lẫn nhau về dữ liệu (tránh database coupling).

:counterclockwise_arrows_button: TỔNG QUAN DÒNG CHẢY YÊU CẦU

[Client]
   ↓
[CDN]
   ↓
[Load Balancer]
   ↓
[API Gateway] ⇄ [Identity Provider]
   ↓
[Microservices Layer: Domain A & B]
   ↓
[Database A & B]

:white_check_mark: TỔNG KẾT LỢI ÍCH KIẾN TRÚC MICROSERVICE

Đặc điểm Lợi ích chính
Phân mảnh theo domain Quản lý dễ dàng, độc lập triển khai
Gateway trung tâm Kiểm soát truy cập, bảo mật, log, giám sát
Load balancer Phân phối tải, tăng tính ổn định hệ thống
Service Discovery Linh hoạt kết nối giữa các dịch vụ
Tách DB theo domain Giảm phụ thuộc dữ liệu, tăng hiệu suất