Webhook

Webhook là gì ?

link: https://mikotech.vn/webhook-la-gi/

  • Webhook là một kỹ thuật cho phép các ứng dụng tương tác với nhau qua giao thức HTTP. Nó cho phép một ứng dụng gửi thông tin tự động đến một ứng dụng khác mỗi khi có sự kiện xảy ra, thay vì phải chờ đợi yêu cầu từ phía ứng dụng đó.
  • Webhook hay còn được biết đến với tên gọi là call back hay HTTP push API. Đây là một trong những công nghệ tiên tiến, tiện dụng nhất trong việc triển khai phản ứng các sự kiện diễn ra trên website.
  • Công nghệ này mang đến những giải pháp nhằm giúp cho các ứng dụng bên server-side có thể gửi những thông tin về những sự kiện đang diễn ra trên máy chủ đến các ứng dụng bên client-side.

_config.yml

  • Webhook thường được sử dụng trong các ứng dụng web, như email marketing, chatbot và các ứng dụng phân tích dữ liệu, để kết nối với các dịch vụ bên ngoài, như Google Analytics, Facebook, hoặc các dịch vụ thanh toán trực tuyến.

  • Sau khi đã tổng hợp thông tin, dữ liệu, bên phía máy chủ sẽ tự động thông báo đến người dùng để cập nhật thông tin một cách nhanh chóng và chính xác nhất.

Tính năng của Webhook là gì?

  • Webhook là một công nghệ được sử dụng rộng rãi trong lập trình ứng dụng với những tính năng nổi bật sau:

  • Thông báo tức thời : Webhook cho phép truyền tải thông tin ngay khi sự kiện xảy ra. Từ đó giúp cho các ứng dụng tương tác với nhau một cách nhanh chóng và hiệu quả hơn.

  • Tính linh hoạt : Các Webhook được thiết kế để hoạt động độc lập, không phụ thuộc vào phần mềm hay dịch vụ khác. Do đó, chúng có tính linh hoạt cao và có thể tương tác với nhiều ứng dụng khác nhau.

  • Dễ dàng cấu hình : Việc cấu hình một Webhook rất đơn giản, chỉ cần thêm địa chỉ URL của ứng dụng muốn nhận thông tin sự kiện là đủ.

  • Đáp ứng theo yêu cầu : Webhook chỉ hoạt động khi có sự kiện xảy ra và được kích hoạt theo yêu cầu của ứng dụng. Lúc này giúp tránh tình trạng phải liên tục truyền tải dữ liệu không cần thiết.

  • Tiết kiệm tài nguyên : Webhook giúp giảm tải cho server bằng cách cho phép ứng dụng nhận thông tin sự kiện trực tiếp từ nguồn gốc của chúng, thay vì phải truy cập liên tục vào server để lấy thông tin.

Những chức năng chính của Webhook

  • Bởi vì dùng giao thức HTTP nên các chức năng cơ bản của Webhook có thể được tích hợp vào website mà không cần thêm bất kỳ cơ sở hạ tầng nào khác.

  • Công nghệ này được xem là cuộc gọi lại do người dùng định nghĩa và được kích hoạt bởi các sự kiện diễn ra trên trang web. Mỗi khi website có sự kiện nào đó, trang nguồn có thể nhanh chóng tạo yêu cầu giao thức HTTP đến URL được cấu hình dành cho Webhook.

_config.yml

  • Bên cạnh đó, Webhook còn có thể kích hoạt những bản dựng với các hệ thống tích hợp liên tục hoặc gửi đến những hệ thống được dùng để theo dõi lỗi.

  • Ngoài ra, Webhook còn có 4 chức năng hỗ trợ trong thiết kế website là:
  • Thêm mới khách hàng.
  • Thêm mới sản phẩm.
  • Duyệt đơn hàng.

Những cách sử dụng trong Webhook

