Hệ thống quản lý Multi-tenant

Một phần của tài liệu Khóa luận tốt nghiệp Kỹ thuật phần mềm: Phát triển Hệ thống Quản lý Vận tải và Tích hợp Tra cứu Văn bản Pháp quy trong Điều hành Doanh nghiệp Logistics (Trang 104 - 118)

3.1. Giới thiệu

3.1.1. Định nghĩa

Hệ thống multi tenant là một kiến trúc cho phép một phiên bản duy nhất của một ứng dụng hoặc phần mềm phục vụ đồng thời nhiều khách hàng hoặc tenant. Trong hệ thống này, mỗi tenant hoạt động trong môi trường biệt lập và độc lập của riêng họ, đảm bảo quyền riêng tư dữ liệu và tách biệt tài nguyên. Mô hình này đã trở nên phổ bién hon do khả năng sử dụng hiệu quả tài nguyên, giảm kinh phi và

cung câp các tùy chọn câu hình cùng khả năng mở rộng.

Multi tenant đề cập đến cách tiếp cận kiến trúc trong đó một ứng dụng phần mềm phục vụ nhiều khách hàng hoặc người thuê sử dụng kiến trúc dùng chung. Người thuê có thê là người dùng cá nhân, phòng ban trong một tô chức hoặc thậm chí là các tổ chức riêng biệt. Mỗi khách thuê có không gian và tài nguyên riêng trong hệ thống, đảm bảo cách ly và bảo mật dữ liệu. Dưới đây là những lợi ích của việc sử dụng hệ thống multi tenant:

e Hiệu quả kinh phí: Bang cách chia sẻ kiến trúc và tài nguyên, các hệ

thống multi tenant giúp tiết kiệm kinh phí đáng ké so với việc duy trì các

hệ thống một người thuê riêng biệt. Người thuê có thể tận hưởng những lợi ích của một hệ thống giàu tính năng mà không phải chịu gánh nặng tài

chính.

e_ Khả năng mở rộng: Hệ thống multi tenant được thiết kế dé xử lý nhu cầu

ngày càng tăng của multi tenant. Với việc phân bé nguồn lực hiệu quả và kiến trúc dùng chung, việc mở rộng quy mô hệ thống để đáp ứng số lượng khách thuê ngày càng tăng trở nên dễ dàng và tiết kiệm kinh phí

hơn.

e Tuy chỉnh và cá nhân hóa: Hệ thống multi tenant cho phép các mức độ

tùy chỉnh và cá nhân hóa khác nhau nhằm phục vụ tenant khác nhau. Các

106

tùy chỉnh có thê bao gồm từ sửa đổi thương hiệu và UI đơn giản đến các điều chỉnh chức năng phức tạp hơn, cung cấp trải nghiệm phù hợp cho

từng tenant.

e©_ Sử dụng tài nguyên hiệu qua: Bang cách chia sẻ các tài nguyên như máy

chủ, CSDL và các thành phần kiến trúc, các hệ thống multi tenant tối ưu hóa việc sử dụng tài nguyên. Điều này dẫn đến hiệu quả tốt hơn về phần cứng và phần mềm, giảm tác động môi trường tông thể.

e Bao trì và cập nhật đơn giản: Với một phiên bản duy nhất của ứng dung

phục vụ multi tenant, bảo trì hệ thống, cập nhật và sửa lỗi trở nên hợp

lý hơn. Các sửa đổi có thể được tận dụng cho kiến trúc dùng chung, giảm thiêu thời gian chết và giảm nỗ lực cho các hoạt động bảo trì.

1. Các loại hệ thống multi tenant

Việc chọn loại hình multi tenant phù hợp phụ thuộc vào các yếu tố như mức

độ cách ly dữ liệu cần thiết, nhu cầu tùy chỉnh, yêu cầu về khả năng mở rộng và mục tiêu sử dụng tài nguyên. Điều quan trọng là phải xem xét các yếu tố này khi thiết kế và triển khai hệ thống multi tenant.

Cần lưu ý rang các loại multi tenant này không loại trừ lẫn nhau. Ví dụ: một

hệ thống có thé sử dung multi tenant cấp CSDL dé tối ưu hoá tài nguyên va multi tenant cấp lược đồ cho các tùy chọn tùy chỉnh nâng cao.

