Chuyên môn · Lăng kính theo ngành

Tập đoàn đa thương hiệu: tổ chức design system chung ra sao

Dùng chung mã nguồn không đồng nghĩa dùng chung một thiết kế. Câu hỏi là bạn tách phần riêng bằng cách nào mà không tạo ra nhiều hệ song song.

Chốt nhanh

Tổ chức theo kiến trúc token (đơn vị biến số thiết kế) ba tầng: một lõi dùng chung cho toàn tập đoàn, mỗi thương hiệu chỉ ghi đè tầng chủ đề (theme) của mình. Về con người, bắt đầu bằng đội tập trung rồi chuyển dần sang mô hình liên bang (federated) khi từng thương hiệu đã có đội đủ mạnh để đóng góp ngược lại. Đây là cấp độ thực sự cần quản trị (governance) chính thức, không chỉ là một thư viện component đặt chung server.

Đối sánh nhanh
Nên chọn hướng này khi
  • nhiều thương hiệu dùng chung mã nguồn, cần token ba tầng và quản trị
  • mỗi thương hiệu có đội riêng đủ mạnh để đóng góp ngược (liên bang)
  • đã lỡ có nhiều hệ rời rạc, cần hợp nhất trước
Chưa cần khi
  • tách nhánh mỗi thương hiệu một bản hệ, sau vài quý thành nhiều hệ không đồng bộ
  • không đặt tầng vùng tên trong token, không tách được phần chung và riêng
Nhìn nhanh
Ngành hay dùng
tập đoàn đa thương hiệunhãn trắng (white-label)

Khi tập đoàn có nhiều thương hiệu cùng dùng chung một mã nguồn, câu hỏi không phải là "dùng chung được không" mà là "tách phần riêng bằng cách nào để hai năm sau hệ vẫn còn nhất quán". Nếu không có kiến trúc và quản trị rõ ràng ngay từ đầu, kết quả gần như chắc chắn là mỗi đội tự xử theo cách của mình, và hệ dùng chung trở thành hư cấu trên giấy.

Kiến trúc token ba tầng

Nền tảng của mọi design system (hệ thiết kế) phục vụ nhiều thương hiệu là token (đơn vị biến số thiết kế như màu sắc, khoảng cách, cỡ chữ) được phân thành ba tầng rõ ràng:

  • Tầng nguyên thủy (primitive): toàn bộ giá trị thô của tập đoàn, ví dụ tất cả các màu trong bảng màu chính, tất cả bậc khoảng cách. Tầng này không ai dùng trực tiếp.
  • Tầng ngữ nghĩa (semantic): gán ý nghĩa cho giá trị thô, ví dụ "màu nút chính", "màu nền cảnh báo". Đây là tầng lõi dùng chung, nhất quán giữa mọi thương hiệu.
  • Tầng chủ đề (theme): mỗi thương hiệu có một thư mục riêng, chỉ ghi đè những giá trị ngữ nghĩa cần khác biệt. Thương hiệu A có màu nút chính là xanh biển, thương hiệu B chọn đỏ đô, lõi chung không thay đổi gì cả.

Nguyên tắc đặt tên token cũng cần có tầng vùng tên (namespace) để phân biệt: hệ nào, thương hiệu nào, miền nào. Không làm bước này, sau vài tháng token của thương hiệu này bị thương hiệu kia ghi đè mà không ai hay.

Mô hình đội: tập trung hay liên bang

Đội tập trung (centralized): một nhóm chuyên trách xây và duy trì toàn bộ hệ, các thương hiệu chỉ dùng. Phù hợp khi mới bắt đầu hoặc khi các thương hiệu chưa có đội thiết kế riêng đủ mạnh. Kiểm soát chất lượng tốt, nhưng dễ thành nút cổ chai khi quy mô lớn. Đội liên bang (federated): đội trung tâm giữ chuẩn và quyết định kiến trúc lõi, mỗi thương hiệu có đội riêng đóng góp component ngược lại theo quy trình đã thống nhất. Phù hợp khi tổ chức đã lớn, từng thương hiệu có đội đủ mạnh. Linh hoạt hơn, nhưng cần quản trị chặt để tránh mỗi đội lại tự đặt chuẩn riêng.

Trong thực tế, hầu hết tập đoàn nên bắt đầu bằng mô hình tập trung, rồi chuyển dần sang liên bang khi từng thương hiệu đã hiểu hệ và có người có thể đóng góp có trách nhiệm.

Quản trị: phần không thể bỏ qua

Ở quy mô nhiều thương hiệu, design system không còn là vấn đề kỹ thuật thuần túy. Hai thứ tối thiểu cần có:

  • Quy trình RFC (Request for Comment, tức đề xuất thay đổi có người duyệt): bất kỳ thay đổi nào ở lõi chung đều phải qua bước này. Ai đề xuất, ai duyệt, hạn bao lâu để các thương hiệu phản hồi. Không có bước này, một đội sửa lõi theo nhu cầu của mình sẽ vô tình phá vỡ trải nghiệm của thương hiệu khác.
  • Đo mức áp dụng (adoption): biết được đội nào đang thực sự dùng hệ, đội nào đã âm thầm quay lại làm thủ công. Không đo thì không biết, không biết thì không sửa được.

