Kiến thức về Docker
Giới thiệu sơ lược về Docker
Docker là nền tảng lý tưởng cho các nhà phát triển và quản trị hệ thống, cho phép phát triển và triển khai ứng dụng qua công nghệ container Nó tạo ra các môi trường độc lập và tách biệt, giúp khởi chạy và phát triển ứng dụng một cách hiệu quả Khi cần triển khai ứng dụng lên bất kỳ máy chủ nào, chỉ cần chạy container của Docker, ứng dụng sẽ hoạt động ngay lập tức.
Docker được thành lập bởi ông Solomon Hykes and Sebastien Pahl Nó là sản phẩm của nhóm startup Y Combinator phát triển và được công bố năng 2011
Lúc đầu Docker project là dự án nội bộ của công ty dotCloud, platform-as-a- service ở Pháp
Lần đầu tiên docker được công bố dưới dạng open-source là tháng 3 năm 2013
Từ phiên bản 0.9 thì docker đã dùng những component riêng được biết bằng Go ( Golang ) để thay thế cho việc dùng LXC(linux system) làm môi trường thực thi
Vào năm 2017 thì docker đã tạo ra Moby project để phát triển vấn đề đa nhân thay cho việc dùng docker engine
Tháng 9-2013 Red hat và docker công bố hợp tác xoay quanh Fedora, RHEL, OpenShift
Tháng 10-2014 công bố tích hợp Docker engine vào windows server và hỗ trợ native cho docker client trong windows
In November 2014, Docker announced a partnership with Stratoscale, a company specializing in data center operating systems, with VMware being one of its products Additionally, Docker containers gained support for Amazon's EC2.
Tháng 12-2014, IBM công bố hợp tác với Docker và tích hợp docker vào Cloud của IBM
Tháng 6-2015, Docker và 1 số công ty như: CoreOS, Google, Microsoft,
AWS, đã công bố liên kết với nhau để cung cấp giải pháp tiêu chuẩn của hệ điều hành cho software containers
Tháng 5-2016 nghiên cứu cho thấy những tổ chức chính tham gia đónng góp cho docker là: The Docker Teamm Cisco, Google, Huawei,IBM, Microsoft and Red Hat
Tháng 6-2016, Microsoft công bố docker có thể sử dụng trên Windown 10
Tháng 5-2019 WSL2 của windows có thể hỗ trợ chạy Docker.
Kiến trúc tổng thể
Docker consists of two main components: Docker Engine and Docker Hub Docker Engine is a virtualization solution based on container technology, while Docker Hub serves as a Software-as-a-Service platform for sharing images.
Docker Engine là ứng dụng dựa trên kiến trúc client-server với các thành phần chính:
Docker daemon đóng vai trò như một server Docker daemon có thể build, run và distribute docker container
Một REST API đóng vai trò như interface để giao tiếp với docker daemon
Một command line interface (CLI) đóng vai trò như một client
Docker client giao tiếp với Docker daemon thông qua REST API, kết nối qua UNIX socket hoặc giao tiếp mạng Phương thức này cho phép Docker Client và Docker Daemon hoạt động trên cùng một hệ thống hoặc khác hệ thống.
Docker Hub là nền tảng lưu trữ các hình ảnh (image) cả công khai và riêng tư, cho phép người dùng chia sẻ các hình ảnh tùy chỉnh Ngoài ra, người dùng có thể dễ dàng tìm kiếm và tải về các hình ảnh thông qua Docker Client.
Hình ảnh (image) là một gói chứa tất cả thông tin, thư viện và framework cần thiết để tạo ra một container Thông thường, các hình ảnh này được xây dựng dựa trên các hình ảnh cha (base image) đã được cung cấp sẵn bởi Docker.
Container là một công nghệ ảo hóa chia sẻ hệ điều hành với máy chủ, khác với VMware, nơi giả lập phần cứng Điều này giúp tối ưu hóa tài nguyên và giảm thiểu độ trễ khi triển khai ứng dụng.
Các container trong Docker hoạt động độc lập với nhau và với hệ thống host, cho phép người dùng dễ dàng thêm, xóa hoặc sửa đổi container Người dùng cũng có thể kết nối các container với mạng và tạo hình ảnh mới dựa trên trạng thái hiện tại của container mà không làm ảnh hưởng đến hệ thống hoặc các container khác.
Hình 1.3: So sánh kiến trúc của container và Virtual Machines
Daemon: là một loại chương trình trên các hệ điều hành Like-Unix hoạt động ẩn mà không cần sự kiểm soát bởi user
A Docker Registry serves as a private storage solution for Docker Images, allowing users to push images to the registry and pull them as needed You can utilize your own registry or opt for those provided by cloud service providers such as AWS, Google Cloud, or Microsoft Azure.
Cách thức hoạt động
Docker sử dụng kiến trúc phân lớp để mỗi container hoạt động như một process độc lập và tiết kiệm không gian Các layer này, hay còn gọi là layer trung gian, được tạo ra từ các câu lệnh trong Dockerfile trong quá trình xây dựng một docker image.
Mỗi câu lệnh trong Docker tạo ra một lớp (layer) chồng lên hình ảnh container, và các lớp này sẽ được hash để lưu vào bộ nhớ cache Điều này giúp tối ưu thời gian xây dựng cho những lớp không thay đổi giữa các lần build, cho phép người dùng không cần phải rebuild và sao chép các tệp ở bước COPY nếu câu lệnh không thay đổi.
Sau khi hoàn tất việc xây dựng các câu lệnh, Docker sẽ tạo ra một lớp mới Người dùng có thể truy cập lớp này thông qua câu lệnh docker exec –it Bằng cách này, người dùng có khả năng thay đổi hình ảnh và lưu lại những thay đổi đó bằng câu lệnh docker commit.
Hình 1.4: Kiến trúc phân lớp của container
Docker mang lại lợi ích gì? Cho ai? Trong hoàn cảnh nào?
1.4.1 Lợi ích và hoàn cảnh sử dụng
Sử dụng Docker giúp tăng tốc độ vận chuyển mã, chuẩn hóa hoạt động của ứng dụng, di chuyển mã một cách mượt mà và tiết kiệm chi phí bằng cách tối ưu hóa khả năng sử dụng tài nguyên.
Docker mang đến một đối tượng duy nhất có khả năng hoạt động ổn định trên mọi nền tảng Cú pháp đơn giản và dễ hiểu của Docker cho phép người dùng kiểm soát toàn bộ quá trình triển khai ứng dụng.
Thứ tư là dễ dàng automate (tự động hóa) việc quản lý các docker container thông qua Kubernetes hoặc Docker Swarm
Container Docker giúp tối ưu hóa việc chạy nhiều mã trên mỗi máy chủ, nâng cao khả năng tận dụng tài nguyên và tiết kiệm chi phí, đồng thời hỗ trợ khả năng mở rộng cho dự án.
Business Analysist: thường dùng docker để chạy môi trường demo cho khách hàng
QA & QC: thường dùng docker để chạy môi trường test để kiểm thử sản phầm
Software Architect dùng để kiểm thử những công nghệ và tính ổn định của các công nghệ trên nhiều nền tảng khác.
Một số công cụ phổ biến
Docker Compose là một công cụ được dùng để quản lý và chạy các Docker
Container Docker Compose cho phép ta cấu hình các container trong một file YAML duy nhất và chạy tất cả các container chỉ với một câu lệnh
Docker Swarm là một công cụ quản lý giúp kết hợp nhiều Docker Engine thành một Docker Engine "ảo" Công cụ này cho phép người dùng dễ dàng quản lý và triển khai các ứng dụng container hóa trong một cụm, nâng cao tính linh hoạt và khả năng mở rộng của hệ thống.
14 công cụ nào giao tiếp với Docker Engine thì cũng có thể giao tiếp với Docker Swarm như bình thường
So sánh Docker với các công nghệ tương tự
Mô phỏng trải nghiệm vận hành
Máy ảo nhưng về vùng chứa và làm như vậy mà không tốn chi phí mô phỏng tài nguyên phần cứng Mặc dù daemon LXD yêu cầu nhân
Linux, nó có thể được cấu hình để truy cập bằng máy khách
Một phần mở rộng của nhân Linux cung cấp công cụ ảo hóa cho người dùng, sử dụng Môi trường ảo để lưu trữ các hệ thống Khách Điều này có nghĩa là nó sử dụng vùng chứa cho toàn bộ hệ điều hành thay vì chỉ cho các ứng dụng và quy trình riêng lẻ.
Sử dụng nhân được vá để cung cấp tính năng ảo hóa cấp hệ điều hành, mỗi máy chủ riêng ảo hoạt động như một quy trình riêng biệt trên cùng một hệ thống máy chủ lưu trữ, mang lại hiệu quả cao mà không cần mô phỏng Tuy nhiên, phương pháp này đã lâu không có bản cập nhật, với lần phát hành cuối cùng vào năm 2007.
Docker Engine trên Windows Server 2016 cho phép truy cập trực tiếp vào nhân Windows, nhưng điều này khiến cho các vùng chứa Docker gốc không thể hoạt động trên Windows Container Thay vào đó, định dạng vùng chứa WSC (Windows Server Container) sẽ được áp dụng.
Quyền truy cập phần cứng trần cho
VPS, nhiều bản phân phối Linux trên cùng một máy chủ
CI / CD và DevOps, Vùng chứa và dữ liệu lớn, Bộ Ứng dụng Người dùng Biệt lập Lưu trữ, Hợp nhất máy chủ
Nhiều VPS lưu trữ và quản trị, và hỗ trợ Legacy
Khả năng tích hợp dễ dễ trung bình
Các công ty sử dụng
FastVPS, Parallels, Pixar Animation Studios, Yandex
DreamHost, Amoebasoft, OpenHosting Inc., Lycos, Pháp, Mosaix Communications, Inc
Áp dụng Docker
Setup Dockerfile
FROM node:12.13-alpine As development WORKDIR /usr/src/app
RUN npm install –onlyelopment COPY
RUN npm run build FROM node:12.13-alpine as production
ARG NODE_ENV=production ENV NODE_ENV=${NODE_ENV}
WORKDIR /usr/src/app COPY package*.json /
RUN npm install –only=production COPY
COPY –fromelopment /usr/src/app/dist /distCMD [“node”, “dist/main”]
FROM — chỉ định image gốc: python, unbutu, alpine…
LABEL — cung cấp metadata cho image Có thể sử dụng để add thông tin maintainer Để xem các label của images, dùng lệnh docker inspect
ENV — thiết lập một biến môi trường
RUN — Có thể tạo một lệnh khi build image Được sử dụng để cài đặt các package vào container
COPY — Sao chép các file và thư mục vào container
ADD — Sao chép các file và thư mục vào container
CMD — Cung cấp một lệnh và đối số cho container thực thi Các tham số có thể được ghi đè và chỉ có một CMD
WORKDIR — Thiết lập thư mục đang làm việc cho các chỉ thị khác như: RUN, CMD, ENTRYPOINT, COPY, ADD,…
ARG — Định nghĩa giá trị biến được dùng trong lúc build image
ENTRYPOINT — cung cấp lệnh và đối số cho một container thực thi
EXPOSE — khai báo port lắng nghe của image
VOLUME — tạo một điểm gắn thư mục để truy cập và lưu trữ data
Bước 2: docker build –t
Bước 3: docker run –p 8080:8080 app-name
Bước 1: docker build –t
Hình 2.1: Build dockerfile cho VueJs
Bước 2: docker run -it -p 8080:8080 -v /app/node_modules rm test:latest
Setup Docker-Compose
Cơ bản quy trình dùng docker compose gồm ba bước:
1 Xác định môi trường ứng dụng của bạn bằng Dockerfile để nó có thể được lưu trữ ở mọi nơi
2 Xác định các dịch vụ tạo nên ứng dụng của bạn trong docker-compose.yml để chúng có thể chạy cùng nhau trong một môi trường biệt lập
3 Chạy docker-compose up và bắt đầu chạy toàn bộ ứng dụng của bạn
2.2.2 Docker-compose file version: "3.7" services: my_service: container_name: my_service build: /back_end volumes:
- db_service_name=my_service_db
- db_retry_time000 my_service_db: container_name: my_service_db image: mongo volumes:
In Docker Compose, the 'services' section is used to declare the services included in the configuration The 'build' directive specifies the path to the service and can include the location of the Dockerfile To ensure automatic recovery from database issues, the 'restart' policy is set to 'always.' The 'image' field indicates the name of the image during the build process, while 'container_name' allows you to define a specific name for the container being built Additionally, the 'ports' setting maps container ports to local machine ports for effective communication.
20 environment: tương tự như file env để setup môi trường links: để chỉ ra liên kết của các image với nhau volumes: là nơi chứa data
Phát triển Website học tiếng anh
Mô tả ứng dụng
Website đóng vai trò là cầu nối giữa giáo viên và học viên, cho phép người học dễ dàng tìm kiếm và đăng ký khóa học phù hợp với trình độ của mình Học viên có thể theo dõi bài học qua video hoặc tham gia livestream giảng dạy trực tiếp nếu sử dụng gói tài khoản cao cấp hơn.
Sơ đồ Use case
Hình 3.1: Sơ đồ Use case tổng quát
Hình 3.2: Đặc tả Use case quản lý học viên
Use case name Quản lý học viên
Description Là admin, tôi muốn Quản lý các thông tin học viên, thực hiện chuyển đổi các loại tài khoản
Trigger Khi có nhu cầu chỉnh sửa thông tin học viên
Khi muốn thống kê số lượng học viên để báo cáo cuối năm
Pre-Condition(s) Admin đã đăng nhập vào tài khoản admin
Đối với chức năng thăng cấp, tài khoản, học viện phải có tài khoản trong cơ sở dữ liệu
Post-Condition(s) Hệ thống ghi nhận lại hoạt động
Admin có thể chỉnh sửa thông tin học viên
Admin có thể xuất báo cáo về số lượng học viên
Basic Flow 1 Admin truy cập vào phần quản lý học viên
2 Admin chọn lệnh tùy theo nhu cầu
3 Admin xác nhận lại thông tin đã chỉnh sửa
4 Hệ thống ghi lại hoạt động
Alternative Flow 2a Admin chọn lệnh thêm, xóa, sửa thông tin học viên
2a.1 Admin tiến hành chỉnh sửa thông tin học viên Use case tiếp tục bước 3
Admin thực hiện quy trình thăng cấp tài khoản bằng cách xác nhận học viên đã thanh toán, sau đó nhập thời hạn hiệu lực cho tài khoản Student Pro và cuối cùng chuyển đổi tài khoản từ Student Free sang Student Pro.
Use case tiếp tục bước 3 2b.4 Hệ thống gửi mail thông báo đến người dùng
Use case tiếp tục bước 4
2c Admin chọn lệnh giáng cấp tài khoản 2c.1 Admin chuyển loại tài khoản từ Student Pro thành Student Free
Use case tiếp tục bước 3 2c.2 Hệ thống gửi mail thông báo đến người dùng Use case tiếp tục bước 4
2d Admin chọn lệnh thống kê 2d.1 Hệ thống xuất ra bản báo cáo theo định dạng cho trước Use case tiếp tục bước 4
Exception Flow 1 Admin dùng lệnh quay lại
2b.1 Học viên chưa thanh toán
Admin gửi email thông báo nhắc nhở
3 Admin dùng lệnh quay lại
Use case quay lại bước 2
Business Rules BR1: Khi học viên Student Pro hết thời hạn thì hệ thống tự chuyển về Student Free theo quy trình trên
Hình 3.3: Đặc tả Use case quản lý khóa học
Use case name Quản lý khóa học-admin
Description Là Admin, tôi muốn quản lý các thông tin liên quan đến khóa học
Trigger Khi có yêu cầu tạo khóa học từ speaker hoặc nhu cầu xóa khóa học
Pre-Condition(s) Người dùng đăng nhập vào tài khoản admin
Trong trường hợp Duyệt yêu cầu tạo khóa học, phải có phiếu yêu cầu tạo khóa học trong cơ sở dữ liệu
Post-Condition(s) Khóa học có thể được tạo ra hoặc bị xóa
Hệ thống ghi lại hoạt động
Basic Flow 1 Admin truy cập vào phần quản lý khóa học
2 Admin chọn lệnh tùy theo nhu cầu
4 Hệ thống ghi lại hoạt động
Alternative Flow 2a Admin chọn lệnh Duyệt yêu cầu khóa học
2a.1 Admin điền thông tin khóa học mới
Use case thực hiện bước 3
2a.2 Hệ thống thêm khóa học vào cơ sở dữ liệu
Use case thực hiện bước 4
2b Admin chọn lệnh disable khóa học
Use case tiếp tục bước 3
Exception Flow 1 Admin dùng lệnh quay lại
2a Admin từ chối yêu cầu khóa học Hệ thống gửi thông báo đến speaker tạo yêu cầu khóa học
3 Admin dùng lệnh quay lại
Use case quay lại bước 2
3.2.2.3 Quản lý tài khoản người dùng
Hình 3.4: Đặc tả Use case quản lý tài khoản người dùng
Use case name Quản lý tài khoản người dùng
Description Là admin, tôi muốn quản lý thông tin tài khoản người dùng
Trigger Khi có yêu cầu chỉnh sửa tài khoản người dùng
Pre-Condition(s) Người dùng đăng nhập vào tài khoản admin
Có tài khoản người dùng trong cơ sở dữ liệu
Post-Condition(s) Tài khoản người dùng được chỉnh sửa
Hệ thống ghi lại hoạt động
Basic Flow 1 Admin truy cập vào phần quản lý người dùng
2 Admin chọn lệnh tùy theo nhu cầu
4 Hệ thống ghi lại hoạt động
Alternative Flow 2a Admin chọn lệnh Thay đổi role
2a.1 Admin chuyển speaker thành user
Use case thực hiện bước 3
2a.2 Admin duyệt phiếu yêu cầu trở thành speaker 2a.3 Admin chuyển user thành speaker
2a.4 Hệ thống gửi thông báo đến user
Use case thực hiện bước 3
2b Admin chọn lệnh Khóa tài khoản
2b.1 Admin chọn tài khoản muốn khóa
Use case thực hiện bước 3
2b.2 Hệ thống sẽ chặn người dùng đăng nhập vào tài khoản user này
2b.3 Hệ thống gửi thông báo đến cho người dùng bị chặn
2c Admin chọn lệnh Bỏ khóa tài khoản
2c.1 Admin chọn tài khoản muốn bỏ khóa
Use case thực hiện bước 3
2c.2 Hệ thống sẽ ngưng chặn người dùng đăng nhập vào tài khoản user này
2c.3 Hệ thống gửi thông báo đến cho người dùng bị chặn
Exception Flow 1 Admin dùng lệnh quay lại
3 Admin dùng lệnh quay lại
Use case quay lại bước 2
Hình 3.5: Đặc tả Use case quản lý speaker
Use case name Quản lý Speaker
Description Là admin, tôi muốn quản lý các thông tin liên quan đến speaker
Trigger Khi Admin có nhu cầu thay đổi thông tin Speaker
Pre-Condition(s) Người dùng đăng nhập vào tài khoản admin
Post-Condition(s) Thông tin speaker được chỉnh sửa thành công
Hệ thống ghi lại hoạt động
Basic Flow 1 Admin truy cập vào phần quản lý người dùng
2 Admin chọn lệnh tùy theo nhu cầu
4 Hệ thống ghi lại hoạt động
Alternative Flow 2a Admin chọn lệnh thêm, xóa, sửa thông tin học viên
2a.1 Admin tiến hành chỉnh sửa thông tin học viên Use case tiếp tục bước 3
2b Admin chọn lệnh thống kê 2d.1 Hệ thống xuất ra bản báo cáo theo định dạng cho trước
Use case tiếp tục bước 4
Exception Flow 1 Admin dùng lệnh quay lại
3 Admin dùng lệnh quay lại
Use case quay lại bước 2
Hình 3.6: Đặc tả Use case tìm kiếm khóa học
Use case name Tìm kiếm khóa học
Description Là User, tôi muốn tìm kiếm các khóa học để tìm hiểu thông tin về khóa học mà tôi muốn
Là User, tôi muốn tìm kiếm các khóa học liên quan đến từ khóa mà tôi muốn
Trigger Khi người dùng muốn tìm kiếm về 1 khóa học nào đó
Pre-Condition(s) Người dùng đã đăng nhập vào tài khoản (Admin, Student
Post-Condition(s) Hệ thống thể hiện các thông tin liên quan đến khóa học dựa vào từ khóa người dùng nhập vào hoặc qua lệnh tìm kiếm nâng cao
Basic Flow 1 Người dùng nhấn vào tìm kiếm khóa học
2 Người dùng thực hiện tìm kiếm
3 Người dùng chọn 1 khóa học
4 Người dùng chọn lệnh tùy theo nhu cầu
5 Hệ thống ghi lại thông tin hoạt động
Alternative Flow 2a Người dùng chọn tìm kiếm nâng cao
2a.1 Người dùng chọn sử dụng 1 hoặc nhiều các tiêu chí đã được định trước
2a.2 Hệ thống hiện danh sách các khóa học theo tiêu chí mà người dùng chọn
Use case tiếp tục thực hiện bước 3
2b Người dùng chọn tìm kiếm theo từ khóa
2b.1 Người dùng nhập vào từ khóa 2b.2 Hệ thống hiện danh sách các khóa học theo từ khóa mà người dùng nhập
Use case tiếp tục thực hiện bước 3
4a Người dùng chọn lệnh đăng ký khóa học
4a.1 Hệ thống lưu thông tin về yêu cầu đăng ký khóa học người dùng
Use case tiếp tục thực hiện bước 5
4b Người dùng chọn xem thông tin khóa học
4b.1 Hệ thống thể hiện thông tin về khóa học mà người dùng chọn
Exception Flow 4b.1 Nếu người dùng chọn đăng ký khóa học
Use case thực hiện bước 4a
1 + 2 + 3 + 4: Nếu người dùng lệnh hủy hoặc quay lại
Business Rules Các tiêu chí trong tìm kiếm nâng cao sẽ được nhập bởi chủ hệ thống
Hình 3.7: Đặc tả Use case quản lý khóa học cho User
Use case name Quản lý khóa học - User
Description Là User, tôi muốn quản lý thông tin các khóa học mà mình đã đăng ký
Trigger Người dùng muốn xem các thông tin khóa học mà người dùng đã đăng ký
Pre-Condition(s) Người dùng đã đăng nhập thành công
Các khóa học mà người dùng muốn xem thông tin phải được đăng ký học bởi người dùng
Post-Condition(s) Hệ thống thể hiện các thông tin liên quan đến khóa học
Hệ thống ghi nhận hoạt động
Basic Flow 1 Người dùng nhấn vào quản lý khóa học
2 Hệ thống sẽ hiện các tin tức về video bài học mới nhất cho người dùng
3 Người dùng chọn các lệnh tùy theo nhu cầu
4 Hệ thống ghi lại thông tin hoạt động
Alternative Flow 3a Người dùng chọn lệnh xem thông tin khóa học
3a.1 Hệ thống thể hiện danh sách các khóa học mà người dùng đã đăng ký
3a.2 Người dùng chọn 1 khóa học 3a.3 Hệ thống hiện tất cả các video buổi học 3a.4 Người dùng chọn 1 video
3a.5 Hệ thống hiện video cho người dùng xem
Use case thực hiện tiếp bước 4
3b Người dùng chọn lệnh xóa khóa học
3b.1 Người dùng chọn khóa học cần hủy 3b.2 Người dùng nhập lý do hủy
3b.3 Hệ thống xử lý yêu cầu hủy khóa học
Use case thực hiện tiếp bước 4
Exception Flow 1 + 3: Người dùng dùng lệnh hủy hoặc quay lại
Business Rules Khi Speaker đăng video bài học mới, người dùng sẽ nhận được mail thông báo
Hình 3.8: Đặc tả Use case quản lý khóa học cho Speaker
Use case name Quản lý khóa học - Speaker
Description Là Speaker, tôi muốn quản lý thông tin các khóa học mà do tôi dạy
Trigger Speaker có nhu cầu chỉnh sửa thông tin khóa học
Pre-Condition(s) Speaker phải đăng nhập thành công
Post-Condition(s) Các khóa học chỉnh sửa thành công
Hệ thống ghi nhận hoạt động
Basic Flow 1 Speaker nhấn vào quản lý khóa học
2 Speaker chọn lệnh tùy theo nhu cầu
3 Hệ thống ghi lại thông tin hoạt động
Alternative Flow 2a Speaker chọn lệnh Yêu cầu tạo khóa học
2a.1 Speaker điền thông tin cần thiết cho khóa học mới 2a.2 Speaker gửi yêu cầu lên hệ thống
Use case thực hiện tiếp bước 3
2b Speaker chọn lệnh Xóa khóa học
2b.1 Speaker chọn 1 khóa học 2b.2 Hệ thống yêu cầu xác nhận 2b.3 Speaker xác nhận
2b.4 Hệ thống xử lý yêu cầu xóa khóa học 2b.5 Hệ thống gửi thông báo đến các học viên tham gia vào khóa học
Use case thực hiện tiếp bước 3
2c Speaker chọn lệnh Sửa khóa học
2c.1 Speaker chọn 1 khóa học 2c.2 Speaker sửa thông tin khóa học 2c.3 Hệ thống yêu cầu xác nhận 2c.4 Speaker xác nhận
Use case thực hiện tiếp bước 3
Exception Flow 1 + 2 + 3: Speaker dùng lệnh hủy hoặc quay lại
Business Rules Speaker chỉ có quyền khởi tạo yêu cầu tạo khóa học
Hình 3.9: Đặc tả Use case quên mật khẩu
Use case name Quên mật khẩu
Description Là người dùng, tôi muốn khi quên mật khẩu, hệ thống có phương thức thay đổi mật khẩu
Trigger Khi người dùng quên mật khẩu
Post-Condition(s) Người dùng thay đổi mật khẩu
Basic Flow 1 Người dùng nhấn quên mật khẩu
2 Người dùng nhập mail reset mật khẩu
3 Hệ thống xác nhận mail có trong cơ sở dữ liệu
4 Hệ thống gửi mail reset mật khẩu
5 Người dùng nhấn đường link reset mật khẩu
6 Người dùng tạo mật khẩu mới
7 Hệ thống cấp nhật thông tin vào cơ sở dữ liệu
Exception Flow 2 Người dùng nhập mail không có trong hệ thống
Business Rules Người dùng nhập mật khẩu sai quá 3 lần thì hiện thông báo khuyến khích dùng chức năng quên mật khẩu
3.2.2.8 Cập nhật thông tin tài khoản
Hình 3.10: Đặc tả Use case cập nhật thông tin tài khoản
Use case name Cập nhật thông tin tài khoản
Description Là người dùng, tôi muốn mình có thể chỉnh sửa thông tin tài khoản
Trigger Khi người dùng có nhu cầu thay đổi thông tin tài khoản
Pre-Condition(s) Người phải đăng nhập thành công
Post-Condition(s) Thông tin tài khoản được chỉnh sửa thành công
Hệ thống ghi lại thông tin hành động
Basic Flow 1 Người dùng nhấn Cập nhật thông tin tài khoản
2 Người dùng chỉnh sửa các thông tin cần thiết
3 Hệ thống yêu cầu xác nhận
5 Hệ thống cập nhật thông tin mới vào cơ sở dữ liệu
6 Hệ thống ghi lại thông tin hành động
Exception Flow 1->5: Người dùng dùng lệnh hủy
Hình 3.11: Đặc tả Use case livestream
Description Là speaker, tôi muốn tổ chức buổi livestream trực tuyến để giảng dạy độc quyền cho các Student Pro
Trigger Speaker muốn tổ chức buổi livestream
Pre-Condition(s) Speaker phải đăng nhập thành công
Post-Condition(s) Speaker đã livestream thành công
Basic Flow 1 Speaker nhấn Livestream
2 Speaker dùng lệnh bắt đầu livestream
3 Hệ thống xử lý yêu cầu bắt đầu livestream
4 Hệ thống gửi thông báo đến các học viên có loại tài khoản Student Pro
5 Speaker dùng lệnh kết thúc livestream
6 Hệ thống xử lý yêu cầu kết thúc livestream
Exception Flow 1 Người dùng dùng lện quay lại
Hình 3.12: Đặc tả Use case quản lý buổi học
Use case name Quản lý buổi học
Description Là speaker, tôi muốn quản lý thông tin các buổi học của các khóa học của mình
Trigger Speaker có nhu cầu thay đổi thông tin buổi học
Pre-Condition(s) Speaker đăng nhập thành công
Post-Condition(s) Thông buổi học được chỉnh sửa thành công
Basic Flow 1 Speaker nhấn Quản lý buổi học
2 Speaker chọn lệnh chỉnh sửa thông tin buổi học
3 Speaker tiến hành chỉnh sửa thông tin buổi học
4 Hệ thống yêu cầu xác nhận lại
6 Hệ thống xử lý yêu cầu chỉnh sửa
Alternative Flow 1 Speaker nhấn Quản lý buổi học
Use case thực thiện Use case USC-09
Exception Flow Người dùng lệnh hủy
Hình 3.13: Đặc tả Use case xem livestream
Use case name Xem livestream
Description Là Student Pro, tôi muốn xem speaker trực tiếp livestream và có thể tương tác trực tiếp với giảng viên thông qua chat
Trigger Người dùng muốn xem livestream của 1 buổi học nào đó
Pre-Condition(s) Người dùng đăng nhập thành công
Tài khoản phải là Student Pro
Post-Condition(s) Student Pro có thể xem livestream
Student Pro có thể chat với speaker
Basic Flow 1 Student Pro nhấn xem livestream
2 Hệ thống xử lý yêu cầu xem livestream
3 Hệ thống hiện buổi livestream lên người dùng
Alternative Flow 1 Student Pro nhấn xem livestream
2 Hệ thống xử lý yêu cầu xem livestream
3 Hệ thống hiện buổi livestream lên người dùng
4 Student Pro nhập phần bình luận
5 Hệ thống xử lý yêu cầu bình luận
6 Hệ thống hiện phần bình luận
Exception Flow 2 Hệ thống xử lý yêu cầu không thành công
Người dùng dùng lệnh hủy hoặc quay lại:
3.2.2.12 Đăng ký trở thành Speaker
Hình 3.14: Đặc tả Use case đăng ký trở thành speaker
Use case name Đăng ký trở thành Speaker
Description Là học viên, tôi muốn mình có thể đăng ký trở thành Speaker cho hệ thống
Trigger Học viên có yêu cầu trở speaker
Pre-Condition(s) Student Free đăng nhập thành công
Post-Condition(s) Hệ thống ghi nhận yêu cầu trở thành speaker
Basic Flow 1 Học viên nhấn đăng ký trở thành speaker
2 Học viên điền các thông tin cần thiết
3 Hệ thống yêu cầu xác nhận
5 Hệ thống ghi nhận yêu cầu
Exception Flow Nếu người dùng dùng lệnh hủy hoặc quay lại