Bỏ qua điều hướng

Kiến trúc vi dịch vụ là gì?

Microservices Architecture Công nghệ & Số hóa

Kiến trúc vi dịch vụ

Kiến trúc vi dịch vụ (Microservices Architecture) là một phương pháp thiết kế phần mềm trong đó một ứng dụng lớn được phân tách thành nhiều dịch vụ nhỏ, độc lập, mỗi dịch vụ đảm nhận một chức năng nghiệp vụ cụ thể, có cơ sở dữ liệu riêng và giao tiếp với nhau thông qua các giao thức tiêu chuẩn như HTTP, gRPC hoặc message queue. Trong ngân hàng, kiến trúc vi dịch vụ được ứng dụng để xây dựng các hệ thống như: dịch vụ xác thực khách hàng (authentication), dịch vụ quản lý tài khoản, dịch vụ thanh toán, dịch vụ tín dụng, dịch vụ báo cáo quản trị, dịch vụ thông báo... Mỗi dịch vụ có thể được phát triển bằng ngôn ngữ lập trình khác nhau, triển khai độc lập và mở rộng quy mô theo nhu cầu sử dụng thực tế mà không ảnh hưởng đến các dịch vụ còn lại. Mô hình này đối lập với kiến trúc nguyên khối (monolithic) truyền thống, trong đó toàn bộ ứng dụng được đóng gói và triển khai như một khối duy nhất.

So sánh vi dịch vụ với kiến trúc nguyên khối

Kiến trúc nguyên khối (Monolithic): Toàn bộ mã nguồn, giao diện, logic nghiệp vụ và cơ sở dữ liệu được gói gọn trong một ứng dụng duy nhất. Khi cần cập nhật một chức năng nhỏ, lập trình viên phải build và triển khai lại toàn bộ hệ thống. Ví dụ: hệ thống core banking cũ của nhiều ngân hàng xây dựng từ trước năm 2015 thường theo mô hình này, khi sửa một lỗi nhỏ trên module SMS banking có thể ảnh hưởng đến module xử lý giao dịch.

Kiến trúc vi dịch vụ (Microservices): Hệ thống được chia thành hàng chục đến hàng trăm dịch vụ nhỏ. Mỗi dịch vụ có vòng đời phát triển độc lập, có thể triển khai bản cập nhật mà không gây gián đoạn cho các dịch vụ khác. Ví dụ: ngân hàng có thể cập nhật riêng dịch vụ gửi OTP mà không cần dừng dịch vụ thanh toán thẻ.

Lợi ích của kiến trúc vi dịch vụ trong ngân hàng

Khả năng mở rộng linh hoạt: Mỗi dịch vụ có thể được scale riêng biệt. Ví dụ: vào dịp lễ Tết hoặc ngày Black Friday, dịch vụ thanh toán và dịch vụ flash sale có thể tăng gấp 5–10 lần tài nguyên máy chủ, trong khi dịch vụ báo cáo nội bộ vẫn giữ nguyên quy mô, giúp tiết kiệm chi phí hạ tầng.

Tốc độ triển khai nhanh: Các đội ngũ phát triển nhỏ (squad) có thể làm việc song song trên các dịch vụ khác nhau. Một tính năng mới có thể được đưa ra thị trường trong 1–2 tuần thay vì 2–3 tháng như mô hình nguyên khối.

Khả năng chịu lỗi cao: Khi một dịch vụ gặp sự cố, hệ thống có thể áp dụng cơ chế circuit breaker để ngắt kết nối tạm thời, các dịch vụ khác vẫn hoạt động bình thường hoặc chuyển sang chế độ dự phòng (fallback). Ví dụ: nếu dịch vụ sinh mã OTP gặp lỗi, hệ thống có thể tạm thời chấp nhận xác thực qua backup channel thay vì đổ toàn bộ giao dịch.

Phù hợp với chuyển đổi số: Đáp ứng yêu cầu của Ngân hàng Nhà nước trong chiến lược phát triển ngân hàng số, cho phép tích hợp nhanh với fintech, ví điện tử, cổng thanh toán bên thứ ba thông qua các API chuẩn hóa.

Thách thức và hạn chế

Phức tạp trong vận hành: Quản lý hàng trăm dịch vụ đòi hỏi hệ thống giám sát, logging, tracing tập trung. Ngân hàng cần đầu tư vào các công cụ như Kubernetes, Prometheus, Grafana, Jaeger để vận hành hiệu quả.

Độ trễ giao tiếp: Khi một giao dịch thanh toán phải đi qua 5–7 dịch vụ (xác thực → kiểm tra số dư → ghi nợ → ghi có → ghi log → thông báo), tổng độ trễ có thể tăng lên so với lời gọi hàm nội bộ trong ứng dụng nguyên khối. Giải pháp là sử dụng giao thức gRPC thay vì HTTP REST trong các trường hợp yêu cầu độ trễ thấp.

Quản lý dữ liệu phân tán: Mỗi dịch vụ có cơ sở dữ liệu riêng dẫn đến thách thức về tính nhất quán dữ liệu. Ngân hàng thường áp dụng mô hình Saga hoặc Event Sourcing kết hợp với cơ chế eventual consistency thay vì giao dịch ACID truyền thống.

Yêu cầu nhân lực chuyên môn cao: Đội ngũ kỹ sư cần thành thạo DevOps, containerization, service mesh (Istio, Linkerd), CI/CD pipeline. Đây là rào cản lớn với các ngân hàng có quy trình công nghệ truyền thống.

Công nghệ và công cụ thường sử dụng

  • Container & Orchestration: Docker, Kubernetes, OpenShift
  • API Gateway: Kong, Apigee, AWS API Gateway
  • Service Mesh: Istio, Linkerd
  • Message Broker: Apache Kafka, RabbitMQ, ActiveMQ
  • Monitoring & Observability: Prometheus, Grafana, ELK Stack, Zipkin
  • CI/CD: Jenkins, GitLab CI, ArgoCD
  • Ngôn ngữ lập trình phổ biến cho mỗi dịch vụ: Java (Spring Boot), Go, Node.js, Python

Nội dung mang tính tham khảo, không thay thế tư vấn chuyên môn về kiến trúc hệ thống. Người luyện thi tuyển dụng ngân hàng nên kết hợp tìm hiểu thêm tài liệu từ Ngân hàng Nhà nước, các tổ chức như VNBA và tham khảo case study thực tế từ các ngân hàng số hàng đầu Việt Nam như Techcombank, MB, TPBank, VPBank để hiểu rõ cách áp dụng kiến trúc vi dịch vụ vào thực tiễn ngân hàng Việt Nam.

Kiến thức này có trong đề thi tuyển dụng ngân hàng

Luyện thi với đề mô phỏng thực tế, chấm điểm tức thì

B
BIDV

Miễn trừ trách nhiệm: Nội dung câu hỏi trên thithu.com chỉ mang tính chất luyện tập và tham khảo, không đại diện cho đề thi chính thức của bất kỳ tổ chức nào. Chúng tôi không chịu trách nhiệm về kết quả thi thực tế của người dùng.