Mã nguồn của bạn có thân thiện với môi trường không? Cách tính toán tác động carbon của API

07 tháng 4, 2026·5 phút đọc

Các lập trình viên thường dành nhiều giờ để tối ưu hóa hiệu năng nhưng ít khi xem xét tác động môi trường của mã nguồn. Bài viết này giới thiệu cách sử dụng thư viện co2.js để ước lượng lượng khí thải CO₂ từ các yêu cầu API, giúp hiểu rõ hơn về "dấu chân carbon" trong phát triển phần mềm.

Mã nguồn của bạn có thân thiện với môi trường không? Cách tính toán tác động carbon của API

Chúng ta thường dành hàng giờ đồng hồ để tối ưu hóa hiệu suất, khả năng mở rộng và trải nghiệm người dùng. Nhưng bao nhiêu lần trong số đó chúng ta thực sự cân nhắc đến tác động môi trường của những dòng mã mình viết? Khi khối lượng dữ liệu AI ngày càng gia tăng và luồng dữ liệu tăng mạnh, mỗi lần gọi API, từng byte dữ liệu được truyền tải đều đóng góp vào một "dấu chân số" lớn hơn. Đã đến lúc chúng ta cần bắt đầu suy nghĩ về chi phí carbon của các hoạt động kỹ thuật số này.

Điều này không phải để gây cảm giác tội lỗi, mà là để nâng cao nhận thức và cung cấp cho bạn một cách thực tế để định lượng những yếu tố thường bị bỏ qua. Điều gì sẽ xảy ra nếu bạn có thể ước lượng lượng khí thải CO₂ được tạo ra bởi một yêu cầu API đơn giản? Bạn hoàn toàn có thể làm được điều đó, và nó đơn giản hơn bạn nghĩ nhờ vào một số dự án mã nguồn mở thông minh.

Đoạn mã minh họa

Việc tính toán sử dụng thư viện co2.js, được bảo trì bởi The Green Web Foundation, dựa trên mô hình 1byte (mô hình Thiết kế Web Bền vững).

Dưới đây là những gì đang diễn ra trong quá trình này:

  • Đếm byte (Byte Counting): Trình duyệt sẽ lấy dữ liệu JSON mà bạn đang gửi đến và nhận từ API. Nó chuyển đổi chúng thành chuỗi văn bản thô và sử dụng Blob API có sẵn để đếm chính xác số lượng byte.
  • Ước lượng năng lượng và chuyển đổi carbon: Thư viện co2.js sẽ lấy tổng số byte đó và ước lượng lượng điện năng cần thiết để truyền tải dữ liệu, sau đó chuyển đổi thành gam CO₂ tương đương (CO₂e) dựa trên cường độ carbon trung bình toàn cầu của lưới điện.

Rất quan trọng để hiểu rằng co2.js không tự động biết chính xác vị trí của mọi máy chủ hay mức tiêu thụ điện năng thời gian thực của thiết bị người dùng. Thay vào đó, nó sử dụng một khuôn khổ nghiên cứu kỹ lưỡng gọi là mô hình Thiết kế Web Bền vững (SWD) như một đại diện cho các thực tế phức tạp này.

Cường độ carbon trung bình toàn cầu

Theo mặc định, mô hình giả định cường độ lưới điện trung bình toàn cầu (lịch sử là khoảng 442 gam CO₂ mỗi kilowatt-giờ). Nếu bạn biết trung tâm dữ liệu của mình sử dụng năng lượng tái tạo, bạn có thể cung cấp một giá trị cường độ cụ thể hơn và thấp hơn cho thư viện.

Sơ đồ phân bổ năng lượng

Vì chúng ta không thể đo lường điện năng vật lý tại mọi điểm, mô hình SWD sử dụng các phán đoán cố định (tỷ lệ phần trăm) để phân bổ tổng năng lượng ước lượng (tính bằng kWh) cho bốn khu vực chính:

  1. Thiết bị người dùng cuối (52%): Chiếm phần năng lượng do điện thoại hoặc máy tính xách tay của người dùng sử dụng để xử lý và hiển thị dữ liệu.
  2. Sản xuất phần cứng (19%): "Carbon nhúng" (embodied carbon) — năng lượng tiêu thụ trong quá trình sản xuất các thiết bị và cơ sở hạ tầng được sử dụng.
  3. Trung tâm dữ liệu (15%): Điện năng cung cấp cho máy chủ và hệ thống làm mát.
  4. Mạng lưới (14%): Năng lượng cho các bộ định tuyến, công tắc, trạm phát sóng di động và cáp truyền dữ liệu.

Điều này có nghĩa là một phần đáng kể trong "tác động carbon" mà chúng ta tính toán được quy cho thiết bị của người dùng cuối và carbon nhúng của phần cứng — những khía cạnh mà chúng ta thường không cân nhắc khi nghĩ về tác động "phía máy chủ". Đây là cái nhìn toàn diện về toàn bộ vòng đời dữ liệu kỹ thuật số.

Dưới đây là đoạn mã JavaScript mẫu để thực hiện việc tính toán này:

import { co2 } from "https://esm.sh/@tgwf/co2@latest";

// 2. Khởi tạo bộ ước lượng sử dụng mô hình "1byte" của Sustainable Web Design
const co2Estimator = new co2({ model: "1byte" });

async function calculateApiImpact() {
  // 3. Xác định dữ liệu bạn đang gửi
  const requestPayload = { query: "Xu hướng công nghệ mới nhất", depth: "standard" };

  // (Mô phỏng một cuộc gọi API tại đây)
  const responsePayload = { results: ["..."] }; 

  // 4. Tính toán kích thước byte chính xác của dữ liệu bằng cách sử dụng Blob API
  const reqBytes = new Blob([JSON.stringify(requestPayload)]).size;
  const resBytes = new Blob([JSON.stringify(responsePayload)]).size;
  const totalBytes = reqBytes + resBytes;

  // 5. Tính toán dấu chân carbon
  const emissionsGrams = co2Estimator.perByte(totalBytes);
  const sizeInKB = (totalBytes / 1024).toFixed(2);

  // Xuất kết quả
  console.log(`📦 Dữ liệu đã chuyển: ${sizeInKB} KB`);
  console.log(`🌱 Tác động Carbon: ${emissionsGrams.toFixed(6)} gam CO₂e`);
}

calculateApiImpact();

Tổng kết

Mặc dù phép tính này chỉ là một ước lượng (proxy), nhưng nó là một công cụ mạnh mẽ. Nó cung cấp một con số cụ thể cho phép chúng ta bắt đầu định lượng và thảo luận về tác động môi trường của mã nguồn. Lần tới khi bạn thiết kế một API, hãy cân nhắc kích thước của các gói dữ liệu (payload). Một sự tối ưu hóa nhỏ, ví dụ như giảm lượng dữ liệu được truyền trong một cuộc gọi API phổ thông, có thể tạo ra tác động tích cực tích lũy lên dấu chân carbon chung của chúng ta.

Mỗi byte đều quan trọng.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