Thứ bảy, 27/04/2024 | 10:39 - GMT+7

Ứng dụng kiến trúc microservice và container hóa trong xây dựng và triển khai hệ thống quản lý đào tạo thực hành cho trường đại học

Bài báo đề xuất một mô hình hệ thống quản lý đào tạo thực hành cho trường đại học, được phát triển dựa trên kiến trúc microservice, kết hợp với việc ứng dụng nền tảng container hóa trong xây dựng và triển khai hệ thống.

25/09/2020 - 10:13
TÓM TẮT:
Bài báo đề xuất một mô hình hệ thống quản lý đào tạo thực hành cho trường đại học, được phát triển dựa trên kiến trúc microservice, kết hợp với việc ứng dụng nền tảng container hóa trong xây dựng và triển khai hệ thống. Nhóm nghiên cứu phát triển một hệ thống thử nghiệm cho Khoa Công nghệ thông tin - Trường Đại học Hàng hải Việt Nam, đánh giá bước đầu cho thấy hiệu quả của việc ứng dụng kiến trúc microservice và nền tảng container trong phát triển, vận hành hệ thống, sẵn sàng trong việc nâng cấp, mở rộng thành hệ thống trường học điện tử.
Từ khóa: Microservice, container hóa, hệ thống quản lý, trường đại học.
1. Đặt vấn đề
Hiện nay, trong kỷ nguyên số, các tổ chức, đơn vị hoạt động trong mọi lĩnh vực, từ kinh doanh đến giáo dục, đều đã và đang hướng đến mục tiêu số hóa, hiện đại hóa toàn bộ hệ thống. Các doanh nghiệp, trường học ứng dụng mạnh mẽ các giải pháp CNTT, để xây dựng và triển khai những hệ thống hỗ trợ quản lý và vận hành tổ chức một cách hiệu quả, tiện lợi. Nhóm nghiên cứu đề xuất một phương pháp thiết kế, xây dựng và triển khai mô hình hệ thống quản lý tích hợp về thực hành (bao gồm quản lý cơ sở vật chất và hỗ trợ quản lý đào tạo) cho trường đại học, phát triển một hệ thống thử nghiệm tại Khoa Công nghệ thông tin - Trường Đại học Hàng hải Việt Nam. Hệ thống được đề xuất tập trung nâng cao chất lượng đào tạo thực hành: cung cấp các dịch vụ phục vụ cho công tác quản lý các phòng thực hành, nghiên cứu cùng các trang thiết bị; đồng thời, hỗ trợ hoạt động giảng dạy/học tập thực hành cho các giảng viên/sinh viên.
2. Phân tích yêu cầu hệ thống
Việc quản lý cơ sở vật chất, trang thiết bị của khoa cũng như việc quản lý, tương tác giữa giảng viên - sinh viên trong các giờ thực hành có thể được cải thiện hơn nữa nhờ áp dụng hệ thống quản lý. Hệ thống phần mềm cung cấp các ứng dụng, dịch vụ (1) hỗ trợ cho các kỹ thuật viên quản lý phòng thực hành, quản lý máy tính/thiết bị trong mỗi phòng và quản lý chung các phòng thực hành: hiển thị thông tin, theo dõi giám sát, thông báo tình trạng thiết bị, tình trạng phòng, hiển thị lịch/phân công sử dụng phòng thực hành, cho phép báo cáo thiết bị hỏng...; (2) hỗ trợ giảng dạy thực hành: điểm danh, quản lý điều khiển các máy của sinh viên, gửi file, nộp bài, trao đổi thông tin giữa các máy...; (3) kết hợp với IoT trong việc quản lý cơ sở vật chất và sử dụng điện từ xa thông qua mạng Internet.
Đối với việc phát triển hệ thống: Yêu cầu đặt ra là hệ thống phải được thiết kế, xây dựng một cách hiệu quả, linh hoạt theo hướng cho phép cập nhật hay tích hợp thêm các module dịch vụ một cách thuận tiện, nhằm đáp ứng nhu cầu mở rộng toàn bộ hệ thống trong tương lai, sẵn sàng cho việc triển khai hệ thống trường học điện tử, trường học thông minh. Việc lựa chọn thiết kế hệ thống phần mềm theo kiến trúc microservice và áp dụng công nghệ container hóa nhằm giải quyết những yêu cầu về phát triển hệ thống đã đề cập.
Đối với việc vận hành hệ thống: Mô hình được đề xuất để quản lý hệ thống cơ sở vật chất gồm nhiều phòng thực hành với số lượng máy tính lớn, hệ thống phòng thực hành phục vụ cho nhiều học phần (môn học) với nhiều sinh viên học tập. Với mô hình triển khai hệ thống, cần có một giải pháp nhằm triển khai cài đặt các ứng dụng, dịch vụ trên các máy chủ (phía server) và hàng loạt máy tính (phía client) hiệu quả, thuận lợi. Việc ứng dụng công nghệ container hóa (kết hợp với việc hệ thống được thiết kế dựa trên kiến trúc microservice) đem lại hiệu quả, năng suất khi triển khai, cài đặt hệ thống phần mềm ứng dụng.
3. Công nghệ Container hóa với kiến trúc Microservice
3.1. Container hóa
 Container là một gói có khả năng thực thi độc lập, nhẹ (lightweight), chứa đầy đủ (và chỉ vừa đủ) mọi thứ mà ứng dụng cần để hoạt động bao gồm mã chương trình (code, binary), các công cụ hệ thống, thư viện hệ thống (library), các gói phụ thuộc (dependency) - bất cứ thứ gì có thể cài đặt trên một máy chủ. Bằng cách đóng gói và cô lập mọi thứ trong một container, điều này đảm bảo rằng các container (ứng dụng được container hóa) sẽ luôn hoạt động giống như nhau bất kể môi trường nào mà chúng đang chạy trong đó. Container loại bỏ sự phụ thuộc giữa các ứng dụng và lớp cơ sở hạ tầng căn bản, cung cấp những khả năng mới về tính di động và tính hiệu quả, đặc biệt trong việc phát triển và triển khai phần mềm ứng dụng.
