Chia sẻ Business Logic giữa các Azure Functions

  1. Home
  2. »
  3. Developer Technologies
  4. »
  5. Chia sẻ Business Logic giữa các Azure Functions

Như mọi người đã biết, Azure Functions là 1 dịch vụ của Microsoft Azure cho phép chúng ta thực hiện một tập lệnh hoặc một đoạn code nào đó theo phương thức chạy suốt hoặc theo lịch trình.

Chẳng hạn như chạy suốt Functions đó để ghi log cho hệ thống hoặc trường hợp chạy theo lịch trình là sau 1 tuần thì chạy Functions đó để dọn rác gì đó trong hệ thống.

Bạn có thể tham khảo lại bài Giới thiệu Azure Functions của mình để hiểu rõ hơn về Azure Functions.

Business Logic giữa các Azure Functions

Giờ giả sử trường hợp là cái sản phẩm của mình build cho nhiều khách hàng khác nhau, chẳng hạn như khách hàng A công ty lớn mạnh, có lượng user lớn, hệ thống sẽ có rác nhiều nên cty A muốn Function dọn rác được chạy 3 ngày 1 lần nhưng cty B thì lại muốn 7 ngày mới chạy 1 lần.

Nhưng về chung chung cả 2 Functions này đều thực hiện cùng một nhiệm vụ là dọn rác. Vậy chả nhẽ mình phải clone code ra cho 2 functions này hay sao? Rồi sản phẩm có một chục khách hàng, ngồi clone code ra một chục files, mỗi lần maintain hay lỡ code nhầm cái gì thì vô sửa hết chục file đó chắc điên mất…. Có cách nào share code cho các Functions này dùng chung được không?

Hừmmm….. Để giải quyết bài toán đó thì tổng quan mình sẽ có kiến trúc như sau:

20190406_095316000_iOS

Đầu tiên mình sẽ tạo một folder shared chứa file businessLogic trong đó. Sau đó mình sẽ tạo ra 2 thư mục để chứa function1 và function2. Trong mỗi thằng mình sẽ tạo ra 1 file index.js để gọi đến cái file businessLogic kia

var logic = require("../shared/businessLogic.js"); module.exports = logic;

Trong file function1.json, mình sẽ thiếp lập thời hạn chạy 3 ngày một lần như sau:

{ "bindings":[ { "name": "functionCompanyA", "type": "timerTrigger", "direction": "in", "schedule": "0 0 */3 * *" } ], "disabled": false }

Còn trong file function2.json, mình sẽ thiết lập function chạy 5 ngày một lần như sau:

{ "bindings": [ { "name": "functionCompanyB", "type": "timerTrigger", "direction": "in", "schedule": "0 0 */5 * *" } ], "disabled": false }

Vậy là xong rồi đó. Ngoài sử dụng Azure Functions thì Azure cũng có Azure WebJobs cũng thực hiện tương tự vậy.

Bài viết công nghệ: