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

  • WEbHook

    Webhooks – "Reverse API" giúp hệ thống chủ động gửi dữ liệu


    Khi mới làm quen với API, nhiều người nghĩ rằng client luôn phải chủ động gửi request để lấy dữ liệu. Tuy nhiên, trong các hệ thống hiện đại như GitHub, GitLab, Stripe, Cisco DNA Center, ServiceNow hay Slack, cách làm này không còn tối ưu.

    Thay vào đó, các nền tảng này sử dụng Webhook để chủ động thông báo khi có sự kiện xảy ra. Vì vậy, Webhook thường được gọi là "Reverse API". Webhook là gì?


    Webhook là cơ chế cho phép server tự động gửi dữ liệu đến một URL đã đăng ký trước mỗi khi có một sự kiện (event) xảy ra.

    Thay vì:
    Client hỏi liên tục:
    "Có dữ liệu mới chưa?"
    "Có dữ liệu mới chưa?"
    "Có dữ liệu mới chưa?"

    Webhook hoạt động theo kiểu:
    Có sự kiện →
    Server lập tức gửi HTTP Request →
    Client nhận dữ liệu

    Đây là mô hình Event-Driven Communication.
    Vì sao gọi là Reverse API?


    API truyền thống (Pull Model):
    Client --------GET-------> Server
    Client <------Response------

    Webhook (Push Model):
    Server -------POST-------> Client Endpoint
    Server <------200 OK-------

    Trong trường hợp này, server là bên chủ động khởi tạo kết nối, nên Webhook được gọi là Reverse API.
    Đặc điểm của Webhook
    • Hoạt động theo mô hình Event-driven.
    • Chỉ gửi dữ liệu khi có sự kiện xảy ra.
    • Giảm số lượng request không cần thiết so với polling.
    • Đơn giản, nhẹ và dễ tích hợp.
    • Thường sử dụng HTTP POST (đôi khi là PUT) để gửi dữ liệu đến URL nhận.

    Ví dụ:
    POST https://myserver.example.com/webhook

    Payload thường ở dạng JSON:
    {
    "event": "device_offline",
    "hostname": "SW-CORE-01",
    "timestamp": "2026-06-27T08:15:20Z"
    }
    Webhook cần xác thực như thế nào?


    Để tránh bị giả mạo request, Webhook thường sử dụng các cơ chế xác thực như:
    • Basic Authentication
    • API Key
    • Integration Key
    • Bearer Token
    • HMAC Signature (được nhiều dịch vụ như GitHub, Stripe sử dụng)

    Receiver nên kiểm tra chữ ký hoặc token trước khi xử lý dữ liệu.
    Quy trình hoạt động
    1. Ứng dụng A đăng ký một Webhook URL.
    2. Khi có sự kiện xảy ra, Server tạo HTTP POST.
    3. Dữ liệu được gửi đến Receiver.
    4. Receiver xử lý và trả về HTTP 200 OK.
    5. Nếu thất bại, nhiều hệ thống sẽ tự động retry theo chính sách của nhà cung cấp.

    Ví dụ trong DevOps và Network Automation


    Webhook được sử dụng rất phổ biến trong các quy trình tự động hóa:
    • GitHub gửi Webhook khi có Push hoặc Pull Request, kích hoạt Jenkins hoặc GitHub Actions.
    • GitLab kích hoạt pipeline CI/CD sau mỗi lần commit.
    • Cisco DNA Center gửi thông báo khi thiết bị up/down hoặc cấu hình thay đổi.
    • ServiceNow gửi sự kiện tạo Incident đến hệ thống tự động xử lý.
    • Slack hoặc Microsoft Teams nhận thông báo build thành công/thất bại.
    • Stripe gửi thông báo khi thanh toán hoàn tất để hệ thống cập nhật trạng thái đơn hàng.

    Ưu điểm của Webhook
    • Gần như thời gian thực (Near Real-Time).
    • Không cần polling liên tục.
    • Giảm lưu lượng mạng và tải máy chủ.
    • Phù hợp với kiến trúc Event-Driven và Microservices.
    • Dễ tích hợp với các nền tảng Automation, DevOps và Cloud.

    Kết luận


    Webhook là một thành phần quan trọng trong các hệ thống hiện đại, đặc biệt là DevOps, Cloud Native, Network Automation và AI Agents. Thay vì liên tục "hỏi" server xem có dữ liệu mới hay không, Webhook cho phép server chủ động "đẩy" thông tin ngay khi có sự kiện xảy ra, giúp giảm độ trễ, tiết kiệm tài nguyên và xây dựng các quy trình tự động hóa hiệu quả hơn.

    Đối với các kỹ sư DevOps, NetDevOps và Automation Engineer, việc hiểu và triển khai Webhook là nền tảng để tích hợp các công cụ như GitHub, GitLab, Jenkins, ServiceNow, Cisco DNA Center, Ansible AWX hay các AI Agent vào một hệ sinh thái tự động hóa thống nhất.​
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X