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 Mailervà core gọiMailer->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 interface có insert($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
- Core Code là gì - mặt đối lập
- Ranh giới giữa Core và Infrastructure Code - vùng xám thực tế
- Adapter - Bộ chuyển đổi - nơi cô lập infrastructure trong Hexagonal
- Tầng Infrastructure - nơi tập trung code hạ tầng trong kiến trúc phân lớp