3.2. Kiến trúc Microservice
Kiến trúc microservice là một cách tiếp cận về kiến trúc, trong đó một ứng dụng duy nhất được tạo thành bởi nhiều thành phần (hay các dịch vụ) nhỏ hơn có thể triển khai độc lập và được ghép nối không chặt chẽ. Thông thường các dịch vụ này: có stack riêng của chúng, bao hàm cơ sở dữ liệu và mô hình dữ liệu; truyền thông với nhau thông qua sự kết hợp các REST API, truyền phát sự kiện, các thông điệp trung gian; được tổ chức bởi khả năng kinh doanh, với những đường phân tách các dịch vụ. Giá trị của microservice có thể được hiểu đơn giản hơn thông qua các lợi ích kinh doanh và tổ chức như là: (1) Mã nguồn có thể được cập nhật dễ dàng hơn; (2) Các nhóm có thể sử dụng các stack khác nhau cho những thành phần khác nhau; (3) Các thành phần có thể được mở rộng ra toàn bộ các ứng dụng khi một tính năng duy nhất phải đối mặt với quá nhiều tải.
Microservice hiện đang ngày càng phổ biến, ít nhất là đối với các nhà điều hành, những người đứng đầu dự án cũng như các nhà phát triển. Microservice là một mô hình kiến trúc, tạo điều kiện tốt hơn cho một mô hình điều hành mong muốn. Hai so sánh được đưa ra thường xuyên nhất với kiến trúc microservice là kiến trúc đơn khối (monolithic) và kiến trúc hướng dịch vụ (SOA - service-oriented architecture). Hình 1 mô tả cấu trúc hệ thống dựa trên kiến trúc đơn khối và microservice. 
Hình 1. Hệ thống theo kiến trúc đơn khối monolithic (trái) và microservice (phải)
3.3. Vai trò của container đối với microservice
Các công ty phần mềm lớn nhỏ đang nắm bắt microservice như một cách tiếp cận vượt trội nhằm phát triển và quản lý ứng dụng, thường được so sánh với mô hình đơn khối trước đây (vốn kết hợp một ứng dụng phần mềm với giao diện người dùng, được liên kết với cơ sở dữ liệu cơ bản thành một khối đơn nhất trên một nền tảng máy chủ đơn nhất). Với microservice, một ứng dụng phức tạp sẽ được chia thành những dịch vụ nhỏ hơn, chuyên biệt hơn, mỗi dịch vụ có một cơ sở dữ liệu riêng và logic kinh doanh riêng. Microservice giao tiếp với nhau trên các giao diện thông thường (như các API), hay giao diện REST (như HTTP). Sử dụng microservice, các nhóm phát triển có thể tập trung vào cập nhật những khu vực cụ thể của ứng dụng mà không gây ảnh hưởng đến toàn bộ ứng dụng, dẫn tới việc phát triển, kiểm thử và triển khai nhanh hơn.
Các khái niệm đứng sau microservice và container hóa về căn bản tương tự nhau, vì cả hai đều là những thực tiễn phần mềm, về cơ bản tiến hành biến đổi ứng dụng thành tập các dịch vụ hay thành phần nhỏ hơn, có thể di động, co giãn, dễ dàng quản lý và hiệu quả. Hơn nữa, các microservice và container hóa hoạt động tốt hơn khi được sử dụng kết hợp cùng nhau. Các container cung cấp sự đóng gói hạng nhẹ cho bất kỳ ứng dụng nào, dù cho đó là một ứng dụng đơn khối truyền thống hay một microservice dạng mô-đun. Một microservice, được phát triển trong một container, sẽ nhận được tất cả những ích lợi vốn có container hóa, như tính di động trong quá trình phát triển, khả năng không bị giới hạn với một nhà cung cấp, cũng như phát triển linh hoạt, cô lập lỗi, nâng cao hiệu suất máy chủ, tự động hóa cài đặt, co giãn và quản lý, cung cấp các lớp bảo mật,…
4. Thiết kế và xây dựng hệ thống
* Một số chức năng chính của hệ thống:
- Đối với ứng dụng Website (Website + Web API): (1) Cập nhật thông tin thiết bị, thông tin phòng, khu vực. (2) Quản lý, cập nhật lịch thực hành cho các phòng (3) Hỗ trợ quản lý (tìm kiếm, cập nhật thông tin) trang thiết bị tại các phòng thực hành, kiểm tra tình trạng và tính khả dụng của các thiết bị. (4) Cập nhật, xử lý các phiếu báo hỏng thiết bị. (5) Hỗ trợ nhiều tài khoản người dùng với các quyền truy cập khác nhau. (6) Cung cấp các API giúp dễ dàng có thể xây dựng ứng dụng trên các nền tảng khác nhau, giúp thuận tiện cho việc mở rộng hệ thống. (7) Được xây dựng trên nền tảng Docker và kiến trúc Microservice giúp dễ dàng triển khai và mở rộng ứng dụng, đáp ứng nhiều người truy cập cùng lúc. (8) Tích hợp Identity Server 4 (OpenId Connect) để bảo vệ các Service và API Gateway (Ocelot) để đơn giản hóa cấu trúc Microservice. (9) Tích hợp RabbitMQ để đồng bộ dữ liệu giữa các Service.
- Đối với ứng dụng App Native (WPF C#): (1) Kết nối các máy trong phòng thực hành và kết nối với Web API. (2) Điều khiển, quản lý các máy sinh viên từ xa. (3) Quản lý các Process (Tiến trình) máy tính mà sinh viên sử dụng, hạn chế tối đa việc sinh viên sử dụng các phần mềm không thuộc phạm vi học tập. (4) Hỗ trợ truyền và gửi file, giao tiếp giữa các máy. (5) Kiểm tra thông tin các thiết bị trong phòng, tình trạng khả dụng của các thiết bị.
* Các công cụ được sử dụng để xây dựng hệ thống:
- Website: (1) Front-end: Bootstrap, HTML, CSS, Javascript. (2) Back-end: ASP.NET Core MVC. (3) Database: Truy vấn thông qua việc gọi Web API. (4) Environment: ASP.Net Core (v 3.1). (5) Container: Docker.
- Web API: (1) Back-end: ASP.NET Core Web API (Microservice Architecture) & Identity Server 4 cho việc Authenticate (xác thực) và Authorize (ủy quyền) người dùng & RabbitMQ cho việc đồng bộ dữ liệu giữa các Service & API Gateway (Ocelot) để đơn giản hóa cấu trúc Microservice. (2) Database: SQL Server truy vấn thông qua Entity Framework Core hoặc Dapper. (3) Environment: ASP.Net Core (v 3.1). (4) Container: Docker.
- App Native: (1) Back-end: C# WPF sử dụng mô hình MVVM. (2) Front-end: C# WFP Xaml. (3) Database: Truy vấn thông qua việc gọi Web API. (4) Environment: .Net Framework (v 4.7).
* Thiết kế và xây dựng hệ thống dựa trên kiến trúc Microservice: 
Hình 2. Sự kết nối giữa các microservice và thành phần hệ thống
Hình 2 cung cấp sơ đồ tổng quát thể hiện việc kết nối các microservice cùng các thành phần của hệ thống, trong đó: (1) ClientApp(s) là những ứng dụng máy khách, được người dùng sử dụng (ví dụ như: Ứng dụng web, ứng dụng di động, ứng dụng trên máy tính,…); (2) Do hệ thống có chứa nhiều (micro)service bên trong, mỗi một service chạy độc lập nhau trên một máy chủ (có thể) khác nhau, nên việc ghi nhớ địa chỉ của tất cả service theo cách thông thường là không thể, vì vậy API Gateways sẽ ghi nhớ hộ toàn bộ địa chỉ của các services và Client Apps, chỉ cần ghi nhớ địa chỉ của API Gateways là có thể biết được những địa chỉ các services còn lại. (3) Bên trong mỗi một service là phần xử lý logic, nghiệp vụ cho service đó và chỉ duy nhất nó, nó không “quan tâm” tới nghiệp vụ của các service khác. (4) Tất cả các service giao tiếp với nhau thông qua cơ chế “đồng bộ hóa dữ liệu”, thay vì giao tiếp trực tiếp với nhau, dẫn tới sự ghép nối giữa các service là “không chặt”.
* Phát triển mở rộng: Tích hợp module IoT:
Hệ thống bao gồm module giám sát và quản lý thiết bị điện (với sơ đồ mô tả trong Hình 3) thông qua việc ứng dụng IoT kết hợp với kiến trúc microservice, cho phép điều khiển các thiết bị một các tự động và từ xa, hướng tới việc phát triển hệ thống trường học - phòng học thông tin. Ngoài ra, hệ thống cũng giúp việc sử dụng điện ở các thiết bị và phòng thực hành hiệu quả và tiết kiệm hơn.
Hình 3. Sơ đồ mô tả việc ứng dụng IoT trong module quản lý điện năng thiết bị
Người dùng có thể sử dụng trình duyệt web hoặc ứng dụng trên điện thoại và gửi yêu cầu (giả sử là “tắt điều hòa tại Phòng thực hành 320, Tầng 3, Khu A4”). Yêu cầu của người dùng sẽ được gửi lên API Gateways, và API Gateways chịu trách nhiệm kiểm tra xem người dùng đã xác thực danh tính (đã đăng nhập) chưa. Nếu đã xác thực, API Gateways sẽ kiểm tra mã Token (một chuỗi ký mã hóa để thay mặt cho người dùng) có hợp lệ không, nếu hợp lệ thì truyền yêu cầu sang service mà người dùng muốn sử dụng, còn nếu không hợp lệ thì yêu cầu sẽ được truyền tới Identity microservice (đưa người dùng trở lại trang đăng nhập, đến khi đăng nhập thành công hệ thống sẽ cấp cho một mã Token mới dùng để truy cập). Khối Device microservice - chịu trách nhiệm cho việc quản lý các thiết bị - khi nhận được yêu cầu “tắt điều hòa”, sẽ gửi yêu cầu tới mạch Arduino tại phòng 320, tầng 3, A4. Khi nhận được tín hiệu, mạch Arduino thực hiện những đoạn lệnh đã được lập trình sẵn để tắt/bật các thiết bị (trong trường hợp này là điều hòa) đang được kết nối với chúng, tùy thuộc vào yêu cầu của người dùng.
5. Triển khai vận hành và đánh giá hệ thống
5.1. Triển khai hệ thống phần mềm với công nghệ container
Hình 4. Giao diện ứng dụng nền web
Hệ thống được triển khai trên nhiều môi trường, đa nền tảng, bao gồm: máy chủ Web - đối với ứng dụng nền web/website, hệ thống máy chủ ứng dụng App native - quản lý chung hệ thống các phòng thực hành. Ngoài ra, tại phòng mỗi phòng thực hành, ứng dụng phía Server - được cài đặt trên một máy trạm (máy tính của người dùng là Giảng viên, được sử dụng để quản lý, giám sát và điều khiển các máy tính khác trong phòng thực hành), ứng dụng phía Client - được cài đặt trên các máy khách (máy tính của người dùng là Sinh viên). Hình 4-5 là giao diện của các ứng dụng trong hệ thống (bao gồm ứng dụng nền web và ứng dụng nền desktop phía Server/Client). Hình 4-5 là giao diện của các ứng dụng trong hệ thống (bao gồm ứng dụng nền web và ứng dụng nền desktop phía Server/Client).
Hình 5. Giao diện ứng dụng phía Server và phía Client
Nền tảng container được sử dụng để phát triển, triển khai hệ thống phần mềm là Docker. Docker là một nền tảng mã nguồn mở để xây dựng, triển khai và quản lý các ứng dụng được container hóa. Về cơ bản, nó là một bộ công cụ cho phép các nhà phát triển có thể xây dựng, triển khai, chạy, cập nhật và dừng các container bằng cách sử dụng các lệnh đơn giản cùng sự tự động hóa để tiết kiệm công sức làm việc. Docker được phát hành vào năm 2013, và hiện đang là nền tảng container phổ biến nhất hiện nay.
5.2. Đánh giá việc triển khai và vận hành hệ thống
Khoa CNTT - Trường Đại học Hàng hải Việt Nam hiện có 11 phòng thực hành/phòng máy với khoảng 440 máy tính, một phòng quản trị cơ sở vật chất và phòng chuyên ngành. Hệ thống xây dựng thử nghiệm được triển khai tại phòng quản lý cơ sở vật chất và 4 phòng thực hành/phòng máy. Mỗi phòng thực hành có một máy trạm quản lý và trung bình 40 bộ máy tính. Ngoài ra, mỗi phòng thực hành còn được trang bị các thiết bị điện tử như switch, router, máy chiếu, điều hòa, quạt,... Việc áp dụng công nghệ container hóa trong thiết kế và triển khai hệ thống phần mềm đem lại hiệu quả rất lớn, đặc biệt trong việc triển khai ứng dụng một cách thuận tiện trên đa môi trường, triển khai ứng dụng hàng loạt trên một số lượng lớn các máy tính mà vẫn đảm bảo tính đồng bộ, nhất quán và nhanh chóng.
5.3. Đánh giá hiệu quả việc ứng dụng hệ thống trong quản lý cơ sở vật chất và đào tạo
Khoa CNTT - Trường Đại học Hàng hải Việt Nam hiện có 3 chuyên ngành, 4 chương trình đào tạo với nhiều học phần (môn học). Hơn một phần ba số lượng các học phần chuyên ngành có thời lượng đào tạo thực hành (giảng dạy và học tập tại các phòng thực hành). Nhóm nghiên cứu lựa chọn triển khai hệ thống đối với 12 nhóm lớp học phần thuộc 5 học phần (Mạng máy tính, Thiết kế và Quản trị mạng, Điện toán đám mây, Bảo trì hệ thống và Thực tập ngành) có nội dung giảng dạy thực hành hoặc được giảng dạy tại phòng máy, trong năm học 2019-2020 (với 2 học kỳ), tổng số lượt sinh viên học tập là trên 400 sinh viên. Thống kê kết quả khảo sát nhanh cuối học kỳ về đánh giá trải nghiệm hệ thống thử nghiệm từ các giảng viên và sinh viên cho thấy phản hồi tích cực về hệ thống chiếm tỷ lệ lớn (trên 80%). Hội đồng nghiệm thu công trình nghiên cứu của trường đánh giá cao tính ứng dụng của hệ thống đối với công tác quản lý và đào tạo của trường, đồng thời cho rằng hệ thống có thể tiếp tục được phát triển, mở rộng ra quy mô toàn trường.
6. Kết luận
Bài báo đề xuất một mô hình hệ thống quản lý đào tạo thực hành cho trường đại học, được phát triển dựa trên kiến trúc microservice, kết hợp với việc ứng dụng nền tảng container hóa trong xây dựng và triển khai hệ thống. Nhóm nghiên cứu phát triển một hệ thống thử nghiệm cho khoa Công nghệ thông tin - Trường Đại học Hàng hải Việt Nam, với chức năng quản lý cơ sở vật chất và hỗ trợ quản lý đào tạo về thực hành. Đánh giá bước đầu cho thấy hiệu quả trong việc ứng dụng kiến trúc microservice và nền tảng container trong phát triển, vận hành hệ thống, sẵn sàng cho việc nâng cấp mở rộng thành hệ thống trường học điện tử. Với việc tận dụng những ưu điểm của công nghệ container hóa, trong giai đoạn tiếp theo, nhóm nghiên cứu tiến hành nâng cấp, mở rộng các chức năng, dịch vụ của hệ thống; đồng thời, thực hiện di trú hệ thống lên môi trường đám mây, nhằm loại bỏ những giới hạn về tài nguyên của nền tảng hạ tầng hiện tại.
TÀI LIỆU THAM KHẢO:
  1. Phạm Ngọc Duy, Nguyễn Trung Quân (2020), Container hóa với Điện toán đám mây: Giải pháp xu thế trong phát triển và triển khai ứng dụng doanh nghiệp, Tạp chí Công Thương, số 01 tháng 01/2020, tr.191-200.
  2. Phạm Ngọc Duy (2020), Container hóa: Một phương pháp triển khai nhanh hệ thống quản lý học tập (LMS) trên môi trường đám mây, Tạp chí Công Thương, Số 10, Tháng 05/2020, tr.341-348, 2020.
  3. 3. IBM Cloud Education. (2020). IBM Cloud Learn Hub? What are Microservices? truy cập ngày 03/07/2020, https://www.ibm.com/cloud/learn/microservices.
  4. Microsoft Docs (2020), .NET Microservices: Architecture for Containerized .NET Applications, Microsoft, truy cập ngày 03/07/2020, https://docs.microsoft.com/en-us/dotnet/architecture/microservices/.
ADOPTING MICROSERVICES AND CONTAINERIZATION
TO BUILD AND DEPLOY A PRACTICAL EDUCATION MANAGEMENT SYSTEM FOR UNIVERSITIES
Master. PHAM NGOC DUY
               Lecturer, Faculty of Information Technology, Vietnam Maritime University
ABSTRACT:
This paper proposes a model of practical education management system for universities. This microservice architecture based model is established and deployed by using the containerization platform. A pilot practical education management system has been applied at the Faculty of Information Technology of Vietnam Maritime University. This system’s initial evaluations show the effectiveness of the use of microservice architecture and container platform in the development and operation of the practical education management system. The results also indicate the willingness to upgrade and scale-up the system to an e-university system in the future.
Keywords: Microservice, containerization, management system, university.
ThS. PHẠM NGỌC DUY - Giảng viên Khoa Công nghệ thông tin, Trường Đại học Hàng hải Việt Nam
(Nguồn: Tạp chí Công Thương - Các kết quả nghiên cứu khoa học và ứng dụng công nghệ, Số 20, tháng 8 năm 2020)

Cùng chuyên mục

Sản phẩm công nghệ cao, công nghệ xanh cho người tiêu dùng và sản xuất

26/04/2024 - 08:32

Ngày 25/4, tại Hà Nội, Trung tâm Giao dịch thông tin, công nghệ và thiết bị (Cục Thông tin khoa học và công nghệ quốc gia) phối hợp Hội Tự động hóa Việt Nam, Hiệp hội Doanh nghiệp khoa học và công nghệ Việt Nam, Hội Kinh tế số, Chi hội Doanh nhân xúc tiến thương mại quốc tế tổ chức “Triển lãm sản phẩm khoa học, công nghệ và đổi mới sáng tạo”. Nhiều sản phẩm ứng dụng công nghệ cao, công nghệ xanh lần đầu được giới thiệu đến người tiêu dùng và cho sản xuất.

Xem thêm

Tổng số lượt truy cập :
  • 1
  • 4
  • 2
  • 6
  • 0
  • 9
  • 7
  • 3