Chuyển đến nội dung
vinhnq.com
Tất cả dự án

Wala-ICT

BitBuild

SaaS đa tenant về mua sắm xây dựng

Main Backend Engineer · Team 4 người · từ sprint đầu đến production

Bài toán

Một sản phẩm đa tenant mới cần ranh giới kiến trúc rõ ràng và luồng mua hàng không bao giờ bị trùng.

Kiến trúc

RequestReleaseTenantsweb clientsREST APIHexagonal · JWT · RBACPostgreSQLwith Redis and MinIOGitLab CIDocker Compose
BitBuild multi-tenant backend

Sơ đồ đã giản lược, không có chi tiết nội bộ của khách hàng.

Công việc đã làm

  • Tái cấu trúc mã nguồn thành hexagonal architecture nhiều module, dùng ArchUnit test để giữ ranh giới.
  • Dùng idempotency key chống trùng đơn mua hàng và advisory lock để job định kỳ chỉ chạy một lần.
  • Thiết lập GitLab CI và deploy Docker Compose có health check.
  • Xây dựng xác thực đa tenant: JWT với refresh token rotation, thu hồi token bằng Redis, đăng nhập mạng xã hội và RBAC theo phạm vi dữ liệu (cá nhân, công trường được gán, toàn tenant).
  • Phụ trách domain model, schema PostgreSQL và REST API cho các module mua sắm, hợp đồng, phê duyệt và nhà cung cấp.

Quyết định chính

Giữ kiến trúc bằng test

ArchUnit test ngăn ranh giới giữa các lớp bị phá vỡ khi mã nguồn hexagonal nhiều module lớn dần.

Giả định mọi lần gửi và mọi job đều có thể lặp

Idempotency key chặn gửi trùng đơn mua hàng, còn advisory lock của PostgreSQL giúp job định kỳ chỉ chạy một lần trên nhiều instance.

Công nghệ

Java 21 · PostgreSQL · Redis · GitLab CI

Tất cả dự án