Hiểu được các loại hình thuê nhà khác nhau giúp đưa ra quyết định sáng suốt khi thiết kế và triển khai hệ thống multi tenant. Trong các phần sau, chúng ta sẽ khám phá các thành phần chính và cân nhắc liên quan đến kiến trúc multi tenant để dam bảo triển khai và vận hành thành công.

Multi tenant có thể được thực hiện theo nhiều cách khác nhau tùy thuộc vào

mức độ cô lập và tùy chỉnh cho mỗi người thuê. Dưới đây là các loại đa thuê nhà phô biến:

107

1. Multi tenant CSDL

Một phiên bản CSDL duy nhất được chia sẻ giữa các tenant. Mỗi tenant có lược đồ hoặc không gian tên riêng trong CSDL, cung cấp cách ly đữ liệu. Bảng hoặc bản ghi thường được gắn thẻ với mã định danh tenant để đảm bảo tách biệt và kiểm soát truy cập. Loại hình multi tenant này có thể có những hạn chế về khả năng

tùy chỉnh và khả năng mở rộng.

2. Lược đồ đa cấp thuê nhà

Mỗi tenant có lược đồ chuyên dụng riêng trong CSDL. Tenant chia sẻ cùng một phiên bản CSDL nhưng có các lược đồ riêng cho dit liệu của họ. Điều này cung cấp mức độ cô lập cao hơn so với multi tenant cấp CSDL. Mỗi tenant có thé có bảng, dạng xem và quy trình được lưu trữ riêng, cho phép tùy chỉnh nhiều hơn. Multi tenant cấp lược đồ cung cấp sự cân bang tốt giữa các tùy chọn chia sẻ tài

nguyên và tùy chỉnh.

3. Multi tenant cấp ứng dụng

Multi tenant chia sẻ một phiên bản duy nhất của ứng dụng. Mỗi người thuê có không gian riêng biệt và độc lập trong ứng dụng. Dữ liệu cho mỗi tenant thường

được lưu trữ trong CSDL chung hoặc CSDL riêng biệt. Multi tenant cấp ứng dụng cung cấp mức độ tùy chỉnh và linh hoạt cao nhất cho từng người thuê nhưng có thể yêu cầu nhiều tài nguyên hơn.

3.1.2. Thành phần chính

Mỗi thành phan này đóng một vai trò thiết yêu trong hoạt động thành công của một hệ thống multi tenant. Điều quan trọng là phải thiết kế và thực hiện các thành phan này một cách can thận, xem xét các yêu cầu cụ thé của người thuê và các mục tiêu tong thé của hệ thống.

Một hệ thống multi tenant được thiết kế tốt bao gồm một số thành phần chính hoạt động cùng nhau để cung cấp dịch vụ hiệu quả và an toàn cho multi tenant. Dưới đây là các thành phần cần thiết:

108

3.1.2.1. quản lý người thuê

e Thành phan quản lý tenant xử lý việc đăng ký, cung cấp và giới thiệu

khách thuê mới vào hệ thống.

e Nó bao gồm các tính năng như tao tenant, quản lý người dùng, kiểm

soát truy cập và cau hình dành riêng cho tenant.

e quản lý người thuê đảm bảo rằng mỗi người thuê có môi trường biệt lập

riêng và quyền truy cập phù hợp.

3.1.2.2. Tach biệt dữ liệu

e Tách biệt dữ liệu là yếu tố cần thiết trong các hệ thống multi tenant dé

đảm bảo quyền riêng tư và bảo mật của dữ liệu người thuê.

e Các cơ chế như phân vùng CSDL, tách lược đồ hoặc kỹ thuật ảo hóa

được dùng cho việc giữ cho dir liệu tenant được tách biệt với nhau.

e Kiểm soát truy cập mạnh mẽ và kỹ thuật mã hóa nhằm ngăn chặn truy

cập trái phép vào dữ liệu tenant.

3.1.2.3. Bao mật

e Bảo mật là điều cực kỳ thiết yếu trong một hệ thống multi tenant dé bao

vệ dữ liệu, ứng dụng và kiến trúc của người thuê.

e_ Nó liên quan đến việc thực hiện các cơ chế xác thực và ủy quyền mạnh

mẽ dé đảm bảo răng người thuê chỉ có thé truy cập dit liệu của riêng ho.

e Các biện pháp bảo mật bồ sung, chăng hạn như mã hóa dé liệu ở trạng

thái nghỉ và khi truyền, hệ thống phát hiện xâm nhập và kiêm tra bảo

mật thường xuyên, nên được áp dụng.

109

3.1.2.4. Kha năng mở rộng

