Sự ra đời của Docker Docker là một nền tảng mã nguồn mở cung cấp cho người sử dụng những công cụ để có thểđóng gói, vận chuyển và chạy container một cách đơn giản và dễ dàng trên các nền
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
-& -BÁO CÁO CUỐI KỲ ĐỒ ÁN 2
ĐỀ TÀI: TÌM HIỂU VỀ DOCKER VÀ XÂY DỰNG ỨNG
DỤNG MINH HỌA
Giảng viên hướng dẫn:
Thầy Nguyễn Công Hoan
Sinh viên thực hiện:
Trần Phương Duy 18520038Tăng Khánh Chương 18520010
Lớp :SE122.M11.PMCL
TP.Hồ Chí Minh, ngày 4 tháng 12 năm 2021
Trang 2LỜI CẢM ƠN
Lời đầu tiên em xin chân thành gửi lời cảm ơn đến thầy Nguyễn Công Hoan đã nhiệt tìnhgiảng dạy trên lớp, hỗ trợ những thông tin cần thiết và giải đáp những thắc mắc cho nhóm
và các bạn trong suốt quá trình thực hiện đề tài
Đồng thời nhóm em cũng muốn gửi lời cảm ơn đến các anh chị khóa trên, đặc biệt lànhững anh chị trong khoa đã chia sẻ những kinh nghiệm quý báu về môn học cũng nhưnhững kiến thức liên quan Cũng xin cảm ơn bạn bè đã tạo điều kiện thuận, mọi người đãđưa ra nhận xét và góp ý chân thành, vô cùng quý giá Những người đã động viên, hỗ trợnhóm hoàn thành đề tài
Nhóm thực hiệnThủ Đức, Tháng 12 Năm 2021
Trang 36 Một số lệnh cơ bản của Docker 20
Trang 46.6 Docker Compose 24
III Tìm hiểu về nền tảng học trực tuyến 25
1 Giới thiệu ứng dụng minh họa 25
1.2 Tìm hiểu về các mô hình nền tảng học trực tuyến 25
2 Tìm hiểu và phân tích kiến trúc các nền tảng học trực tuyến 34
IV Ứng dụng học trực tuyến Udemy 43
1 Product Requirement Document 43
1.3.5 Bài giảng là video có phụ đề đi kèm resource hoặc bài đọc 491.3.6 Ghi chú trong lúc học và làm quiz sau mỗi bài giảng 501.3.7 Hỏi đáp với giảng viên và nhận hướng dẫn 511.3.8 Tạo khóa học và trở thành giảng viên 51
2 Use cases và đặc tả use cases: 55
Trang 5IV Hướng dẫn đóng gói ứng dụng 87
Trang 6I GIỚI THIỆU CHUNG
2.1 Giới thiệu đề tài
Đề tài: Tìm hiểu Docker và xây dựng ứng dụng.
Công nghệ phát triển, hàng loạt các ứng dụng được tạo ra, nhiều ngôn ngữ lập trình mớihình thành nhằm đáp ứng nhu cầu cụ thể nào đó Những ngôn ngữ lập trình khác nhaulại yêu cầu các phần mềm hỗ trợ, gói thư viện và môi trường khác nhau Mỗi lần cài đặt,
sẽ tốn nhiều công sức và thời gian
Ví dụ đang làm việc lập trình Android, nhưng muốn làm việc với hệ điều hành iOS thìphải cài thêm OS để triển khai được các ứng dụng Python, Java, Scala… phải tiến hànhcài đặt hàng tá môi trường Đó là chưa kể xung đột phần mềm, port… và vấn đề là sẽthật kinh khủng nếu xảy ra xung đột phần mềm và làm ảnh hưởng đến hoạt động củacác ứng dụng đang hoạt động trên máy tính
Trang 7Chính vì thế Docker ra đời, nó có thể triển khai bất cứ nơi đâu do không phụ thuộc vào
OS và cơ sở hạ tầng, thời gian khởi động cực nhanh và khi nhiều người cùng phát triểnmột dự án sẽ không sợ sai khác về môi trường Do đó nhóm chúng em lựa chọn Docker
Nhóm tập trung nghiên cứu và tìm hiểu về Docker, Docker Swarm và ReactJs cũng
như áp dụng các nghiên cứu này vào việc xây dựng ứng dụng minh họa để giúp có
cái nhìn tổng quan và hiểu sâu hơn
2.3 Nội dung nghiên cứu
Tiến hành nghiên cứu chi tiết về các thành phần và kiến trúc của Docker, cách thứchoạt động cũng như làm quen với các câu lệnh của Docker và Docker Swarm Kèmtheo đó là xây dựng ứng dụng minh họa bằng ReactJs
2.4 Kết quả hướng tới
● Nền tảng học trực tuyến được xây dựng bằng ReactJs
Trang 8II DOCKER
1 Sự ra đời của Docker
Docker là một nền tảng mã nguồn mở cung cấp cho người sử dụng những công cụ để có thểđóng gói, vận chuyển và chạy container một cách đơn giản và dễ dàng trên các nền tảngkhác nhau một cách nhanh nhất với tiêu chí - “Build once, run anywhere” Docker thực hiện
ảo hóa ở mức hệ điều hành Mỗi container là cô lập (isolated) với nhau nhưng đều dùngchung một số bin/lib và kernel của Host OS Docker có thể làm việc trên nhiều nền tảngkhác nhau như Linux, Microsoft Windows và Apple OS X Ngoài ra, Docker còn hỗ trợnhiều dịch vụ điện toán đám mây nổi tiếng như Microsoft Azure hay Amazon WebServices
2 Khái niệm Docker
2.1 Quá trình hình thành
Bắt đầu từ những ngày đầu tiên, mô hình server thường sẽ là Máy chủ vật lý + Hệ điều hành+ Application
Trang 9Vậy muốn xài 2 dịch vụ thì ta phải có 2 server như vậy, và chi phí cho mỗi server như vậy làkhông hề ít một tí nào Tiếp theo là sự ra đời của công nghệ ảo hóa virtualization
Virtualization (ảo hóa) là một công nghệ được thiết kế để tạo ra một tầng trung gian giữa
phần cứng máy tính và phần mềm chạy trên nó Ảo hóa được xây dựng dựa trên ý tưởngphân chia ổ đĩa, chúng phân chia máy chủ gốc thành nhiều máy chủ logic Từ đó, một máy
Trang 10chủ vật lý đơn giản có thể tạo thành nhiều máy ảo chạy độc lập, riêng rẽ với nhau Các máy
ảo đó có thể có hệ điều hành riêng, ứng dụng riêng, độc lập với các máy ảo khác
Tuy nhiên, việc ảo hóa này cũng nảy sinh ra nhiều vấn đề mới: ngốn tài nguyên, tốn thờigian thực thi, cồng kềnh vì chúng chiếm luôn phần cứng máy host ngay từ khi cài
Để giải quyết các vấn đề trên, người ta đã phát minh ra Containerization
Containerization sử dụng các container, các container này sẽ sử dụng chung nhân OS
kernel với máy chủ host, điều này có nghĩa là khi container hoạt động cần tài nguyên, nó sẽtrực tiếp lấy từ máy host như một phần mềm bình thường chạy trên máy host vậy, điều nàytránh lãng phí tài nguyên từ máy ảo khi không sử dụng như trong công nghệ virtualization.Vậy thì công nghệ containerization dùng cái gì đây? Đó là Docker
2.2 Docker là gì?
Docker là 1 phần mềm chạy trên Linux hoặc Windows, cho phép dựng, kiểm thử và triển
khai ứng dụng một cách nhanh chóng Docker đóng gói phần mềm vào các đơn vị tiêuchuẩn hóa được gọi là container
Trang 11Docker sử dụng công nghệ ảo hóa containerization để triển khai các ứng dụng vào trongcontainer ảo hóa.
Docker sử dụng nhân kernel linux để chạy các container, trên hệ điều hành Linux Docker cóthể sử dụng trực tiếp nhân của máy host; còn với các hệ điều hành Windows, MacOS – cóthể vì lý do bảo mật nên docker không thể trực tiếp xài chung kernel với các hệ điều hànhnày nên trên các hệ điều hành này docker sẽ tạo ra một máy ảo virtual guest với nhân linux
để chạy các container
Container là đơn vị phần mềm cung cấp cơ chế đóng gói ứng dụng, mã nguồn, thiết lập,
thư viện… vào một đối tượng duy nhất Ứng dụng sau khi được đóng gói có thể hoạt độngmột cách nhanh chóng và hiệu quả trên các môi trường điện toán khác nhau Từ đó nó cóthể tạo ra một môi trường hoàn hảo nơi mà có mọi thứ để chương trình có thể hoạt độngđược, không chịu sự tác động từ môi trường của hệ thống cũng như không làm ảnh hưởngngược lại về phía hệ thống chứa nó
Để tạo ra container phải kể đến 2 tính năng có trong nhân Linux đó là:
● Namespace: có nhiệm vụ cô lập các tài nguyên của hệ thống, khiến các tiến trình
"nhìn thấy" tập tài nguyên khác nhau
● Control groups (cgroups): giới hạn tài nguyên của mỗi ứng dụng, cho phép DockerEngine điều phối lượng tài nguyên phần cứng của mỗi ứng dụng, thiết lập các ràngbuộc
Ngoài ra, việc container được chia ra thành nhiều layer khác nhau cũng khiến cho việc quản
lý tài nguyên được hiệu quả hơn
Cụ thể, container mới sẽ được xây dựng dựa trên các image layer dạng read-only Trong mỗicontainer sẽ có thêm một layer với quyền read-write, mọi thay đổi của container sẽ chỉ đượcghi vào đây Như vậy, chỉ từ một vài image ban đầu chúng ta có thể tạo ra nhiều containerkhác nhau từ đó tiết kiệm được một phần không gian lưu trữ
Trang 12● Tiết kiệm không gian: container được xây dựng dựa trên nhiều image có sẵn, từ
đó tiết kiệm được nhiều không gian lưu trữ hơn
Trang 13● Đồng nhất: không có sự sai khác về mặt môi trường khi triển khai ở bất kỳ nơiđâu, tạo ra sự nhất quán khi làm việc theo nhóm.
● Nhanh: do chia sẻ host OS nên các container có thể gần như được tạo một cáchtức thì, việc khởi động cũng diễn ra nhanh hơn rất nhiều
4 Các khái niệm trong Docker
● Rest API: controller cho docker daemon, chỉ ra những gì docker daemon sẽ làm
● Client: Là một công cụ giúp người dùng giao tiếp với Docker host Người dùngtương tác với docker thông qua command trong terminal (CLI) Docker Client sẽ sửdụng API gửi lệnh tới Docker Daemon
Có 4 đối tượng lớn trong thế giới của Docker Engine: Image, Container, Network, Volume
4.1.1 Image
Một Docker Image là một read-only template dùng để tạo ra các containers
Image trong docker còn được gọi là mirror, nó là 1 đơn vị đóng gói chứa mọi thứ cần thiết
để 1 ứng dụng chạy
Image được tạo thành từ nhiều layer xếp chồng lên nhau, bên trong image là 1 hệ điều hành
bị cắt giảm và tất cả các phụ thuộc (dependencies) cần thiết để chạy 1 ứng dụng
Trang 14Ta có thể có được image docker bằng cách pulling từ image registry Thao tác pulling sẽ tảiimage xuống máy chủ docker, nơi docker có thể sử dụng nó để chạy 1 hoặc nhiều container.Thường thì image sẽ dựa trên 1 image có sẵn với những tùy chỉnh thêm Một image sẽ đượcbuild dựa trên những chỉ dẫn của Dockerfile.
DockerFile
Dockerfile là một file dạng text không có phần đuôi mở rộng, chứa các đặc tả về một trườngthực thi phần mềm, cấu trúc cho Docker image Docker image có thể được tạo ra tự độngbằng cách đọc các chỉ dẫn trong Dockerfile Từ những câu lệnh đó, Docker sẽ build raDocker image (thường có dung lượng nhỏ từ vài MB đến lớn vài GB)
Trang 16Container và VM có sự cách ly và phân bổ tài nguyên tương tự nhưng có chức năng khácnhau vì container ảo hóa hệ điều hành thay vì phần cứng Các container có tính portable vàhiệu quả hơn.
Container nhằm làm cho các ứng dụng trở nên dễ dàng xây dựng, di chuyển và chạy Quátrình đưa 1 ứng dụng chạy trong container có để được hiểu như sau:
1 Đầu tiên ta bắt đầu với code app và các phụ thuộc của nó
2 Tạo Dockerfile mô tả ứng dụng, các phụ thuộc và cách chạy ứng dụng đó
3 Build Dockerfile thành image
4 Push image mới build vào registry(option)
5 Chạy container từ image
Trang 174.1.3 Network
Docker network có nhiệm vụ cung cấp private network (VLAN) để các container trên mộthost có thể liên lạc được với nhau, hoặc các container trên nhiều hosts có thể liên lạc đượcvới nhau (multi-host networking)
4.1.4 Volume
Docker volume là cơ chế tạo và sử dụng dữ liệu của docker, có nhiệm vụ lưu trữ dữ liệu độclập với vòng đời của container
Có 3 trường hợp sử dụng Docker Volume:
1 Giữ lại dữ liệu khi một Container bị xóa
2 Để chia sẻ dữ liệu giữa máy chủ vật lý và Docker Container
3 Chia sẻ dữ liệu giữa các Docker Container
4.2 Công cụ phân tán
4.2.1 Docker Registry
Docker Registry là một dịch vụ máy chủ cho phép lưu trữ các docker image của cá nhân,công ty, team,… Dịch vụ Docker Registry có thể được cung cấp bởi tổ chức thứ 3 hoặc làdịch vụ nội bộ được xây dựng riêng nếu bạn muốn Một số dịch vụ Docker Registry phổbiến như :
● Azure Container Registry
Trang 18● Docker Hub
● Quay Enterprise
● Google Container Registry
● AWS Container Registry
4.2.2 DockerHub
Docker Hub là một “github for docker images” Trên Docker Hub có hàng ngàn publicimages được tạo bởi cộng đồng cho phép bạn dễ dàng tìm thấy những image mà bạn cần Vàchỉ cần pull về và sử dụng với một số config mà bạn mong muốn
5 Kiến trúc của Docker
Docker là một ứng dụng client-server, có 2 phiên bản phổ biến:
● Docker Community Edition (CE): là phiên bản miễn phí và chủ yếu dựa vào các sảnphẩm nguồn mở khác
● Docker Enterprise (EE): phiên bản dành cho các doanh nghiệp, khi sử dụng phiênbản này sẽ nhận được sự support của nhà phát hành, ngoài ra còn có thêm các tínhnăng quản lý và bảo mật
Trang 19Các thành phần của Docker Engine gồm có:
● Docker Deamon: chạy trên host, đóng vai trò là server, nhận các RESTful request từDocker Client và thực thi nó Là một lightweight runtime giúp build, run và quản lýcác containers và các thành phần liên quan khác
● Docker Deamon quản lý 4 đối tượng chính: image, container, network, volume
● Docker Client (CLI): cung cấp giao diện dòng lệnh (command line) cho người sửdụng, đồng thời cũng gửi request đến Docker deamon
Trang 20Sơ đồ minh họa các lệnh phổ biến của Docker client và mối quan hệ của Image, Container,Network, Volume.
Docker Registry: nơi lưu trữ Docker image Docker Hub là một registry công khai mà bất
cứ ai cũng có thể sử dụng và Docker được cấu hình để tìm kiếm image trên Docker Hubtheo mặc định Bạn thậm chí có thể chạy registry riêng của mình Có hai loại registry làpublic hoặc private registry
6 Một số lệnh cơ bản của Docker
6.1 Image
● Liệt kê các image có trong hệ thống
$ docker images
● Tải 1 image về hệ thống
$ docker pull <image name>:<tag name>
Tải phiên bản mới nhất: $ docker pull <image name>:latest
● Xóa 1 image ra khỏi hệ thống
Có 2 cách:
Trang 21Cách 1: sử dụng tên image
$ docker image rm <image name>:<tag name>
Cách 2: sử dụng id image
$ docker image rm <image id>
● Lưu image thành file ở trên hệ thống máy host
$ docker save output <tên file muốn đặt>.tar <image name | image id>
● Ép xóa image dù đang chạy 1 container
$ docker image rm <image name | image id> -f
● Kiểm tra lịch sử hình thành nên image
$ docker image history <image name | image id>
● Tra cứu thông tin của 1 image
$ docker inspect <image name | image id>:<image tag>
6.2 Container
● Kiểm tra container nào đang chạy
$ docker ps
● Chạy 1 container
$ docker run <tham số> <image name | image id> Tham số :
-i : Muốn container tạo ra sẽ nhận tương tác, nhận input
-t : container đó kết nối với terminal
* 2 tham số có thể viết gọn lại là : -it
● Kiểm tra các container đang không chạy
$ docker ps -a
● Khởi chạy 1 container đang dừng
$ docker start <container name | container id>
● Truy cập vào container đang chạy
$ docker attach <container name | container id>
● Ép dừng 1 container
$ docker stop <container name | container id>
Trang 22● Đặt tên và hostname cho container
$ docker run -it name “<container name>” -h <hostname> <image>
● Xóa 1 container
$ docker rm <image>
● Xóa container đang chạy
$ docker rm -f <image>
● Cài 1 số gói phần mềm trong container
$ apt install <tên phần mềm>
● Lưu container thành 1 image
$ docker commit <container name | container id> <đặt tên cho image>:<đặt tên choversion>
● Tra cứu thông tin của 1 container
$ docker inspect <container name | container id>
● Kiểm tra lỗi bên trong 1 container
$ docker logs <container name | container id>
● Lấy N-dòng log cuối cùng
$ docker logs tail <number> <container name | container id>
● Lấy log của container đang chạy
$ docker logs -f <container name | container id>
● Giám sát tài nguyên container sử dụng
$ docker stats <container name | container id >
Giám sát tài nguyên tất cả container đang chạy : $ docker stats
● Tra cứu hoạt động cấu trúc file của container
$ docker diff <container name>
6.3 Network
● Tải busybox
$ docker pull busybox
Trang 23● Kiểm tra đang có những mạng nào
$ docker network ls
● Kiểm tra thông tin của 1 network
$ docker network inspect <network name>
● Chạy container ánh xạ cổng mạng trong docker
$ docker run -it name <container name> -p <cổng muốn ánh xạ đến ở máy host
>:<ánh xạ vào cổng nào của container> busybox
$ docker network rm <network name>
● Chạy container truy cập mạng network
$ docker run -it name <container name> network <network name> busyboxTham số:
network : cho phép chỉ định network muốn truy cập
6.4 Volume
● Kiểm tra đang sử dụng ổ đĩa nào
$ docker volume ls
● Tạo ổ đĩa
$ docker volume create <volume name>
● Kiểm tra thông tin ổ đĩa
$ docker volume inspect <volume name>
● Xóa ổ đĩa
$ docker volume rm <volume name>
● Gán ổ đĩa vào container
Trang 24$ docker run -it name <đặt tên container> mount source=<tên ổ đĩa muốn gán>,target=<thư mục nó ánh xạ ổ đĩa pathContainer> <image Id>
Tham số :
mount : dùng để gán ổ đỉa
target: ổ đĩa này gán và ánh xạ vào thư mục nào của container
● Tạo ra ổ đĩa mà nó ánh xạ đến thư mục cụ thể của máy host
$ docker volume create opt device=<đường dẫn thư mục> opt type=none
opt o=bind <tên ổ đĩa muốn tạo>
6.5 DockerFile
● Tạo 1 Dockerfile trong docker
$ touch <Dockerfile name>
Có thể thêm vào các chỉ thị sau vào Dockerfile:
+ Thiết lập thư mục mặc định của image này WORKDIR /var/www/html
+ Cho biết image này nó hoạt động, lắng nghe trên cổng nào EXPOSE 80
+ Muốn khi container tạo ra từ image này thì mặc định nó sẽ chạy tiến trình nàoENTRYPOINT [ "httpd" ]
thiết lập tham số cho ENTRYPOINT thì chúng ta sử dụng chỉ thị
CMD [ "-D", "FOREGROUND" ]
● Từ Dockerfile phát sinh ra image tương ứng
$ docker build -t <name image>:<tag image> -f <name Dockerfile> <địa chỉ imagetính từ thư mục hiện tại>
6.6 Docker Compose
● Tạo file Docker Compose
$ touch <docker-compose name>.yml
● Thực thi file Docker Compose
$ <docker-compose name> up
Trang 25III Tìm hiểu về nền tảng học trực tuyến
1 Giới thiệu ứng dụng minh họa
1.1 Bài toán thực tế
Ngành giáo dục được xem là ngành nghề đáng trân trọng nhất trong các cả các nghề, giáodục phát triển nhanh và khả năng hội tụ cao trong bối cảnh kinh tế biến đổi liên tục hiệnnay Cùng với đó công việc quản lý và dạy học của các thầy cô cũng trở nên khó khăn hơnnếu như không có một sự phát triển về công nghệ thông tin trong ngành giáo dục thì rấtkhó để học sinh và sinh viên có thể tiếp thu phát triển hết khả năng của mình Ứng dụngcông nghệ vào nền tảng giáo dục học trực tuyến chính là một giải pháp được rất nhiều chủđầu tư lựa chọn hiện nay Không chỉ giúp người dạy được chủ động hơn trong việc truyềntài mà còn giúp cho học sinh, sinh viên tiếp thu kiến thức một cách tổng quan hơn, côngnghệ còn giúp ngành giáo dục vươn xa nhiều hơn thế nữa
Không những thế, trong thời gian gần đây, việc dịch bệnh Covid-19 lan rộng trên phạm vitoàn thế giới, việc suy giảm nhu cầu học tập trực tiếp và không thể đến trường lớp để họccùng thầy cô đã ảnh hưởng rất nhiều đến các bạn học sinh và sinh viên.Chính vì lại cảng có
do để đưa ngành giáo dục tích hợp với công nghệ thông tin để người học có thể tiếp thuđược kiến thức trực tiếp trong bối cảnh dịch bệnh đang rất phức tạp
1.2 Tìm hiểu về các mô hình nền tảng học trực tuyến
Tìm hiểu theo hướng phát triển nền tảng học trực tuyến thì chúng ta có cái nhìn tổng quát
về hướng theo 3 mô hình và điểm khác nhau như nào?
Mô hình 1: (nền tảng trực tiếp lên chuyển thành trực tuyến) chuyển hết các hoạt động học tập, công cụ học tập và quản lý giờ giấc của giáo viên và học sinh của 1 trường trực tiếp sang trực tuyến)
❖ Người dùng: BQL nhà trường, giáo viên, nhân viên, học sinh, PHHS
❖ Các chức năng cơ bản:
● Đối với BQL nhà trường:
Trang 26○ Quản lý giáo viên
○ Quản lý nhân viên
○ Quản lý học sinh
● Đối với giáo viên:
○ Quản lý lớp học
○ Quản lý môn học: đăng bài giảng môn học
○ Tương tác với học sinh
● Đối với học sinh:
○ Học các môn học trong khóa
○ Tương tác với nhà trường
● Bài giảng theo lớp 10, 11, 12
● Điểm danh
● Quản lý thu chi (tiền học phí, tiền lương)
● Quản lý thời khóa biểu
Trang 27● Học sinh:
○ Học sinh được chia ra thành các chi nhánh để có thể dễ dàng kiểm soát thôngtin
○ Thông tin của học viên được quản lý đầy đủ
○ Các khóa học và chương trình học của học sinh được cập nhật đầy đủ
○ Nhắc nhở khi học sinh vắng nhiều buổi
○ Tổng hợp các kết quả học tập để khen thưởng hoặc nhắc nhở các học sinh
● Giáo viên:
○ Tổng hợp thành tích của giáo viên để phụ huynh và học viên có sự thuyếtphục trong sự lựa chọn khóa học của mình
○ Quản lý số giờ lên lớp của giáo viên
○ Kiểm soát các danh sách lớp học mà giáo viên đang dạy
● Lớp học:
○ Điểm danh và quản lý số lượng học viên có trong lớp học
○ Chỉnh sửa như thêm, xóa,… lịch học Lưu ý lịch học có thể được sắp xếp đểlặp lại theo tuần, theo tháng và theo năm
● Thu chi:
○ Tổng lại số tiền mà mỗi học viên phải trả, nhắc nhở nếu quá hẹn
○ Quản lý số tiền đã chi trả cho nhu cầu của các chương trình học
○ Tự động xử lý học phí trong các trường hợp chuyển lớp, chuyển khóa học haycác trường hợp rắc rối
● Quản lý kết quả học tập của học viên:
○ Tính kết quả trung bình của học viên
○ Lưu tự động kết quả trong hệ thống
○ Tổng hợp kết quả cao nhất để khen thưởng
Trang 28❖ Nhược điểm:
➢ Nhà trường sẽ phải thay đổi cách dùng truyền thống từ giấy tờ, excel, quaphần mềm chỉ cần nhập liệu và thực hiện trên máy tính Đầu tiên bạn bỏ rachính là thời gian để triển khai, đưa nhân viên vào luồng làm việc nhập số liệutrên phần mềm
➢ Chi phí bỏ ra để đầu tư phần mềm tùy theo quy mô và nghiệp vụ mà đòi hỏiphần mềm
– Phải mất thời gian để lập kế hoạch dự án, xác định các mốc quan trọng, nhập mọi thứvào hệ thống và phân bổ nhiệm vụ cho các thành viên trong nhóm
Mô hình 2: giống nền tảng như udemy gồm nhiều môn lĩnh vực, xây dựng ra nhằm mục đích cho các học viên có một khóa học trọn vẹn Mô hình này là 1 gói môn học ví
dụ như cntt, kế toán, kinh tế, … không có lớp như là lớp 1 gồm học những môn gì Mô
Trang 29hình này nó tập hợp nhiều lĩnh vực để đạt mục tiêu mình cần ví dụ như làm web thì học css, html, js, framework
❖ Người dùng: giảng viên và học viên (tất cả mọi người đều có thể là giảng viên và họcviên)
❖ Các chức năng cơ bản:
● Đối với giảng viên
○ Đăng bài giảng, viết tài liệu
○ Trả lời thắc mắc học viên
○ Tương tác với học viên
○ Nhận tiền từ bán khóa học
● Đối với học viên
○ Mua khóa học hoặc học khóa học miễn phí
○ Tương tác với giảng viên đặt câu hỏi
○ Lưu bài giảng học lâu dài
● Danh sách các khóa học trực tuyến phân làm nhiều lĩnh vực
● Danh sách rút gọn các khóa học yêu thích
● Đánh giá và nhận xét giúp khóa học đáng tin cậy hơn
Trang 30● Cập nhật những thay đổi của giảng viên sau trong phạm vi khóa học sau khimua
● Bài giảng là video có phụ đề đi kèm resource hoặc bài đọc
● Ghi chú trong lúc học và làm quiz sau mỗi bài giảng
● Hỏi đáp với giảng viên và nhận hướng dẫn
● Tạo khóa học và trở thành giảng viên
● Hiện có các khóa học với nhiều ngôn ngữ trên nền tảng
● Bạn được truy cập vĩnh viễn không hạn chế đối với mọi nội dung của cáckhóa học mà bạn đã mua (và dĩ nhiên bất kỳ khóa học miễn phí nào trên nềntảng)
● Các khóa học có xu hướng tập trung vào những kỹ năng thực tế thay vì kiếnthức lý thuyết đơn thuần
● Đối với các nhóm từ 5 người trở lên, cung cấp chương trình đào tạo khôngphụ thuộc địa điểm dựa trên tập hợp khóa học được tuyển chọn
❖ Nhược điểm:
● Số lượng khóa học hiện tại có thể quá nhiều, và việc chọn một khóa học haycần có thời gian
● Phải kết hợp nhiều khóa học thì mới đạt được mục tiêu kiến thức
● Văn bằng khóa học được cấp trực tiếp và hiếm khi đề cập đến một thươnghiệu trường đại học nổi tiếng
● Một số khóa học hay nhất thường bằng tiếng Anh, và một số ngôn ngữ nhấtđịnh thì cung cấp ít lựa chọn hơn
Mô hình 3: (giống như mô hình dạy thêm) 1 người thầy cô giảng viên chuyên về 1 môn nào đó ra chuỗi cái video lớp 10 11 12, giữa người có kiến thức với người chưa có kiến thức Mang tính c2c (tức là người dùng mang đến cho người dùng)
Trang 31❖ Người dùng: giáo viên và học sinh
❖ Các chức năng cơ bản:
● Đối với giáo viên
○ Đăng bài giảng, viết tài liệu
○ Trả lời thắc mắc học viên
○ Tương tác với học viên
● Đối với học sinh
○ Học trọn vẹn được một môn nào đó của khối lớp
○ Tương tác với giảng viên đặt câu hỏi
Trang 32○ Lưu bài giảng học lâu dài
● Danh sách các môn học trực tuyến phân làm nhiều lớp
● Danh sách rút gọn các môn học yêu thích
● Đánh giá và nhận xét giúp môn học đáng tin cậy hơn
● Cập nhật những thay đổi của giáo viên sau trong phạm vi môn học sau khimua
● Bài giảng là video có phụ đề đi kèm resource hoặc bài đọc
● Ghi chú trong lúc học và làm quiz sau mỗi bài giảng
● Hỏi đáp với giáo viên và nhận hướng dẫn
❖ Ưu điểm:
● Đào tạo mọi lúc mọi nơi: Truyền đạt kiến thức nhanh chóng, thông tin theo
yêu cầu của học viên Người học có thể truy cập vào các khóa học trực tuyến
tại bất kỳ nơi đâu: ở nhà, nơi làm việc hay các địa điểm mạng internet côngcộng và vào bất ký thời gian nào thích hợp khi người học muốn
● Tiết kiệm chi phí học tập: Giúp học sinh giảm tới khoảng 60% chi phí đi lại,địa điểm tổ chức học tập Mỗi học sinh đều có thể đăng ký nhiều môn học và
thanh toán trực tuyến chi phí học tập.
● Tiết kiệm thời gian học tập: So với phương pháp đào tạo truyền thống thì cáckhóa học qua mạng giúp học viên tiết kiệm khoảng từ 20 đến 40 % thời gian
đo giảm được thời gian đi lại và sự phân tán
● Linh động và uyển chuyển: học sinh có thể chủ động và linh hoạt trong sự chỉ
dẫn của giáo viên hay những môn học trực tuyến với hình thức tương tác.
Ngoài ra, học sinh còn có thể tự động điều chỉnh tốc độ học tập theo khả năng,
và còn có thể nâng cao thêm kiến thức thông qua những tài liệu của thư việntrực tuyến
● Đối với giáo viên: có thể sử dụng hình ảnh, âm thanh và video để truyền đạtnội dung học tập đến người học thêm hấp dẫn và sinh động hơn
Trang 33● Đối với học sinh: Tiết kiệm được nhiều chi phí học tập cũng như chi phí đi lại
và địa điểm Ngoài ra, hình thức trả học phí cũng đơn giản thông qua tính
năng thanh toán online.
❖ Nhược điểm:
● Hiệu quả và chất lượng học tập không cao
● Học sinh không có nhiều cơ hội học hỏi trao đổi thông tin với bạn bè
● Muốn học sinh học tập tốt thì học online phải có đội ngũ giáo viên hướng dẫn
rõ ràng
● Môi trường học không kích thích được sự chủ động và sáng tạo của học sinh
● Học trực tuyến qua mạng làm giảm khả năng truyền đạt với lòng say mê
nhiệt huyết của giáo viên đến học sinh
Kết luận chung cho 3 mô hình:
● Ưu điểm của mô hình học trực tuyến là khả năng giảm thiểu chi phí đi lại, tiết kiệm được thời gian và không gian học tập Hơn thế nữa, việc xây dựng nền tảng không
tốn nhiều chi phí bằng việc xây dựng một trường học và cũng không cần giấy phépxây dựng phức tạp
Trang 34● Tối ưu nội dung: Các cá nhân hay tổ chức đều có thể thiết kế nền tảng học qua
mạng nhưng cấp độ đào tạo lại khác nhau giúp học viên dễ dàng lựa chọn Đồng thời
nội dung truyền đạt phải tối ưu và nhất quán
● Hệ thống hóa: Những hệ thống học tập trực tuyến cho phép học viên dễ dàng tham gia khóa học, và có thể theo dõi kết quả cũng như tiến độ học tập Với khả năng thiết
kế website quản lý học sinh sinh viên, giáo viên có thể biết được những học viên
nào tham gia khóa học, khi nào họ hoàn tất quá trình học tập và đưa ra giải pháp thựchiện giúp họ phát triển trong quá trình học
● Nhược điểm quan trọng của hình thức học online đó chính là sự tương tác của học
viên với giảng viên một cách trực tiếp Tuy một số phần mềm có thể cung cấp tính
năng trao đổi trực tiếp giữa giảng viên và học viên thông qua các ứng dụng tròchuyện trực tuyến nhưng cũng không đầy đủ và sinh động bằng việc trao đổi nhưhình thức đào tạo truyền thống
1.3 Hướng giải quyết
Nhóm đã quyết định chọn mô hình thứ 2 và hướng đến xây dựng một trang web hỗ trợ họctrực tuyến và quản lý các khóa học cho học viên và đăng các bài giảng cho giảng viên Ứngdụng sẽ đem lại các tính năng giúp cho học viên và giảng viên được tương tác với nhautrong quá trình học tập trực tuyến xử lý nhanh chóng các nhu cầu như: xem các video bàigiảng, tương tác với giảng viên Toàn bộ hệ thống dữ liệu được cập nhật và đồng bộ trên hệthống phần mềm Nhờ đó, việc tìm kiếm và xử lý thông tin dữ liệu được thực hiện nhanhchóng và hiệu quả
2 Tìm hiểu và phân tích kiến trúc các nền tảng học trực tuyến
2.1 Giới thiệu
Internet và những tiến bộ trong Công nghệ Thông tin và Truyền thông đã thay đổi môitrường giáo dục, cả trong đào tạo truyền thống và đào tạo từ xa Kết quả là đã có sự thayđổi trong cách thiết kế, phát triển và chuyển tải nội dung giáo dục đến người học Đối mặtvới những chuyển đổi này, trong những năm gần đây, nhu cầu ngày càng tăng về các môitrường học tập mở, có thể mở rộng và linh hoạt
Trang 35Nền tảng học trực tuyến là một hình thức của học tập trong đó giáo viên / giảng viên vàngười học được ngăn cách bởi không gian hay thời gian qua sử dụng công nghệ trực tuyến.Với trang web dựa trên học tập, nó có thể cho các học viên / giáo viên để học hỏi từ bất cứnơi nào, bất cứ lúc nào, với tốc độ của họ Học tập dựa trên web mang lại khả năng tiếp cận
ở mức độ chưa từng có đối với các khóa học ở vùng sâu vùng xa, các khóa học bị cấm bởigiới hạn ngân sách, các khóa học được cập nhật kiến thức mới được khám phá gần đây,những giảng viên có trình độ và hướng dẫn bất cứ lúc nào Môi trường học trực tuyến cónhững đặc điểm cụ thể liên quan đến các vấn đề về sư phạm, kỹ thuật và quản lý Quantrọng hơn, môi trường học tập nên tích hợp với các giải pháp ứng dụng doanh nghiệp khácđược sử dụng bởi nguồn nhân lực và kế toán, cho phép ban quản lý đo lường tác động, hiệuquả và chi phí tổng thể của các sáng kiến đào tạo
Nền tảng học trực tuyến cũng cần các cơ chế được cá nhân hóa để giúp người học học tậphiệu quả hơn Để cung cấp chiến lược học tập được cá nhân hóa là cần thiết cho hầu hết các
hệ thống học trực tuyến hiện nay Và hệ thống phải xem xét sở thích, sở thích và hành viduyệt của người học / người dùng khi phân tích hành vi của người học / người dùng đối vớicác dịch vụ được cá nhân hóa Có nghĩa là, khả năng của các cá nhân có thể dựa trên cáclĩnh vực và môn học chính Do đó, việc xem xét khả năng của người học có thể thúc đẩyhiệu suất học tập được cá nhân hóa
Với sự gia tăng về số lượng sinh viên, tăng trưởng nhanh chóng của nội dung giáo dục vàthay đổi cơ sở hạ tầng CNTT, các cơ sở giáo dục đang phải đối mặt với một sự gia tăngđáng kể trong chi phí và giảm ngân sách mà dẫn đến sự cần thiết của việc tìm kiếm một sốthay thế cho các giải pháp e-learning của họ Ngoài ra, hệ thống học trực tuyến hiện tại làkhông thể mở rộng và không dẫn đến việc sử dụng hiệu quả các nguồn lực Để đối phó với
sự gia tăng áp lực này và để tăng hiệu quả và tính khả dụng của hệ thống học tập điện tửhiện tại , các học viện giáo dục cần có nhiều kiến trúc / phương pháp tiếp cận có thể mởrộng hơn Nhiều cơ sở giáo dục đại học và các tổ chức doanh nghiệp đang áp dụng nềntảng học trực tuyến như một phương tiện cung cấp việc học và tăng hiệu quả đào tạo Từ
Trang 36quan điểm của hành vi tiêu dùng và từ tổ chức và quan điểm quản lý, nhiều nhà nghiên cứucủa phần giáo dục và giáo viên muốn áp dụng kỹ thuật ảo hóa để chương trình giáo dục của
họ và tìm hiểu hệ thống xử lý
2.1.1 Kiến trúc của nền tảng học trực tuyến và các thành phần chính
Nền tảng học trực tuyến nên bao gồm bốn thành phần giải pháp chính, được kết nối chặtchẽ với nhau Họ đang:
● Một ứng dụng dựa trên web sẽ chứa hầu hết các tính năng để đơn giản hóa quá trìnhphát triển của thị trường giáo dục
● Xử lý video để chuyển mã, tải lên và phát trực tuyến video giáo dục theo yêu cầu
● Xử lý dữ liệu sẽ nhận các sự kiện từ các phần khác của dịch vụ eLearning tùy chỉnh
và nhập chúng
● Bộ nhớ đám mây để lưu trữ các tệp video giáo dục gốc được tải lên theo yêu cầu
Khi phát triển nền tảng học trực tuyến, có thể chọn kiến trúc trong số các tùy chọn sau:
● Xây dựng một nền tảng học trực tuyến nguyên khối nếu đang cân nhắc phát triểnmột phần mềm nền tảng học tập với số lượng nội dung, người dùng hạn chế, v.v.Nói cách khác, bạn sẽ không mở rộng quy mô đáng kể trong tương lai
Trang 37● Tách các nền tảng học trực tuyến backend thành microservices là một lựa chọn tuyệtvời nếu bạn định tạo một nền tảng học tập trực tuyến, nơi các tổ chức giáo dục bênthứ ba sẽ đăng và bán các khóa học trực tuyến của họ.
2.1.2 Giải pháp cho vấn đề
Nó cần một cách tiếp cận có thể mở rộng hơn với ảo hóa để cung cấp khả năng hiển thịnăng động và kiểm soát việc quản lý dịch vụ để đáp ứng nhu cầu ngày càng tăng nhanhchóng đối với các dịch vụ học trực tuyến
Việc áp dụng Kiến trúc hướng dịch vụ (SOA) vào nền tảng học trực tuyến mang lại khảnăng học tập thích ứng tốt hơn Ngoài ra, điện toán đám mây cung cấp nền tảng học trựctuyến là tính khả dụng liên tục, tăng hiệu quả và bảo mật cao hơn Nó làm tăng dung lượnglưu trữ mà nó dành cho các tổ chức giáo dục Hiệu quả tiềm năng của việc sử dụng điệntoán đám mây trong giáo dục đại học đã được nhiều trường đại học công nhận
Cung cấp kiến trúc tham chiếu sử dụng Kiến trúc điện toán đám mây và máy tính hướngdịch vụ trong nền tảng học trực tuyến có thể làm tăng khả năng mở rộng, tính linh hoạt và
Trang 38tính khả dụng hơn của các nền tảng học trực tuyến Do đó, đề xuất cung cấp kiến trúc thamchiếu sử dụng Kiến trúc Điện toán Đám mây Hướng Dịch vụ cho nền tảng học trực tuyến
để phát triển các hệ thống / kiến trúc học tập
Kiến trúc có thể được nhân rộng, cả chiều ngang và chiều dọc, và các tổ chức giáo dụcđược tính theo số lượng của các máy chủ sử dụng mà phụ thuộc vào số lượng của sinh viênhoặc học viên
Kiến trúc đề xuất giải quyết những hạn chế của nền tảng học trực tuyến dựa trên SOA vàtruyền thống liên quan đến khả năng tương tác, khả năng tái sử dụng, tính mở, tính linhhoạt và các công cụ hạn chế cho học tập cộng tác và xã hội Nó trình bày một môi trườnghọc tập dựa trên Web hợp tác và thích ứng được tích hợp
2.2 Công nghệ nền tảng
Nền tảng học trực tuyến là một thuật ngữ dùng để chỉ tất cả các hình thức giảng dạy vàhọc tập duy trì bằng phương pháp điện tử Nền tảng học trực tuyến là học tập diễn ra trênInternet cho phép chuyển giao các kỹ năng và kiến thức đến các vị trí địa lý khác nhau
Nó sử dụng công nghệ dựa trên Internet như một phương tiện giao tiếp chính giữa giáoviên và học sinh Học tập điện tử bao gồm và rộng rãi đồng nghĩa với học tập Đa phươngtiện, Học tập nâng cao công nghệ (TEL), hướng dẫn dựa trên máy tính (CBI), đào tạo dựatrên máy tính (CBT), hướng dẫn có sự hỗ trợ của máy tính hoặc hướng dẫn có sự hỗ trợcủa máy tính (CAI ), đào tạo dựa trên internet (IBT), đào tạo dựa trên web (WBT), giáodục trực tuyến, giáo dục ảo, môi trường học tập ảo (VLE), m-learning và hợp tác giáo dục
kỹ thuật số Những tên thay thế này nhấn mạnh một khía cạnh, thành phần hoặc phươngthức phân phối cụ thể
Nền tảng học trực tuyến bao gồm nhiều loại phương tiện truyền tải văn bản, âm thanh,hình ảnh, hoạt ảnh và video trực tuyến , đồng thời bao gồm các ứng dụng và quy trìnhcông nghệ như băng âm thanh hoặc video, truyền hình vệ tinh, CD-ROM và cả học tậpdựa trên máy tính như mạng nội bộ / mạng ngoại vi cục bộ và học tập dựa trên web Các
hệ thống thông tin và truyền thông , cho dù tồn tại độc lập hay dựa trên mạng cục bộ hoặcInternet trong học tập được nối mạng, đều có nhiều quy trình học tập điện tử Học tậpđiện tử có thể diễn ra trong hoặc ngoài lớp học Nó có thể là học tập theo nhịp độ, khôngđồng bộ hoặc có thể được hướng dẫn bởi người hướng dẫn, học tập đồng bộ Nền tảng
Trang 39học trực tuyến là phù hợp với đào tạo từ xa và học tập linh hoạt, nhưng nó cũng có thểđược sử dụng trong kết hợp với giảng dạy mặt đối mặt, trong trường hợp này học tập tổnghợp hạn thường được sử dụng Hiện nay có rất nhiều nền tảng học trực tuyến hệ thống cósẵn với mở nguồn và bản quyền thương mại Các hệ thống học tập điện tử phổ biến nhất
là Blackboard, Moodle, Sakai và Adobe e-learning
2.2.1 Hệ thống học tập được cá nhân hóa
Các nền tảng học trực tuyến được cá nhân hóa có tiềm năng nâng cao giáo dục từ xa lênmột tầm cao mới Loại công cụ này sử dụng một loạt các phương pháp tiếp cận để điềuchỉnh cho phù hợp với kiến thức, sở thích và sở thích của từng học sinh để mang lại mức
độ hỗ trợ vượt trội Do đó, chiến lược học tập cá nhân hóa là cần thiết cho hầu hết các nềntảng học trực tuyến hiện nay Ngày nay, hầu hết các hệ thống khuyến nghị đều xem xét sởthích, sở thích và hành vi duyệt web của người học / người dùng khi phân tích hành vi củangười học / người dùng đối với các dịch vụ được cá nhân hóa Việc cá nhân hóa nên xemxét các cấp độ khác nhau của người học / người dùng kiến thức, đặc biệt là liên quan đếnhọc tập Do đó, việc xem xét khả năng của người học có thể thúc đẩy hiệu suất học tậpđược cá nhân hóa
Ngoài ra, hầu hết các hệ thống học tập điện tử đều thiếu sự hiện diện và kiểm soát củangười hướng dẫn đối với quá trình học tập để hỗ trợ và giúp đỡ người học trong nhữngmôi trường này (còn được gọi là sự tiếp xúc của con người) Do đó, mô hình hóa hành vicủa người hướng dẫn và cung cấp phản hồi tức thì là một nhiệm vụ quan trọng trongnhững môi trường này
Trang 402.2.2 Công nghệ dịch vụ Web
Các đối tượng học tập khác nhau có thể được công nhận lẫn nhau để cho phép trao đổigiữa các hệ thống học tập khác nhau hỗ trợ các tiêu chuẩn này Tuy nhiên, nền tảng họctrực tuyến gặp phải một số vấn đề Nền tảng học trực tuyến nguồn được luôn phân bốxung quanh một số địa điểm, làm cho nó khó khăn để tích hợp nhiều nền tảng học trựctuyến nguồn lực
● Hầu hết các thành phần của nền tảng học trực tuyến đều phụ thuộc vào hệthống và không thể kết hợp với các hệ thống khác
● Hầu hết các hệ thống nền tảng học trực tuyến đều yêu cầu người học sử dụngcác thiết bị khách cụ thể để học
● Người học vẫn không thể học nếu không bị giới hạn về thời gian và địa điểm Dịch vụ web là cách triển khai tích cực nhất và được chấp nhận rộng rãi của Kiến trúchướng dịch vụ (SOA) Công nghệ Web Services đang được liên tục được chuẩn hóa đểđảm bảo khả năng tương tác và an ninh Dịch vụ Web thực hiện các cuộc gọi đến cácphương thức web được hiển thị như một dịch vụ bằng cách gửi và nhận các tin nhắnSOAP Web Services được thường xuyên được coi là một trong những hình thức tiên tiếnnhất của SOA thực hiện và thường là một trong những trưởng thành hầu hết là tốt
2.2.3 Kiến trúc hướng dịch vụ
Các Service-Oriented Computing (SOC) mô hình liên quan đến các thiết lập của các kháiniệm, nguyên tắc và phương pháp mà đại diện cho máy tính trong SOA trong các ứng dụngphần mềm được xây dựng dựa trên các dịch vụ thành phần độc lập với các giao diện tiêuchuẩn SOA khiến chúng ta hiểu nó như một kiến trúc định hướng xung quanh các dịch vụ
Dịch vụ là các phần mềm rời rạc, được triển khai bằng cách sử dụng các tiêu chuẩn và đặc
điểm giao diện được xác định rõ ràng Một dịch vụ, sau khi được phát triển và thử nghiệm
sẽ được gửi đến một thư mục hoặc sổ đăng ký để nó có sẵn cho các nhà phát triển khác Sổđăng ký cũng chứa một kho lưu trữ, chứa các chi tiết của dịch vụ đã xuất bản, chẳng hạnnhư cách xây dựng giao diện, các mức dịch vụ mong đợi là gì, quyền duy trì , v.v MộtSOA điển hình sẽ giống như trong Hình 1