Một design system không có quản trị là một thư viện component đang chờ phân rã.

Nathan Curtis, EightShapes

Lỗi thường gặp ở tập đoàn

  • Fork mỗi thương hiệu một bản hệ riêng: ban đầu có vẻ linh hoạt, nhưng sau vài quý mỗi bản đi một hướng, cập nhật và sửa lỗi phải làm lại nhiều lần.
  • Có thư viện component nhưng không có governance: thay đổi tùy tiện, thương hiệu này sửa phá thương hiệu kia mà không có cơ chế cảnh báo.
  • Không đặt namespace trong token: phần chung và phần riêng trộn vào nhau, sau này muốn tách không tách được sạch.
  • Để nhiều hệ song song tồn tại quá lâu mà không có kế hoạch hợp nhất: chi phí duy trì nhân lên, nhất quán giảm dần.

Góc nhìn của Sinh Vũ

Đây là cấp độ cao nhất mà một design system có thể đạt đến. Cách Sinh Vũ tiếp cận là dựng token theo chuẩn DTCG (Design Token Community Group, định dạng token mở do cộng đồng thiết kế xây dựng) với lõi dùng chung và tầng chủ đề tách riêng cho từng thương hiệu, kèm quy trình RFC để mọi thay đổi đều có người đề xuất và người duyệt rõ ràng.

Về triển khai, Sinh Vũ thường chọn một sản phẩm điểm mẫu để chuyển sang hệ trước, kiểm chứng kiến trúc trong thực tế, rồi mới nhân rộng sang các thương hiệu còn lại. Cách này giúp phát hiện vấn đề sớm thay vì triển khai ồ ạt rồi mới biết thiếu sót.

Một lưu ý thực tế: hệ có thể xây rất tốt, nhưng nếu không có người chủ quản duy trì và tiến hóa theo thời gian, hệ sẽ dần bị bỏ qua. Ở quy mô tập đoàn, đây là bài toán điều phối nội bộ không kém phần quan trọng so với bài toán kỹ thuật. Anh / Chị nên cân nhắc kỹ cơ cấu đội và ngân sách bảo trì trước khi chốt phạm vi dự án.

Công cụ mang về

Checklist quyết định

Chủ đề: Tập đoàn đa thương hiệu dùng chung mã nguồn nên tổ chức hệ thế nào. Cẩm nang Sinh Vũ, sinhvu.com

0 trên 7 mục

Bấm chọn từng mục Anh / Chị thấy đúng, rồi bấm in hoặc lưu thành PDF để mang theo.

Dấu hiệu cho thấy Anh / Chị nên làm
Câu hỏi cần trả lời trước khi quyết định

Nếu Anh / Chị đánh dấu phần lớn ở nhóm dấu hiệu trên, đây là lúc nên trao đổi kỹ hơn. Sinh Vũ có thể cùng Anh / Chị soi lại và đề xuất hướng đi.

Nguồn tham khảo

Brad Frost, The Many Faces of Themeable Design Systems. Nathan Curtis, Team Models for Scaling a Design SystemConsolidating Design Systems (EightShapes). Kinh nghiệm thực hành Sinh Vũ Studio.

Câu hỏi thường gặp

Tại sao không để mỗi thương hiệu fork (tạo nhánh riêng) một bản hệ cho tiện?

Fork nghe có vẻ nhanh nhưng sau vài quý mỗi nhánh đi một hướng, sửa lỗi bảo mật hay cập nhật nền tảng phải làm lại nhiều lần. Quan trọng hơn, nhận diện thương hiệu bắt đầu trôi dạt mà không ai biết cho đến khi khách hàng nhận ra sự không nhất quán. Kiến trúc token ba tầng sinh ra đúng để giải quyết bài này: phần chung chỉ sửa một lần, phần riêng của từng thương hiệu được tách sạch.

Quản trị (governance) cụ thể trông như thế nào trong thực tế?

Tối thiểu cần hai thứ: quy trình RFC (Request for Comment, tức đề xuất thay đổi có người duyệt) để không ai tự ý sửa lõi chung mà không thông báo, và bộ chỉ số đo mức áp dụng (adoption) để biết đội nào đang âm thầm bỏ hệ ra làm tay. Sinh Vũ thường đề xuất thêm gói bảo trì định kỳ sau khi triển khai để duy trì hai thứ này, vì thiếu người chủ quản thì hệ tốt đến đâu cũng dần mục ruỗng.

Khi nào thì nên hợp nhất các hệ cũ thay vì xây lại từ đầu?

Nếu các hệ hiện tại đang chồng lấn, tức là component cùng chức năng xuất hiện ở nhiều nơi với tên và hành vi khác nhau, thì hợp nhất (consolidate) thường rẻ hơn xây mới. Chiến lược là kiểm kê toàn bộ component hiện có, gom những phần đã ổn định vào lõi, rồi dần loại bỏ các bản song song. Xây mới chỉ hợp lý khi hệ cũ nợ kỹ thuật quá nặng đến mức gom lại còn tốn hơn làm lại.

← Về Hệ thiết kế số
{INJ}