e Khả năng mở rộng là rất quan trọng dé xử lý số lượng khách thuê ngày

càng tăng và nhu cầu ngày càng tăng của họ trong một hệ thống multi

tenant.

e Kỹ thuật mở rộng theo hướng ngang và dọc có thé được dùng cho việc

đảm bảo rằng hệ thống có thê xử lý các yêu cầu về tải và hiệu suất.

e_ Các công nghệ như cân bằng tải, tự động mở rộng quy mô và điện toán

phân tán.

3.1.2.5. Khả năng tuỳ chỉnh

e Tuy chỉnh là một khía cạnh quan trọng của hệ thong multi tenant vi nó

cho phép người thuê cá nhân hóa hệ thong theo nhu cầu cụ thé của ho.

e Hệ thống nên cung cấp các tính năng như cấu hình dành riêng cho

tenant, xây dựng thương hiệu, quy trình làm việc và tùy chỉnh UI.

e Kiến trúc linh hoạt và các tùy chon khả năng mở rộng cho phép người

thuê điều chỉnh hệ thống theo yêu cầu của họ mà không ảnh hưởng đến

những người thuê khác.

3.1.2.6. Hỗ trợ và liên lạc người thuê

e_ Một hệ thống multi tenant nên bao gồm các cơ chế giao tiếp và hỗ trợ

hiệu quả giữa quản trị viên hệ thống và người thuê.

e Các tính năng như thông báo, nhắn tin, bộ phận trợ giúp và cơ sở kiến

thức có thé được tích hợp dé tạo điều kiện giao tiếp cho người thuê và cung cấp hỗ trợ kịp thời.

110

3.1.3. Tách biệt người thuê

Điều quan trọng cần lưu ý là việc đạt được sự cô lập của người thuê đòi hỏi sự kết hợp của các biện pháp kỹ thuật, thực hành mã hóa an toàn và kiểm soát hoạt động. Mỗi biện pháp nay cần được thực hiện cân thận và kiểm toán thường xuyên

để duy trì tính toàn vẹn và quyền riêng tư của dữ liệu người thuê.

Cách ly người thuê là một khía cạnh quan trọng của hệ thống multi tenant vì

nó đảm bảo quyên riêng tư, bảo mật và tính độc lập của mỗi người thuê trong kiến trúc dùng chung. Mục dich là để ngăn chặn truy cập trái phép vào di liệu và tài nguyên của người thuê. Dưới đây là một số cân nhắc chính để đạt được sự cô lập

tenant hiệu quả

3.1.3.1. Phan vùng CSDL

e Phân vùng CSDL là một kỹ thuật phd biến dé đạt được sự cô lập dữ

liệu trong một hệ thông multi tenant.

e Dữ liệu của mỗi tenant được lưu trữ trong các phân vùng hoặc lược đồ

riêng biệt trong CSDL.

e Việc phân vùng có thé được thực hiện dựa trên mã định danh duy nhất

cho mỗi tenant, chăng hạn như ID tenant.

e_ Cách tiếp cận này cho phép quản lý và truy xuất hiệu quả dữ liệu cụ thé

của người thuê.

3.1.3.2. Áo hóa hoặc container hoá

e_ Các công nghệ ảo hóa như máy ảo (VM) hoặc nền tảng container hóa

(ví dụ: Docker) có thê cung cấp sự cô lập mạnh mẽ giữa các tenant.

° Ứng dụng của mỗi tenant và các phụ thuộc của nó có thê được đóng gói

trong một máy ảo hoặc vùng chứa chuyên dụng.

e_ Cách tiếp cận này đảm bao rằng tài nguyên tenant được cách ly hoàn

toàn, bao gồm CPU, bộ nhớ và mạng.

111

3.1.3.3. Hạn ngạch và giới hạn tài nguyên

e Việc thực hiện hạn ngạch và giới hạn tài nguyên giúp ngăn chặn bat kỳ

tenant nào tiêu thụ một phần tài nguyên hệ thống không công bằng.

e Han ngạch có thê được đặt trên CPU, bộ nhớ, bộ nhớ, băng thông mạng

hoặc các kích thước tài nguyên khác.

e Giám sát và thực thi các hạn ngạch nay dam bao rằng người thuê hoạt

động trong giới hạn được phân bé của họ, thúc đây việc sử dụng tài

nguyên hợp lý.

3.1.3.4. Kiểm tra truy cập và xác thực

