Đặt vấn đề Hiện nay việc thực hành lập trình của các sinh viên ngành công nghệ thông tin thường được thực hiện trên laptop, PC, hoặc các thiết bị cá nhân. Do việc cấu hình và cài đặt môi trường khác nhau, nên việc lập trình và xây dựng các dự án (project) CNTT diễn ra không đồng bộ, khiến việc thực hành gặp phải nhiều khó khăn. Quá trình cài đặt trải qua nhiều công đoạn mất thời gian. Sau khi cài đặt xong, môi trường thực hành cũng cần phải được kiểm tra trước khi cho sinh viên sử dụng.
Nguyên nhân là khi cài đặt môi trường lên máy tính thực hành, nếu không cẩn thận có thể thiếu thư viện, thiếu các thành phần yêu cầu của môi trường sẽ gây nên sai sót khi thực hành. Việc sử dụng máy tính ở các phòng thực hành tại trường học hay máy tính cá nhân khi ở nhà cũng khiến chi phí bỏ ra của các trường học và của mỗi sinh viên cao hơn. Máy tính cấu hình tốt nếu chỉ phục vụ cho một người sẽ gây lãng phí, do không tận dụng được hết tài nguyên máy. Vấn đề bảo mật cũng tiềm ẩn nhiều rủi ro và nguy cơ.
Trong quá trình thực hành sinh viên có thể thao tác, nghịch ngợm với các môi trường ngoài. Nếu sinh viên truy cập vào những địa chỉ không rõ nguồn gốc có mã độc sẽ gây ảnh hưởng đến môi trường thực hành và thiết bị. Đối với môi trường thực hành trong nhà trường hay các phòng nghiên cứu, trong quá trình học tập sinh viên có thể cấu hình lại các môi trường thực hành đã cài đặt sẵn, dẫn đến làm hỏng môi trường, gây ảnh hưởng đến những sinh viên thực hành sau đó. Để khắc phục, người bảo trì phòng thực hành (lab) phải dành nhiều công sức và thời gian để cài đặt lại môi trường.
Hiện tại có một số giải pháp có thể khắc phục vấn đề trên như sử dụng các bản ghost 1 để cài đặt và đồng bộ các môi trường hàng loạt, hoặc thực hành trên các môi trường trang mạng trực tuyến. Tuy nhiên những giải pháp này vẫn còn nhiều hạn chế. Ví dụ, khi sử dụng bản ghost để cài đặt các môi trường một cách đồng bộ, ta vẫn chưa thể chia sẻ nguồn tài nguyên của một máy tính cho nhiều người. Việc nâng cấp các môi trường trong bản ghost đó cũng phức tạp và phải thực hiện lần lượt.
Bản ghost có thể không tương thích với các máy tính có những cấu hình khác 1 Tệp (file) ghost là tệp nén tất cả thông tin của một ổ đĩa trên máy tính lại thành một file duy nhất. Tệp ghost này thường được dùng trong sao lưu và phục hồi ổ đĩa dữ liệu hoặc ổ đĩa cài đặt hệ điều hành 7 nhau. Trong khi đó, việc sử dụng các môi trường được cung cấp bởi các trang mạng trực tuyến có thể giải quyết được vấn đề khi máy tính thiếu tài nguyên, nhưng người sử dụng sẽ phụ thuộc vào các môi trường được cung cấp sẵn mà không thể đưa ra tùy chọn cài đặt cá nhân. Việc sử dụng các mạng trực tuyến cung cấp môi trường có sẵn chỉ hợp lý với các bài toán mang tính cá nhân, nhỏ lẻ và không đảm bảo về tính bảo mật, an toàn dữ liệu.
Hiện nay, một số giải pháp thương mại đã được cung cấp như trình biên dịch mã nguồn Cloud9 2 của Amazon hay giải pháp điện toán tích hợp toàn diện để phát triển ứng dụng của Microsoft là Azure 3. Cloud9 cung cấp cho người sử dụng một IDE lập trình trên nền tảng đám mây, chạy trên máy chủ của Amazon cung cấp. Với quy mô máy chủ lớn, Cloud9 có ưu điểm về tốc độ xử lý cực cao, cung cấp nhiều công cụ hỗ trợ việc phát triển ứng dụng. Tuy nhiên, người dùng sẽ phải trả phí theo thời lượng sử dụng hoặc trả phí theo gói.
Việc thực hành của sinh viên CNTT nếu sử dụng nền tảng Cloud9 gây lãng phí về chi phí và tài nguyên môi trường. Dịch vụ Azure của Microsoft thường được các lập trình viên trong các doanh nghiệp lựa chọn để phát triển ứng dụng thông minh. Từ nhận dạng hình ảnh đến dịch vụ, Azure và trí thông minh nhân tạo của Microsoft tạo ra những trải nghiệm mới có quy mô, hỗ trợ công nghệ Deep Learning 4 và phân tích thời gian thực trên bất kỳ hình dạng và kích thước dữ liệu nào. Cũng giống như Cloud9 của Amazon, Azure chỉ phù hợp với việc phát triển ứng dụng và công nghệ thuộc các công ty công nghệ để triển khai sản phẩm và dịch vụ của họ.
Việc sử dụng dịch vụ Cloud9 hay Azure trong thực hành cho sinh viên CNTT đều gây lãng phí chi phí và tài nguyên. Đối tượng và phạm vi nghiên cứu Trước thực trạng trên, luận văn này tập trung nghiên cứu giải pháp xây dựng môi trường thực hành cho sinh viên CNTT với các vấn đề cần giải quyết như sau: (1) Hệ thống cung cấp đầy đủ các loại môi trường thực hành CNTT, đảm bảo đầy đủ các chức năng hỗ trợ cho việc học tập và nghiên cứu. (2) Hệ thống có tính năng mở rộng theo yêu cầu, khi cần thiết có thể phục vụ được đồng thời hàng nghìn sinh 2 https://azure.com/sv-se/blog/windows-azure-and-cloud9-ide-at-node-summit/ 3 https://searchcloudcomputing.com/definition/Windows-Azure 4 Deep Learning là định nghĩa thuộc về một phần các thuật toán trong Machine Learning (máy học) với đặc thù mang độ phức tạp cao hơn. eep Learning bao gồm nhiều lớp ẩn trong một mạng lưới thần kinh và thuộc lớp sau cùng.
Việc đi qua nhiều số lượng lớp và mạng phức tạp được cho là độ sâu. 8 viên cùng thực hành. (3) Giải pháp phải tận dụng được hiệu quả nguồn tài nguyên máy tính để giảm chi phí đầu tư, tránh tình trạng máy có cấu hình cao chỉ phục vụ được một sinh viên tại một thời điểm. (4) Môi trường thực hành có thể dễ dàng được cấu hình, thêm bớt thư viên hoặc có thể được cài đặt lại về mặc định một cách nhanh chóng.
(5) Xây dựng một quy trình chuẩn trong việc thêm môi trường thực hành mới vào hệ thống, bao gồm các bước: xác định yêu cầu của môi trường, lựa chọn phiên bản, cài đặt thử nghiệm, đánh giá chức năng và hiệu suất, đóng gói bản cài đặt, triển khai môi trường. Xây dựng môi trường thực hành trên công nghệ ảo hóa sẽ khắc phục được những hạn chế so với việc cài đặt thủ công môi trường trên từng thiết bị. Với công nghệ ảo hóa ta chỉ cần cài đặt trên một máy chủ duy nhất rồi phần chia môi trường thực hành đến các máy tính khác. Việc phát triển môi trường thực hành trên một máy chủ sẽ giúp người quản lý hệ thống dành thời gian tập trung phát triển môi trường, đảm bảo các tính năng cần thiết và dễ dàng nâng cấp cũng như tiện lợi khi sử dụng.
Việc dựa vào những lợi ích mà công nghệ ảo hóa mang lại, việc thực hành của sinh viên được thực hiện dễ dàng, thuận lợi nhưng vẫn tiết kiệm chi phí. Công nghệ ảo hóa được chia làm nhiều loại, trong đó nổi bật là hai công nghệ Virtualization và Containerization. Virtualization là công nghệ ảo hóa phổ biến nhất hiện nay, là công nghệ chia các máy chủ vật lý thành nhiều máy chủ đơn lẻ, có đầy đủ thành phần, cấu trúc như một máy chủ thật. Virtualization giúp cho một máy chủ có thể đảm bảo được nhiều chức năng cũng như nhiệm vụ khác nhau khi thực hiện công việc.
Containerization là công nghệ ảo hóa mới, thường được sử dụng nhiều tại các doanh nghiệp CNTT để triển khai dịch vụ trên nền tảng ảo hóa. Với công nghệ containerization các ứng dụng sẽ được đóng gói thành các container. Các container này sử dụng chung nhân hệ điều hành với máy chủ chính nên giúp tối ưu thời gian khởi động ứng dụng so với công nghệ Virtualization. Ngoài ra công nghệ containerization còn có nhiều ưu điểm trong quá trình làm việc nhóm, giúp cho các cấu hình phần mềm được triển khai thống nhất và đồng bộ.
Docker là một công cụ giám sát, quản lý ảo hóa trên nền tảng Containerization. Với Docker, người sử dụng có thể triển khai các container một cách đơn giản và nhanh chóng. Docker cũng cung cấp những tính năng để thực thi, giám sát và quản lý các container một cách thuận tiện so với việc triển khai container một cách thủ công. Việc áp dụng công nghệ Docker trong việc xây dựng môi trường thực hành cho sinh viên CNTT là hướng tiếp cập khá mới mẻ và có lẫn nhiều ưu, nhược điểm so với các giải pháp công nghệ khác.
Luận văn này tập trung nghiên cứu công nghệ Containerization nói chung và công cụ ảo hóa Docker nói riêng, đồng thời so sánh 9 Docker và các công nghệ ảo hóa Containerization khác. Từ đó, xây dựng mô hình thiết kế và triển khai cho hệ thống thực hành công nghệ thông tin dựa trên nền tảng Docker cho sinh viên ngành CNTT tại các trường đại học, cao đẳng. Định hướng giải pháp Luận văn này trước tiên tìm hiểu các công nghệ và mô hình ảo hóa để phân tích và so sánh ưu nhược điểm của các công nghệ này. Sự phù hợp của công nghệ Docker với bài toán đặt ra sẽ được làm rõ, qua đó giải thích cho việc lựa chọn đối tượng và phạm vi nghiên cứu trong đề tài này.
Luận văn đề xuất mô hình và kiến trúc cho hệ thống thực hành CNTT trên nền tảng Docker, cùng với sự hỗ trợ của một số công cụ hỗ trợ quản lý ảo hóa như Kubernetes, Rancher, … đảm bảo tạo lập được các môi trường thực hành CNTT một cách đơn giản và thuận tiện, góp phần giảm chi phí đầu tư phòng thực hành cho sinh viên và nâng cao chất lượng học tập. Mô hình kiến trúc sẽ được thực nghiệm để đánh giá chức năng và hiệu suất hoạt động. Những vấn đề mô hình đề xuất đã giải quyết được và chưa giải quyết được so với các giải pháp đang có hiện nay sẽ được làm rõ. Các chức năng và yêu cầu cơ bản cần đáp ứng được bao gồm cung cấp môi trường thực hành cho sinh viên, lưu trữ, chia sẻ việc lập trình, và tối ưu được tài nguyên hệ thống.
Cuối cùng, luận văn sẽ nghiên cứu và đề xuất một hệ thống tiêu chuẩn hỗ trợ đơn giản hóa việc thiết lập và sử dụng môi trường thực hành cho sinh viên nhắm giải quyết các vấn đề đã nêu. Bố cục luận văn Phần còn lại của báo cáo luận văn tốt nghiệp này được trình bày như sau: Chương 2 trình bày việc khảo sát và phân tích yêu cầu về thực tế triển khai môi trường thực hành cho sinh viên CNTT.