Dependency lồng nhau – đến mức không biết project đang xài cái gì

Có 3 SDK Facebook, 2 package gọi Stripe, mỗi dev xài một cái… ai biết đâu mà lần!

Audit codebase mà thấy 3 SDK Facebook, 2 thư viện Stripe, và cả đống package lồng nhau như “tổ chim”, tôi chỉ hỏi: “Team này có ai thống nhất gì không?”. Dependency xung đột, CI gãy, debug thì như mò kim đáy bể.

Dependency tree khi team không thống nhất SDK!

Thực trạng: Dependency hỗn loạn

Thực trạng:  
  • Mỗi dev tự import SDK theo thói quen, không có danh sách chuẩn.  
  • Dependency lồng nhau (package A kéo B, B kéo C), gây xung đột version.  
  • Không có governance, không ai biết project đang dùng cái gì.
Hệ quả:  
  • Xung đột version: SDK khác version phá nhau, API trả lỗi ngẫu nhiên.  
  • CI/CD thất bại: Build gãy vì dependency không tương thích.  
  • Debug đau đầu: Lỗi từ SDK nào? Không ai biết!

Giải pháp: Chuẩn hóa và adapter layer

Để “dọn tổ chim”:  
  • Approved library list: Quy định danh sách SDK chính thức, ghi trong README.  
  • Enforce qua code review: Từ chối PR nếu dùng package ngoài danh sách.  
  • Adapter layer: Viết wrapper để thống nhất cách gọi SDK (như Stripe).

Ví dụ: Wrapper cho Stripe:

class PaymentService {
  constructor() {
    this.stripe = require('stripe')('sk_test_123');
  }
  charge(amount) {
    return this.stripe.charges.create({ amount });
  }
}

🎯 Tóm lại: Dependency lồng nhau như “tổ chim” làm team lạc lối. Chuẩn hóa SDK, enforce code review, và dùng adapter để codebase thống nhất, debug dễ.

Post a Comment

Mới hơn Cũ hơn