e Chức năng kiểm soát mạnh mẽ nhăm thực thi sự cô lập của tenant.

e Việc triển khai kiểm soát truy cập dựa trên vai trò (RBAC) hoặc các kỹ

thuật tương tự đảm bảo rang người thuê chỉ có thể truy cập dit liệu va

tài nguyên của riêng họ.

3.1.3.5. Ma hóa dữ liệu và quyền riêng tư

e_ Mã hóa dữ liệu người thuê khi lưu trữ và khi truyền sẽ bổ sung thêm

một lớp bảo mật và quyên riêng tư.

e Việc triển khai các thuật toán và giao thức mã hóa sẽ bảo vệ dữ liệu

người thuê khỏi bị truy cập trái phép, ngay cả khi kiến trúc bị xâm

phạm.

e Cần tuân thủ các biện pháp quản lý khóa bảo mật dé bảo vệ khóa mã

hóa.

112

3.2.

3.1.3.6. Logging

¢ Cơ chế logging đóng một vai trò thiết yếu trong việc đảm bao sự cô lập

và an ninh của người thuê.

° Bằng cách ghi lại tất cả các hoạt động và sự kiện có liên quan trong hệ

thống, có thể phát hiện và điều tra bất kỳ vi phạm tiềm ẩn hoặc nỗ lực

truy cập trái phép nào.

e Thường xuyên xem xét lịch sử logging giúp xác định và giảm thiêu rủi

ro bảo mật.

Phân tích hệ thống

TH Logistic System Tools

Architecture

QE

User Bx.

| =

m—= - at =

E "—§ và FE 8—_—E Văn

113

Hình 3-1. Kiến trúc hệ thong 3.3. Thành phần và dịch vụ

3.3.1. Kiến trúc của hệ thống một người thuê

3.3.1.1. Front-end

Ứng dụng quản trị web mạnh mẽ và giàu tính năng sử dụng framework React.js dé phát triển. Để đảm bảo triển khai liền mạch và khả năng mở rộng, chúng tôi đã container hóa ứng dụng bằng Docker, cho phép triển khai nhất quán và hiệu quả trên nhiều môi trường khác nhau. Bằng cách tận dụng công nghệ container hóa

cua Docker, ứng dụng được gói gọn trong một container di động và biệt lập, dam

bảo các phụ thuộc và cau hình của nó được chứa tốt và có thể tái tạo. Cách tiếp cận này không chi hợp lý hóa quy trình triển khai mà còn cho phép dé dàng mở rộng quy mô và quản lý ứng dụng, gitip ứng dụng có khả năng thích ứng cao với nhu cầu thay đổi của người dùng và biến động lưu lượng truy cập. Sau khi được đóng gói, ứng dụng được triển khai trên kiến trúc máy chủ, tận dụng sức mạnh của tài nguyên máy chủ để xử lý các yêu cầu của người dùng và cung cấp hiệu suất tối ưu. Thiết lập triển khai này đảm bảo người dùng có thể truy cập ứng dụng. Nhìn chung, sự kết hợp giữa React.js, container hóa Docker và triển khai máy chủ cho phép ứng dụng quản trị web mang lại trải nghiệm đáng tin cậy, có thể mở rộng và thân thiện với

người dùng.

Đối với ứng dụng trình điều khiến, bằng cách tận dụng một loạt các công cụ, thư viện và API được cung cấp bởi Android, chúng tôi đã kết hợp các chức năng nâng cao dé cho phép trình điều khiển điều hướng. Dé đảm bảo hiệu suất, độ tin cậy

và khả năng mở rộng của ứng dụng, chúng tôi đã tuân thủ các phương pháp hay

nhất trong ngành và kiểm tra kỹ lưỡng trên nhiều thiết bị, kích thước UI và phiên bản Android. Bằng cách tận dụng sức mạnh của Android, ứng dụng tài xế của chúng tôi nham nâng cao năng suất của tài xế và cuối cùng là nâng cao hiệu quả

tông thê của các dịch vụ vận tải của chúng tôi.

114

3.3.1.2. Back-end

Tất cả các dịch vụ kinh doanh vận tải không thé được goi trực tiếp qua mạng con công cộng. Thay vào đó, chúng tôi thiết lập API Gateway bằng Kong, cung cấp một số lợi ích trong bối cảnh xây dựng và quản lý API như:

e Định tuyến yêu cầu và cân bang tải: Kong đóng vai trò là điểm vào tập

