Toward a Global Identity Platform
Bài tóm tắt Mercari 2025 3. Quy mô lớn Độ khó: Trung bình
Mercari · 2025 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Một bài trong series Global App (ngoài sheet), do đội ID Platform viết. Bối cảnh: Mercari 2025 (ID là một nền tảng được "mở rộng" chứ không xây lại).
Bối cảnh
- Tới 2024, nền tảng định danh của Mercari (IDaaS cho mọi dịch vụ của tập đoàn: mật khẩu, SMS OTP, đăng nhập mạng xã hội, Passkey) chỉ phục vụ người dùng Nhật, và phần lớn hệ tài khoản vẫn nằm trong monolith PHP cũ; việc tách sang microservices còn dang dở.
- Đầu 2024: cho người dùng Đài Loan tạo tài khoản bằng email + mật khẩu và mua trên web C2C, chỉ dùng tính năng marketplace.
Thay đổi chính
- Tài khoản toàn cầu không vào hệ cũ: dữ liệu tài khoản mới nằm trong một microservice riêng; vì nhiều dịch vụ vẫn đọc DB cũ, một reconciler đồng bộ dữ liệu giữa hệ mới và hệ cũ. Mỗi người một tài khoản dùng toàn cầu, thêm thuộc tính
country_region_code. - Account Signup Orchestrator: hệ cũ dùng bảng tạm trong một DB chung cho các bước đăng ký; khi mỗi domain (định danh, KYC) có DB riêng thì không còn bảng tạm, nên một service điều phối kiểm tra "tài khoản đã sẵn sàng chưa" và nối các bước, người dùng bỏ dở thì tiếp tục được.
- Luồng đăng ký do server dẫn: frontend chỉ là bộ điều phối, lấy "chỉ dẫn" từ server rồi vẽ UI tương ứng, lặp tới khi server báo xong; yêu cầu khác nhau theo vùng (xác minh tuổi, KYC) nằm ở server.
- Kiểm soát theo vùng ở hai lớp: authorization server chỉ cấp token nếu
country_region_codecủa tài khoản nằm trong danh sách vùng của OAuth client; resource server cấu hình vùng được phép cho từng endpoint và kiểm khi xác thực token. - Nâng mức xác thực khi cần (step-up): không bắt nhập số điện thoại lúc đăng ký (tránh hai lần OTP); mỗi endpoint khai báo mức bảo đảm tối thiểu (AAL/IAL), thiếu thì từ chối và client kích hoạt luồng nâng mức (xác minh số điện thoại, Passkey) theo RFC 9470 (
acr_values,claims). - Ngôn ngữ qua
ui_localescủa OIDC; app mobile dùng in-app browser để chia sẻ phiên SSO; chuẩn hoá đăng xuất theo RP-Initiated Logout. Do thời gian, trang đăng nhập cho người ngoài Nhật vẫn tách riêng.
Vì sao
- Không muốn đưa thêm tài khoản mới vào hệ cũ đang cần tách, nhưng cũng không thể bắt mọi dịch vụ đọc từ hệ mới ngay; đồng bộ hai chiều mua thời gian cho việc chuyển dần.
Bài học cho SWE
- Dữ liệu mới vào hệ mới, giữ tương thích bằng đồng bộ ngược sang hệ cũ cho tới khi người đọc chuyển hết.
- Khi tách DB theo domain, quy trình nhiều bước từng dựa vào bảng tạm cần một điều phối viên rõ ràng.
- Kiểm soát truy cập theo vùng nên có ở cả nơi cấp token lẫn nơi phục vụ API; mức bảo đảm theo endpoint cho phép đăng ký nhẹ rồi nâng dần.
Liên quan
#identity platform#IDaaS#legacy PHP monolith#reconciler#signup orchestrator#server-driven flow#region-based access control#OAuth2/OIDC#AAL/IAL#step-up authentication#ui_locales
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (2)