Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Network Automation] Hiểu Chuẩn Về API - Trái Tim Của Network Programmability & SDN

    Nhắc đến dân Network, hình ảnh quen thuộc nhất có lẽ là sợi cáp Console màu xanh huyền thoại và những đêm cặm cụi gõ từng dòng lệnh qua màn hình đen ngòm của PuTTY (SSH/Telnet).

    Để giám sát, chúng ta lại dựa dẫm vào SNMP. Nhưng hãy tự hỏi: Khi chúng ta dùng SNMP hay gõ từng dòng CLI, chúng ta có thực sự đang quản lý một hệ thống mạng lớn một cách linh hoạt và tối ưu thời gian?

    Thực tế là hạ tầng hiện nay không chỉ có Switch/Router vật lý, mà còn là sự bùng nổ của máy ảo (VM), Docker và đặc biệt là kiến trúc SDN (Software-Defined Networking). Quản trị mạng hiện đại đang dịch chuyển mạnh mẽ từ "cấu hình thủ công" sang "lập trình mạng" (Network Programmability). Và chìa khóa tối thượng kết nối mọi thành phần để tự động hóa hệ thống chính là: API (Application Programming Interface).

    Vậy API thực chất là gì, có mấy loại và nó "ăn nhập" thế nào vào quy trình vận hành hạ tầng của chúng ta? Cùng mình tóm tắt và bóc tách ngay dưới đây nhé!

    1. API là gì? Hiểu đơn giản qua các ví dụ thực tế

    API là một phần mềm trung gian, cho phép các ứng dụng khác nhau giao tiếp, trao đổi dữ liệu và dịch vụ với nhau thông qua một tập hợp các quy tắc định sẵn.
    • Ví dụ 1 (Người phục vụ nhà hàng): Bạn (người dùng) gọi món từ thực đơn. Người phục vụ (API) sẽ nhận yêu cầu của bạn, chuyển nó vào nhà bếp (Server/Hệ thống), và sau đó mang món ăn (Dữ liệu trả về - Response) ra cho bạn.
    • Ví dụ 2 (Đặt vé máy bay): Khi bạn dùng các trang web du lịch bên thứ ba để tìm vé, trang web đó sẽ dùng API do các hãng hàng không cung cấp để truy xuất thẳng vào cơ sở dữ liệu của từng hãng. Nhờ lệnh gọi API (API request), trang web tổng hợp được toàn bộ chuyến bay và hiển thị lên màn hình cho bạn.
    2. Phân loại API theo đối tượng sử dụng

    Trong thế giới phần mềm, API thường được chia làm 3 nhóm chính dựa trên quyền truy cập:
    • API mở (Open APIs / Public APIs): Khả dụng công khai. Tuy nhiên, nhà cung cấp thường yêu cầu một khóa (API Key) hoặc Token để kiểm soát lưu lượng truy cập.
    • API nội bộ (Internal APIs): Được sử dụng cục bộ trong nội bộ một tổ chức/doanh nghiệp để liên kết các dịch vụ và dữ liệu của riêng họ.
    • API cho đối tác (Partner APIs): Dành riêng cho các đối tác kinh doanh được cấp phép, giúp tạo thuận lợi cho việc tích hợp hệ thống giữa hai bên.
    3. Phân loại API theo giao thức Web Service

    Khi giao tiếp qua Internet, các hệ thống thường tuân theo 4 loại kiến trúc/giao thức Web Service phổ biến:
    • REST (Representational State Transfer): Kiến trúc phổ biến nhất hiện nay. Tập trung vào dữ liệu, vận hành qua các tài nguyên đơn giản, linh hoạt và tốn ít băng thông. Cho phép các Developer đưa ra khuyến nghị dễ dàng.
    • SOAP (Simple Object Access Protocol): Giao thức sử dụng XML, tuân thủ các quy tắc bảo mật rất nghiêm ngặt, được điều khiển bởi các hàm (function-driven) nhưng lại đòi hỏi nhiều băng thông hơn REST.
    • XML-RPC: Sử dụng định dạng chung XML để truyền dữ liệu. Đơn giản và tối ưu băng thông hơn SOAP. XML mạnh về cấu trúc tài liệu (Document) và có bảo mật tốt.
    • JSON-RPC: Tương tự XML-RPC nhưng dùng định dạng JSON. Cực kỳ nhẹ, tập trung chủ yếu vào dữ liệu (Data) dạng text/number, dù bảo mật không cao bằng XML.
    4. API trong quản trị hạ tầng mạng (Network Programmability)

    Quay trở lại với câu chuyện hạ tầng của chúng ta. Trong mô hình SDN, API đóng vai trò huyết mạch kết nối phần mềm (ngôn ngữ lập trình như Python) với hạ tầng vật lý/ảo hóa, được phân loại theo các cấp độ:
    • API truy cập thiết bị (Device API - Southbound API): Thay vì gõ lệnh CLI hay dùng SNMP, Controller hoặc các Script tự động hóa sẽ gọi API trực tiếp xuống thiết bị mạng. Các giao thức tiêu biểu thay thế CLI hiện nay là NETCONF, RESTCONF, và GNMI.
    • API giao tiếp với Controller (Northbound API): Dành cho việc các ứng dụng quản lý bên trên giao tiếp với SDN Controller để ra lệnh định tuyến, cấu hình tự động.
    • API hiển thị Dashboard: Lấy dữ liệu từ hệ thống để trực quan hóa lên các bảng điều khiển giám sát tổng quan.
    Việc chuyển dịch từ CLI sang gọi API thao tác thẳng vào hạ tầng là xu hướng tất yếu. Mọi người trong cộng đồng đang sử dụng giao thức (RESTCONF, NETCONF...) hay công cụ nào (Python, Postman, Ansible...) để tự động hóa hệ thống mạng của mình? Cùng chia sẻ và thảo luận dưới bài viết nhé!

    Click image for larger version

Name:	api.png
Views:	0
Size:	25.1 KB
ID:	441559
Working...
X