trung cho các yêu cầu API của chúng tôi. Nó cho phép chúng tôi xác định các quy tắc định tuyến dịch vụ hoặc vi dịch vụ thích hợp dựa trên các tiêu chí như đường dẫn URL, tiêu đề hoặc phương thức. Kong cũng cung cấp khả năng cân bằng tải để phân chia lưu lượng truy cập trên nhiều dịch vụ back-end.

e Xác thực và ủy quyền: Kong hỗ trợ các cơ chế như khóa API, JWT

(JSON Web Tokens), OAuth, v.v. Nó cho phép chúng tôi xác thực va

ủy quyền các yêu cầu API, đảm bảo rằng chỉ những khách hàng được

ủy quyền mới có thé truy cập API của chúng tôi.

e Khả năng mở rộng và tính sẵn sàng cao: Kong được thiết kế dé xử lý

khối lượng lưu lượng truy cập lớn và cung cấp khả năng mở rộng và các tùy chọn sẵn sàng cao. Nó được triển khai trong một thiết lập cluster, trong đó nhiều phiên bản Kong làm việc cùng nhau đề xử lý lưu lượng truy cập và chia sẻ cau hình. Điều này cho phép chúng tôi thay đổi quy mô theo chiều ngang va đảm bảo kha năng phục hồi và khả năng chịu lỗi cho cổng API của chúng tôi.

Tất cả các dịch vụ kinh doanh vận tải đều được bao bọc bởi Bậc ứng dụng Auto Scaling Group, cho phép chúng tôi tự động điều chỉnh số lượng phiên bản trong một nhóm dựa trên các điều kiện đã xác định. Chúng tôi có thể đảm bảo rằng ứng dụng của chúng tôi có thé xử lý các mức lưu lượng truy cập khác nhau và duy trì độ sẵn sàng cao băng cách tự động điều chỉnh số lượng phiên bản dựa trên nhu

câu. Điêu này giúp tôi ưu hóa việc sử dụng tài nguyên, cải thiện hiệu năng ứng dụng

115

và nâng cao khả năng thay đổi quy mô và độ tin cậy tổng thé của kiến trúc AWS của chúng tôi. Kinh doanh vận tải bao gồm các thành phần sau:

Dịch vụ xác thực (FastAPI): Phụ trách xác thực và ủy quyền người dùng, bất kỳ yêu cầu nào gửi đến phải được chuyên tiếp đến dịch vụ này dé đảm bảo an toàn diém cuối.

Dịch vụ người dùng (NestJs): Phụ trách xử lý dữ liệu người dùng (admin/driver).

Dịch vụ việc làm (SpringBoot): Phụ trách xử lý dữ liệu đơn hang.

Dịch vụ sản phẩm (SpringBoot): Phụ trách xử lý dữ liệu san phẩm.

Dịch vụ định vi (SpringBoot): Phụ trách xử lý dữ liệu vi trí giao hang

và nhận hàng.

Route service (SpringBoot): Phụ trách xử lý dữ liệu route giao hàng.

Dịch vụ vận chuyên (SpringBoot): Phụ trách xử lý dữ liệu xe.

Dich vụ tổ chức (SpringBoot): Phụ trách xử lý dit liệu của tổ chức.

Dịch vụ thanh toán (SpringBoot): Phụ trách xử lý dữ liệu hóa đơn và

thanh toán.

Dịch vụ kiểm tra sức khỏe (SpringBoot): Phụ trách xử lý dữ liệu tình

trạng xe.

Tât cả các thành phân này sẽ được container hóa với Docker, sẽ đóng gói các

ứng dụng và các phụ thuộc của chúng lại với nhau, cũng giúp dễ dàng điều chỉnh

microservice.

3.3.1.3. CSDL

Trong hệ thống của chúng tôi, chúng tôi sử dung hai loại CSDL phô biến nhất:

Squan lý (sử dụng PostgreSquan lý) và NoSquan lý (sử dụng MongoDB)

PostgreSquản lý là một hệ thống quản lý CSDL quan hệ nguồn mở (RDBMS) được biết đến với các tính năng nâng cao, khả năng mở rộng và tuân thủ ACID. Nó

116

Một phần của tài liệu Khóa luận tốt nghiệp Kỹ thuật phần mềm: Phát triển Hệ thống Quản lý Vận tải và Tích hợp Tra cứu Văn bản Pháp quy trong Điều hành Doanh nghiệp Logistics (Trang 104 - 118)

Tải bản đầy đủ (PDF)

(132 trang)