2.1.1. Ba đặc điểm của kiến trúc “một ứng dụng – nhiều thuê bao”
Các nhà cung cấp SaaS thường phân chia hệ thống thành nhiều ứng dụng nhỏ hơn. Mỗi ứng dụng này sẽ được cho thuê theo yêu cầu của doanh nghiệp. Như vậy, nhiều người dùng có thể thuê cùng lúc một ứng dụng. Đây là kiến trúc ―một ứng dụng – nhiều thuê bao‖ (single-instance multi-tenant architecture) của hệ thống phần mềm dịch vụ. Theo quan điểm của các nhà thiết kế, ba đặc trưng để nhận biết một dịch vụ SaaS ―đáng tin cậy‖ là:
1. Phạm vi năng lực của hệ thống: bao gồm mức độ đồng bộ hóa, sử dụng hiệu
quả các nguồn tài nguyên, ví dụ như xử lý các trạng thái dừng, khả năng chia sẻ dữ liệu, hay tổ chức cơ sở dữ liệu khổng lồ.
2. Khả năng đảm bảo hoạt động cho nhiều thuê bao: Khi người dùng từ một công ty truy cập tới thông tin khách hàng sử dụng một dịch vụ quản lý quan hệ khách hàng (CRM), chương trình đó cũng có thể đồng thời đang được dùng bởi hàng chục, hàng trăm, thậm chí hàng ngàn thuê bao từ nhiều công ty khác. Mặc dù hệ thống cần nâng cao hiệu suất của việc chia sẻ tài nguyên đến mức tối đa, nhưng cũng phải đảm bảo chắc chắn mỗi người dùng luôn luôn có được dữ liệu chính xác của mình.
3. Khả năng cấu hình ứng dụng: Tất nhiên, người dùng sẽ không thể can thiệp
và thay đổi mã nguồn đối với một ứng dụng được nhiều người thuê cùng một lúc trong phần mềm dịch vụ. Tuy nhiên, doanh nghiệp luôn mong muốn thể hiện được những nét đặc trưng của riêng mình. Vì vậy hệ thống vẫn cần phải đáp ứng nhu cầu cá thể hóa giao diện cũng như đặc thù riêng của từng doanh nghiệp. Thách thức lớn đối với một kiến trúc SaaS là khả năng cho phép doanh nghiệp tự cấu hình ứng dụng bằng cách sử dụng dữ liệu meta (metadata).
2.1.2. Mô hình phần mềm dịch vụ
Ba đặc trưng trên đóng vai trò quan trọng trong một kiến trúc SaaS. Tuy nhiên, tùy theo nhu cầu cụ thể của mình, doanh nghiệp có thể lựa chọn bốn mức khai thác dịch vụ khác nhau. Mỗi mức cung cấp những đặc trưng của kiến trúc SaaS, với tính đầy đủ được sắp tăng dần từ thấp lên cao.
1. Mức 1
Tương tự như việc triển khai phần mềm truyền thống. Mỗi doanh nghiệp có một ứng dụng chạy trên server của nhà cung cấp dịch vụ tuân theo kiến trúc khách-chủ truyền thống và khác với những doanh nghiệp còn lại.
2. Mức 2
Nhà phân phối cung cấp dịch vụ của mình dưới dạng những bản sao. Nhiều doanh nghiệp dùng chung sản phẩm phần mềm có mã lệnh như nhau. Việc sử dụng một cơ sở mã nguồn duy nhất làm nền tảng cho toàn bộ các ứng dụng sẽ giúp cho nhà cung cấp có thể dễ dàng sửa đổi, cập nhật, nâng cấp toàn bộ các ứng dụng cùng một lúc mà không cần phải thiết lập hoặc thao tác trên từng chương trình cụ thể với từng doanh nghiệp. Khách hàng 1 Khách hàng 2 Khách hàng 3 Ứng dụng 1 Ứng dụng 2 Ứng dụng 3 Khách hàng 1 Khách hàng 2 Khách hàng 3 Ứng dụng Ứng dụng Ứng dụng Khách hàng 1 Khách hàng 2 Khách hàng 3 Ứng dụng Khách hàng 1 Khách hàng 2 Khách hàng 3 B ộ c ân b ằn g t ải Ứng dụng Ứng dụng Ứng dụng 1 1 1 1 1 3 4 2
Hình 4: Bốn mức độ khác nhau của mô hình phần mềm dịch vụ
3. Mức 3
Ở mức này, nhà cung cấp sử dụng một hệ thống duy nhất để phục vụ tất cả mọi doanh nghiệp. Các chính sách bảo mật và xác thực quyền sử dụng đảm bảo dữ liệu được cung cấp một cách chính xác và không có sự xung đột lẫn nhau. Đồng thời, hệ thống cũng duy trì tính trong suốt đối với người sử dụng theo nghĩa họ không nhận thức được mình đang chia sẻ tài nguyên với những người khác.
Cách tiếp cận ở mức 3 có sự thuận lợi hơn so với mức 2 là giảm được chi phí hệ thống do nhà cung cấp chỉ cần một phần mềm duy nhất cùng một số máy chủ tập trung. Bất lợi lớn nhất của phương hướng này là phạm vi năng lực của hệ thống bị hạn chế. Cách duy nhất để nâng cao khả năng của hệ thống là cải thiện phần cứng – quá trình này tốn nhiều công sức và ảnh hưởng không nhỏ đến hoạt đông của doanh nghiệp.
4. Mức 4
Trong mức cuối cùng, nhà cung cấp quản lý tất cả các doanh nghiệp trong một môi trường đã được cân đối (load-balanced farm) với những phần mềm như nhau, đồng thời người dùng có thể cấu hình dữ liệu meta để thu được giao diện cũng như thuộc tính theo ý muốn và theo đặc trưng doanh nghiệp.
2.1.3. Kiến trúc mức cao
Xét trên khía cạnh kiến trúc, các hệ thống SaaS gần giống với những ứng dụng được xây dựng tuân theo nguyên lý thiết kế hướng dịch vụ (service-oriented design principle):
Hình 5: Kiến trúc ứng dụng SaaS Trong hình 3:
Các dịch vụ xử lý (process services) cung cấp giao diện cho người sử dụng,
khởi tạo một workflow (phiên làm việc) mới, đồng thời duy trì việc kết nối với những dịch vụ kinh doanh khác.
Các dịch vụ kinh doanh (business services) tương tác với các kho dữ liệu
tương ứng để đọc và cập nhật thông tin.
Các dịch vụ bảo mật (security services) kiếm soát việc truy cập, khai thác, sử
dụng tài nguyên hệ thống.
Điểm khác biệt lớn nhất của kiến trúc SaaS là sự hiện diện của các dịch vụ dữ
liệu meta (metadata services), chịu trách nhiệm quản lý việc cấu hình các ứng dụng cho từng khách hàng cụ thể.
Dịch vụ dữ liệu meta
Dịch vụ dữ liệu meta cung cấp cho khách hàng khả năng tùy biến và cấu hình ứng dụng theo nhu cầu của họ. Thông thường, khách hàng có thể thay đổi 4 thành phần bao gồm:
1. Giao diện người sử dụng
2. Phiên làm việc và các qui tắc kinh doanh 3. Mở rộng mô hình dữ liệu
4. Điều khiển truy cập
Dịch vụ dữ liệu meta cung cấp khả năng tùy biến ứng dụng theo mô hình phân cấp, mỗi cấp độ được gọi là một scope (phạm vi). Ở mức cao nhất, người dùng có khả năng thay đổi bất cứ thành phần nào trong số 4 thành phần đã nêu. Khả năng tùy biến ở những mức tiếp theo do người dùng ở mức trên quyết định thông qua ―chiến lược quan hệ‖ (relationship strategy).
Dịch vụ bảo mật
Dịch vụ bảo mật đảm bảo hai chức năng chính: xác thực (authentication) và cấp phép (authorization).
Xác thực
Thông thường, nhà cung cấp dịch vụ ủy quyền cho khách hàng trách nhiệm tự tạo và quản lý tài khoản của riêng mình, quá trình đó được biết đến với tên gọi ―giao quyền quản trị‖ (delegated administration). Người dùng có trách nhiệm tạo tài khoản của riêng họ, nhưng nhà cung cấp cần phải xác thực chúng nhằm đảm bảo việc truy cập là đúng đắn. Để giải quyết vấn đề này, các chuyên gia thiết kế SaaS đã đưa ra hai cách tiếp cận hướng tới mục đích kiểm soát việc truy cập, đó là hệ thống xác thực tập trung (centralized authentication system) và hệ thống xác thực phân tán (decentralized authentication system).
Hình 6: Hệ thống xác thực tập trung
Trong hệ thống xác thực tập trung, nhà cung cấp quản lý cơ sở dữ liệu tài khoản của khách hàng thuê bao các ứng dụng. Mỗi quản trị viên quản lý tài khoản được phép khởi tạo, quản lý và xóa bỏ các thuê bao trong thư mục chứa tài khoản của khách hàng. Hệ thống xác thực tập trung có ưu điểm là đơn giản, dễ cài đặt và triển khai. Tuy nhiên, đối với các hệ thống chấp nhận việc đăng-nhập-một-lần-duy-nhất (Single Signing On – SSO), mô hình này gặp khó khăn trong quá trình cài đặt.
Hệ thống xác thực phân tán sẽ thực hiện qui trình chứng thực ngay tại các máy chủ cục bộ. Nếu chứng thực thành công, người dùng sẽ tiếp tục được truy cập đến server chạy ứng dụng từ xa.
Phương pháp tiếp cận này tỏ ra phù hợp khi SSO đóng vai trò quan trọng, do quá trình chứng thực cần phải trong suốt đối với người sử dụng - họ không cần thiết phải nhớ mật khẩu cũng như các thông tin yêu cầu truy cập và nhập đi nhập lại nhiều lần. Mặc dù vậy, hệ thống xác thực phân tán lại có cấu trúc phức tạp hơn so với hệ thống tập trung, đồng thời chi phí triển khai cũng cao hơn. Tuy nhiên, mô hình này đóng vai trò quan trọng đối với các ứng dụng SaaS, nơi có sự tham gia của hàng ngàn doanh nghiệp và hàng triệu khách hàng.
Nói chung, các nhà cung cấp dịch vụ thường lựa chọn xu hướng phối hợp cả hai cách tiếp cận trên: những doanh nghiệp nhỏ sử dụng mô hình tập trung, trong khi các doanh nghiệp lớn hơn dùng mô hình phân tán.
Cấp phép
Mỗi thành viên trong doanh nghiệp có vai trò nhất định và do đó có mức độ truy cập, khai thác và sử dụng khác nhau đến nguồn tài nguyên hệ thống.
Hình 8: Kiểm soát truy cập
Tùy thuộc vào vị trí (khách hàng hay nhân viên) cũng như vai trò trong doanh nghiệp, người dùng sẽ được quyền truy cập tài nguyên cũng như thực hiện một số hoạt động nhất định. Ví dụ, ứng dụng thực hiện việc mua hàng cho phép khách hàng khởi tạo, chấp nhận, từ chối hay gửi hóa đơn mua sắm. Nhiều người dùng có thể được cấp phép cùng một vai trò.
Hình 9: Quyền truy cập của người quản trị ở chi nhánh Toronto giống như với trụ sở chính ngoại trừ khả năng thay đổi những vấn đề liên quan tới chính sách
Việc kiểm soát truy cập được thông qua dựa trên mức độ truy cập (scope level). Mỗi mức độ tiếp nhận vai trò, quyền hạn cũng như nguyên tắc thương mại từ các mức độ cao hơn.
Ví dụ, xét một doanh nghiệp đặt trụ sở tại Hoa Kỳ và có một chi nhánh ở Toronto (Canada). Ở mức độ cao nhất (root scope), người phụ trách các khoản trợ cấp (benefits administrator) của doanh nghiệp có quyền quản lý các dịch vụ phúc lợi cho nhân viên, trong đó bao gồm cả chính sách tiết kiệm hưu trí 401(k) của công ty. Tuy nhiên, chính sách 401(k) tuân theo luật thuế Hoa Kỳ, do đó người phụ trách trợ cấp tại chi nhánh ở Toronto có tất cả các quyền hạn giống như người quản lý ở Hoa Kỳ, ngoại trừ việc thay đổi các điều khoản liên quan tới 401(k).
2.1.4. Sơ đồ các thành phần của SaaS
Nhân SaaS
Quản lý bán hàng Quản lý khách hàng
Quản lý luồng công việc
Quản lý nhân sự Lịch làm việc
Máy chơi nhạc online
Hình 10: Sơ đồ các thành phần của SaaS
Doanh nghiệp có thể đăng ký sử dụng một hay nhiều loại phần mềm SaaS. Một số phần mềm free (như Online Media Player) và một số có phí hàng tháng như Point of Sale. Nhân SaaS bao gồm các thành phần:
1. Thư viện lập trình SaaS: Thực chất là kết hợp giữa một Framework AJAX với một số tính năng do SDM và PFS cung cấp.
2. Nhân hệ thống portal quản lý các module chức năng và việc phân phối các module chức năng tới người dùng trong hệ thống.
3. Portals file system: Hệ thống file Portals. Đáp ứng việc xử lý file ảo cho các dịch vụ SaaS an toàn và trong suốt. Đảm nhận việc kết nối tới các hệ thống file tương ứng của từng khách hàng.
o Hệ thống file này được sử dụng để đảm bảo tính an toàn, bảo mật, khả năng chia sẻ, lưu trữ phân tán trên nhiều server hay ngay trên máy của người dùng.
o Bản chất của PFS là một lớp các hàm có vai trò là lớp vỏ bên ngoài để đóng gói và thực hiện các câu lệnh truy vấn tới hệ thống file.