Consuming a Webhook (Sử dụng/tiêu thụ Webhook)

  • Để sử dụng Webhook, bạn cần gửi cho nhà cung cấp Webhook một URL để có thể gửi yêu cầu. Việc này được thực hiện thông qua bảng điểu khiển ở backend hoặc API.

  • Điều đó cũng đồng nghĩa với việc bạn phải thiết lập, sắp xếp URL cho ứng dụng của mình để có thể truy cập từ những trang web công khai. Có 2 hình thức mà Webhook sẽ gửi thông tin, dữ liệu cho bạn là JSON và XML. Ngoài ra, dữ liệu nhiều lúc còn tồn tại ở dạng biểu mẫu.

  • Những cách thức này đều được đánh giá là khá dễ hiểu và thường được tự động thông qua các nền tảng framework.

Debugging a Webhook (Gỡ lỗi Webhook)

  • Do cơ chế của Webhook không đồng bộ nên việc gỡ lỗi Webhook sẽ diễn ra Khá phức tạp . Bạn phải kích hoạt, sau đó đợi một lúc rồi mới tiến hành kiểm tra phản hồi. Việc này sẽ tốn khá nhiều thời gian nên bạn cần phải có sự kiên nhẫn cao.

  • Để quá trình gỡ lỗi diễn ra một cách đơn giản và dễ dàng hơn, bạn có thể tham khảo một vài gợi ý như sau:

  • Giả lập những yêu cầu phản hồi bằng cURL hoặc Postman
  • Kiểm tra lại các code trên máy tính của bạn bằng các công cụ như Ngrok
  • Hiểu rõ những gì được cung cấp bởi Webhook bằng các công cụ thu thập yêu cầu phản hồi như RequestBin
  • Theo dõi toàn bộ quy trình thông qua các công cụ như Runscope

Securing Webhook (Bảo mật Webhook)

  • Webhook sẽ gửi những thông tin dữ liệu đến các URL có sẵn trong ứng dụng của bạn. Điều này khiến người khác vẫn có cơ hội tìm thấy URL cũng như những dữ liệu đó, đồng thời có thể cố tình làm sai lệch đi dữ liệu được gửi ban đầu.

_config.yml

  • Bạn có thể ngăn chặn, phòng tránh những nguy cơ này bằng cách sử dụng kết nối TLS thông qua giao thức HTTPs. Sau đó, bạn sẽ tiếp tục tăng cường độ bảo mật qua một số cách như:

  • Cách 1: Thêm TOKEN vào URL dùng để nhận dạng
  • Cách 2: Triển khai basic Auth.

  • Cả hai cách trên đều có tác dụng bảo mật cao, giúp ngăn chặn được hầu hết các cuộc tấn công. Tuy nhiên, chúng có nhược điểm đó là phải gửi mã xác thực cùng với yêu cầu.

  • Cách 3: Yêu cầu nhà cung cấp ký vào mỗi yêu cầu mà họ gửi đến bạn, đồng thời tiến hành xác minh chữ ký. Cách này có một hạn chế là bạn phải yêu cầu chữ ký từ nhà cung cấp, nếu không thì bạn hoàn toàn không thể sử dụng được.

Tại sao Webhook quan trọng đối với phát triển ứng dụng?

  • Sau khi đã hiểu rõ hơn về Webhook là gì vậy thì tại sao Webhook lại quan trọng đến vậy? Webhook là một công nghệ quan trọng trong phát triển ứng dụng. Vì nó cho phép ứng dụng của bạn nhận các thông báo tự động và cập nhật từ các nguồn bên ngoài.

  • => Điều này giúp tối ưu hóa quá trình tích hợp và tương tác giữa các ứng dụng. Giúp cho ứng dụng của bạn hoạt động hiệu quả hơn và tiết kiệm thời gian cho nhóm phát triển.

  • Trước khi có Webhook, việc tương tác giữa các ứng dụng phải được thực hiện thông qua việc poll (kiểm tra) liên tục từ ứng dụng này sang ứng dụng kia để kiểm tra sự thay đổi hoặc cập nhật mới nhất.

  • => Điều này không chỉ làm tăng tốn thời gian và tài nguyên mà còn ảnh hưởng đến hiệu suất của hệ thống.

