Infrastructure Code là gì

Infrastructure code (code hạ tầng) là bất kỳ code nào không thỏa mãn tiêu chí của Core Code là gì. Nói đơn giản: muốn chạy được thì phải có “cái gì đó” bên ngoài hỗ trợ - kết nối tới hệ thống khác, hoặc phải chạy trong một môi trường đặc thù.

Đây là lớp code kết nối logic lõi với thế giới xung quanh: cơ sở dữ liệu, web server, file system, dịch vụ web, message queue, framework…

🔎 Dấu hiệu nhận biết

Nhìn vào code, nếu thấy các chi tiết kỹ thuật về bên ngoài thì rất có thể là infrastructure code:

  • Chuỗi DSN kết nối DB, tên bảng, câu lệnh SQL (SELECT * FROM users, User::find(5))
  • URL gọi API (Http::get('https://api.bank.com/rates'))
  • Đọc/ghi file (file_get_contents(...)), gửi email qua PHPMailer
  • Phần lớn code thuộc framework: Controller, Eloquent Model (Active Record gắn DB), hầu hết /vendor

⚠️ Abstraction KHÔNG tự biến hạ tầng thành core

Đây là điểm dễ nhầm nhất:

Bạn tạo interface Mailer và core gọi Mailer->send(). Interface giúp tách bạch phụ thuộc, nhưng bản chất “gửi email” vẫn là một concern hạ tầng → phần thực thi (dù gián tiếp qua interface) vẫn là infrastructure.

Tương tự, Connection interfaceinsert($table, $data) - dù UserRegistration gọi qua interface này, nó vẫn “vướng” chi tiết về DB (khái niệm $table). Kết luận: chỉ khi abstraction đủ tách rời khỏi chi tiết kỹ thuật thì code dùng nó mới thoát khỏi hạ tầng. Interface quá sát hạ tầng (interface kết nối DB, interface HTTP client) → vẫn mang tính hạ tầng.

🧮 Công thức

Infrastructure code = (tổng code) − (core code). Bất cứ chỗ nào core “dừng lại”, cần “ra ngoài” làm gì đó, thì phần “ra ngoài” đó là hạ tầng.

Liên quan