Một function, nhưng kéo theo 80 package

Chỉ cần export CSV, nhưng em kéo pandas, openpyxl, xlrd… cho chắc, anh ơi!

Chỉ cần export file CSV, nhưng dev kéo cả pandas, openpyxl, và xlrd, làm Docker image phình to như “bong bóng bất động sản”. Dependency tree dài hơn danh sách crush, CI build chậm, runtime ì ạch.

Khi dev import 80 package chỉ để export CSV!

Thực trạng: Dependency tree phình to

Thực trạng:  
  • Dev import thư viện “all-in-one” (như pandas) cho một chức năng nhỏ (CSV).  
  • Mỗi package kéo theo chục dependency con, tạo cây phụ thuộc khổng lồ.  
  • Không audit dependency, không biết đang dùng gì.
Hệ quả:  
  • Docker image nặng: Image vài GB, deploy chậm, tốn tài nguyên.  
  • CI chậm: Build mất 10 phút vì tải hàng chục package.  
  • Rủi ro bảo mật: Dependency thừa dễ dính CVE.

Giải pháp: Audit và tối giản dependency

Để codebase “gọn nhẹ”:  
  • Dùng package nhỏ: Thay pandas bằng csv module chuẩn của Python cho export CSV.  
  • Audit dependency tree: Dùng npm ls, composer show, hoặc pipdeptree để tìm package thừa.  
  • CI check: Thêm step kiểm tra dependency size trong pipeline.

Ví dụ: Export CSV với Python csv:

import csv
with open('output.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['id', 'name'])

🎯 Tóm lại: Kéo 80 package cho một hàm là “mua cả siêu thị để lấy muối”. Audit dependency, dùng package nhẹ để build nhanh, runtime mượt.

Post a Comment

Mới hơn Cũ hơn