_config.yml

  • Với Webhook, các thông báo và cập nhật được gửi đến ứng dụng của bạn ngay khi có sự thay đổi xảy ra. Từ đó giúp cho ứng dụng của bạn có thể đáp ứng nhanh chóng và đồng bộ hóa với các hệ thống khác.

  • Ngoài ra, Webhook còn giúp tiết kiệm băng thông và tài nguyên máy chủ bằng cách cho phép các ứng dụng chỉ tương tác khi có sự kiện xảy ra.

  • Tóm lại, Webhook là một công nghệ quan trọng giúp tối ưu hóa quá trình phát triển và tương tác giữa các ứng dụng, đồng thời giúp tiết kiệm tài nguyên và thời gian cho app developer.

Khi nào nên sử dụng Webhook?

  • Webhook là một cơ chế để tương tác giữa các ứng dụng và hệ thống thông qua HTTP request/response. Khi một sự kiện xảy ra trên một ứng dụng, nó có thể gửi một HTTP request đến một URL được cấu hình trước để thông báo về sự kiện đó cho các ứng dụng hoặc hệ thống khác.

  • Việc sử dụng webhook phụ thuộc vào mục đích và nhu cầu của từng ứng dụng hoặc hệ thống:

  • Khi bạn cần cập nhật thông tin từ một ứng dụng sang ứng dụng khác khi có sự kiện xảy ra, bạn có thể sử dụng webhook để kích hoạt một hành động trên ứng dụng khác. Ví dụ như gửi thông báo hoặc cập nhật dữ liệu.
  • Webhook cũng được sử dụng trong các trường hợp như tích hợp các hệ thống khác nhau, xử lý dữ liệu thời gian thực, hoặc triển khai các chức năng tự động hoặc đồng bộ hóa dữ liệu giữa các ứng dụng.
  • Tạo giải pháp cho việc cung cấp dữ liệu để ứng dụng có thể hoạt động bình thường trong trường hợp không có API hoặc API hoạt động không tốt.

Vi dụ điển hình về Webhook

MailChimp

  • MailChimp là một dịch vụ email marketing được sử dụng để gửi email hàng loạt cho khách hàng và đối tác của doanh nghiệp. Nó cho phép người dùng tạo và quản lý danh sách email, tạo mẫu email, tùy chỉnh nội dung email và theo dõi hiệu quả của chiến dịch email.

  • MailChimp dùng Webhook để thực hiện một số chức năng như đăng ký nhận bản tin (Subscribing), hủy đăng kí (Unsubscribing) và thay đổi thông tin người dùng.

_config.yml

  • Bạn có thể hiểu cách hoạt động của MailChimp như sau:

  • Giai đoạn 1: MailChimp sẽ nhận được tệp khách hàng đã đăng ký nhận thông báo hoặc có lượt mua trên website.
  • Giai đoạn 2: Tùy theo từng trường hợp, khi có sự kiện xảy ra, MailChimp sẽ gửi thông báo cho khách hàng thông qua email.

  • Do đó, người đăng ký tài khoản trên website được kết nối với MailChimp sẽ giúp quản lý data, dữ liệu, gửi email hàng ngày một cách dễ dàng.

Stripe

  • Stripe là một nền tảng thanh toán trực tuyến được sử dụng để xử lý các giao dịch thanh toán trên các ứng dụng và trang web. Với Stripe, người dùng có thể chấp nhận các khoản thanh toán trực tuyến bằng nhiều phương thức khác nhau. Bao gồm thẻ tín dụng, thẻ ghi nợ, ví điện tử và các hình thức thanh toán trực tuyến khác.

  • Tripe cho phép sử dụng Webhook đối với nhiều loại sự kiện khác nhau, chẳng hạn như: xác định thanh toán có được thông qua không? Ngày tháng có đúng thực tế không?… Những dữ liệu này khiến cho quá trình thanh toán trở nên chính xác hơn.

_config.yml

  • Ngoài ra, nếu website thương mại điện tử được thiết kế từ WordPress, bạn có thể thấy Pluggin WooCommerce cũng hỗ trợ hình thức thanh toán qua Stripe.

Sendgrid

  • SendGrid là một nền tảng email marketing và gửi email hàng loạt cho doanh nghiệp. Nó cung cấp một loạt các tính năng để giúp người dùng tạo và gửi email chuyên nghiệp. Bao gồm quản lý danh sách email, tạo mẫu email, tùy chỉnh nội dung email và theo dõi hiệu quả của chiến dịch email.

  • Gửi email cho khách hàng sau khi họ vừa mua hàng hay nhận được yêu cầu hỗ trợ là một điều quan trọng và diễn ra thường xuyên. Sendgrid sử dụng Webhook để giúp chủ sở hữu website gửi những email trọng yếu đến người dùng.

_config.yml

  • Nhờ đó, họ có thể biết khách hàng đang gặp phải vấn đề gì cũng như tìm thấy phương hướng để đưa ra những giải pháp khắc phục hiệu quả.

Một số lưu ý cần nhớ khi sử dụng Webhook

  • Đầu tiên, Webhook cung cấp dữ liệu cho ứng dụng của bạn và thường sẽ ngừng quan tâm sau khi được yêu cầu. Điều này đồng nghĩa với việc nếu ứng dụng của bạn bị lỗi thì mọi dữ liệu được lưu trữ đều có khả năng bị mất.
  • Phần lớn các Webhook sẽ chú ý đến phản hồi và gửi lại yêu cầu nếu ứng dụng gặp lỗi. Tuy nhiên, nếu ứng dụng của bạn đã thực hiện xử lý yêu cầu mà vẫn bị lỗi, điều đó có thể là do dữ liệu đã bị trùng lặp trong ứng dụng.
  • Vậy nên, bạn hãy quan tâm và hiểu cách mà nhà cung cấp Webhook xử lý các phản hồi để giúp bạn có sự chuẩn bị tốt hơn mỗi khi xảy ra lỗi ứng dụng.
  • Thứ hai, Webhook có khả năng hỗ trợ rất nhiều yêu cầu. Trong trường hợp các nhà cung cấp cần thực thi các sự kiện hoặc có quá nhiều yêu cầu cần gửi đến khách hàng một cách liên tục. Điều này rất dễ dẫn đến tình trạng DDosing (tấn công từ chối dịch vụ).
  • Do đó, bạn hãy đảm bảo ứng dụng có thể xử lý quy mô Webhook trong dự tính của bạn.

Một số câu hỏi thường gặp khi sử dụng Webhook

Dưới đây là một số câu hỏi thường gặp về Webhook:

    1. Webhook hoạt động như thế nào?
  • Khi có sự kiện xảy ra trên một ứng dụng, Webhook sẽ kích hoạt và truyền tải thông tin sự kiện đó tới ứng dụng nhận thông tin.

    1. Webhook khác gì với API?
  • Webhook và API đều cho phép các ứng dụng tương tác với nhau. Tuy nhiên, API thường được sử dụng để truy vấn dữ liệu và thực hiện các thao tác trên dữ liệu. Trong khi Webhook chỉ truyền tải thông tin sự kiện.

_config.yml

    1. Làm thế nào để xây dựng Webhook?
  • Để xây dựng một Webhook, cần có một URL endpoint để nhận thông tin sự kiện, sau đó thiết lập các thông tin cấu hình để kích hoạt Webhook khi có sự kiện xảy ra trên ứng dụng gốc.

    1. Các vấn đề an ninh liên quan đến Webhook là gì?
  • Một số vấn đề an ninh liên quan đến Webhook bao gồm việc xác thực thông tin, bảo mật kết nối và giám sát các thông tin truyền tải qua Webhook.

  • Có một số biện pháp bảo mật Webhook như: xác thực thông tin, sử dụng HTTPS, giới hạn truy cập, sử dụng mã hóa, thực hiện giám sát các hoạt động bất thường và ngăn chặn các mối đe dọa an ninh.

  • event driven: kiến trúc
  • webhook: push — API: polling

  • user cần đăng kí với webhook. –> khi có một sự thay đổi gì đó thì sẽ push cho các client về sự thay đổi đó. Và các client ko thể push ngược lại phía server
Written on June 6, 2024