Tải bản đầy đủ (.pdf) (46 trang)

Đồ án tìm hiểu docker và xây dựng ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.35 MB, 46 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

Nguyễn Thanh Thọ – 17521093
Đồng Việt Tùng - 17521231

ĐỒ ÁN 2

Tìm hiểu Docker và xây dựng ứng dụng

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
Ths. Nguyễn Cơng Hoan

TP. HỒ CHÍ MINH, 2021

1


LỜI CẢM ƠN
Lời đầu tiên, chúng em xin chân thành cảm ơn thầy Nguyễn Công Hoan – giảng
viên phụ trách – đã hướng dẫn tận tình chúng em trong thời gian thực hiện đồ án. Nhờ có
sự giúp đỡ tận tình của thầy chúng em có thể hồn thành được đồ án một cách tốt nhất
Tuy chúng em đã cố gắng hạn chế những sai sót hết mức có thể nhưng vì kiến thức
cịn hạn hẹp nên chúng em khó tránh khỏi những sai sót trong q trình thực hiện cũng
như là lúc báo cáo đồ án. Do đó, chúng em mong nhận được ý kiến đóng góp từ thầy để
chúng em có thể khắc phục, sửa chữa.
Chúng em xin chân thành cảm ơn thầy!



2


LỜI NHẬN XÉT CỦA GIẢNG VIÊN
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................
................................................................................................................................................

3



MỤC LỤC
LỜI CẢM ƠN ...................................................................................................................... 2
LỜI NHẬN XÉT CỦA GIẢNG VIÊN ............................................................................... 3
MỤC LỤC ........................................................................................................................... 4
DANH MỤC HÌNH............................................................................................................. 6
TĨM TẮT ĐỒ ÁN 2 ........................................................................................................... 7
Chương 1: Kiến thức về Docker .......................................................................................... 8
1.1. Giới thiệu sơ lược về Docker ................................................................................. 8
1.1.1. Docker là gì? ...................................................................................................... 8
1.1.2. Lịch sử ra đời ..................................................................................................... 8
1.1.3. Roadmap phát triển............................................................................................ 8
1.2. Kiến trúc tổng thể ................................................................................................... 9
1.2.1. Docker Engine ................................................................................................... 9
1.2.2. Docker Hub...................................................................................................... 10
1.2.3. Một số thuật ngữ .............................................................................................. 10
1.3. Cách thức hoạt động ............................................................................................ 11
1.4. Docker mang lại lợi ích gì? Cho ai? Trong hồn cảnh nào? ................................ 13
1.3.1. Lợi ích và hồn cảnh sử dụng .......................................................................... 13
1.3.2. Ai sử dụng Docker........................................................................................... 13
1.5. Một số công cụ phổ biến ...................................................................................... 13
1.5.1. Docker Compose ............................................................................................. 13
1.5.2. Docker Swarm ................................................................................................. 13
1.6. So sánh Docker với các công nghệ tương tự ....................................................... 14
4


Chương 2: Áp dụng Docker .............................................................................................. 16
2.1. Setup Dockerfile ..................................................................................................... 16
2.1.1. NestJs - backend .............................................................................................. 16

Giải thích thơng số..................................................................................................... 17
Run project với nestjs ................................................................................................ 17
2.1.2. VueJs - frontend .............................................................................................. 17
Run Project cho VueJs............................................................................................... 18
2.2. Setup Docker-Compose .......................................................................................... 19
2.2.1. Quy trình cơ bản .............................................................................................. 19
2.2.2. Docker-compose file ....................................................................................... 19
Chương 3: Phát triển Website học tiếng anh ..................................................................... 21
3.1. Mô tả ứng dụng....................................................................................................... 21
3.2. Sơ đồ Use case ........................................................................................................ 22
3.2.1. Tổng quát ......................................................................................................... 22
3.2.2. Đặc tả Use Case ............................................................................................... 24
3.3. Sơ đồ Lớp ............................................................................................................... 44
Chương 4: Kết luận và Hướng phát triển .......................................................................... 45
4.1. Kết quả đạt được ..................................................................................................... 45
4.2. Hạn chế ................................................................................................................... 45
4.3. Hướng phát triển ..................................................................................................... 45
Chương 5: Tài liệu tham khảo ........................................................................................... 46

5


DANH MỤC HÌNH
Hình 1.1: Kiến trúc Docker ........................................................................................ 9
Hình 1.2: Trang Docker hub ....................................................................................... 10
Hình 1.3: So sánh kiến trúc của container và Virtual Machines ................................ 11
Hình 1.4: Kiến trúc phân lớp của container................................................................ 12
Hình 2.1: Build dockerfile cho VueJs ........................................................................ 18
Hình 2.2: Run dockerfile ............................................................................................ 18
Hình 3.1: Sơ đồ Use case tổng quát............................................................................ 23

Hình 3.2: Đặc tả Use case quản lý học viên ............................................................... 24
Hình 3.3: Đặc tả Use case quản lý khóa học .............................................................. 26
Hình 3.4: Đặc tả Use case quản lý tài khoản người dùng .......................................... 28
Hình 3.5: Đặc tả Use case quản lý speaker ................................................................ 30
Hình 3.6: Đặc tả Use case tìm kiếm khóa học ............................................................ 31
Hình 3.7: Đặc tả Use case quản lý khóa học cho User ............................................... 33
Hình 3.8: Đặc tả Use case quản lý khóa học cho Speaker ......................................... 35
Hình 3.9: Đặc tả Use case quên mật khẩu .................................................................. 36
Hình 3.10: Đặc tả Use case cập nhật thơng tin tài khoản ........................................... 38
Hình 3.11: Đặc tả Use case livestream ....................................................................... 39
Hình 3.12: Đặc tả Use case quản lý buổi học ............................................................. 40
Hình 3.13: Đặc tả Use case xem livestream ............................................................... 41
Hình 3.14: Đặc tả Use case đăng ký trở thành speaker .............................................. 43
Hình 3.15: Sơ đồ lớp................................................................................................... 44

6


TÓM TẮT ĐỒ ÁN 2
Hiện nay, Docker dần trở thành một cơng cụ khơng thể thiếu cho các lập trình
viên, đặc biệt là các lập trình viên chuyên về web. Do đó, mục tiêu của đồ án này là tìm
hiểu về Docker, kiến trúc công nghệ và các chức năng nổi bật của Docker. Sau đó thơng
qua việc tích hợp Docker vào quá trình phát triển một website để làm bật lên những ưu
điểm của Docker.
Website được dùng làm ứng dụng minh họa cho công nghệ Docker là website học
tiếng Anh. Trong quá trình phát triển, chúng em sẽ sử dụng các máy với các hệ điều hành
cũng như môi trường phát triển khác nhau. Sau đó sử dụng Docker để hỗ trợ cho việc
phát triển website. Từ đó rút ra được những lợi ích mà Docker mang lại.
Sau quá trình sử dụng Docker ở đồ án 2, chúng em nhận thấy việc sử dụng Docker
đã giúp chúng em giảm thiểu đáng kể những lỗi khơng đáng có do bất đồng bộ giữa các

môi trường cài đặt, kiểm thử, phát triển.

7


Chương 1: Kiến thức về Docker
1.1.

Giới thiệu sơ lược về Docker
1.1.1. Docker là gì?
Docker là một nền tảng cho nhà phát triển và sysadmin để phát triển, triển khai các

ứng dụng với container. Nó cho phép tạo các mơi trường độc lập và tách biệt để khởi
chạy và phát triển ứng dụng và môi trường này được gọi là container. Khi cần triển khai
lên bất kỳ server nào chỉ cần run container của Docker thì ứng dụng của bạn sẽ được hoạt
động ngay lập tức.
1.1.2. Lịch sử ra đời
 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-aservice ở 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.
1.1.3. Roadmap phát triển
 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.

 Tháng 11-2014 Docker công bố hợp tác với Stratoscale(công ty làm về data
center operating system. Vmware là 1 trong các sản phẩm).Ngoài ra, Docker
container đã có thể support cho EC2 của Amazon.
 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.
8


 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.
1.2.

Kiến trúc tổng thể

Hình 1.1: Kiến trúc Docker
Docker có 2 thành phần chính: Docker Engine và Docker Hub. Docker Engine là
giải pháp ảo hóa (virtualization) dựa trên cơng nghệ container, còn tại Docker Hub là
platform Software-as-a-Service để chia sẻ images
1.2.1 Docker Engine
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
9



 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 sẽ giao tiếp với docker daemon thông qua REST API, cả 2 sẽ kết nối
với nhau thông qua UNIX socket hoặc qua giao tiếp mạng. Việc giao tiếp theo phương
thức này cho phép Docker Client và Docker Daemon có thể chạy trên cùng một hệ thống
hoặc khác hệ thống.
1.2.2. Docker Hub
Docker hub là nơi lưu trữ các image (public hoặc private). Ở đây người dùng có
thể chia sẻ các customized image. Ngồi ra, người dùng có thể tìm và tải các image thơng
qua docker client

Hình 1.2: Trang Docker hub
1.2.3. Một số thuật ngữ
 Image: Là một package chứa tất cả các thông tin, thư viện, framework,... cần thiết
để tạo ra một container. Thông thường, các image được tạo ra dựa trên các image
cha (based image) – image cha được cung cấp sẵn bởi docker.

 Container: Về cơ bản, container là một công nghệ ảo hóa nhưng thay vì phải giả
lập phần cứng như Vmware thì container sẽ chia sẻ hệ điều hành với host. Mỗi
10


container đều chạy độc lập với các container khác và hệ thống mà docker đang
chạy. Do đó người dùng có thể thêm, xóa, sửa container; Kết nối với network;
Thậm chí là tạo một image dựa trên trạng thái hiện tại của container mà không ảnh
hưởng tới hệ thống host và 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
 Docker Registry: là nơi lưu trữ riêng của Docker Images. Images được push vào
registry và client sẽ pull images từ registry. Có thể sử dụng registry của riêng bạn
hoặc registry của nhà cung cấp như : AWS, Google Cloud, Microsoft Azure
1.3.

Cách thức hoạt động
Để cho mỗi container có thể chạy như một process độc lập và chiếm khơng gian ít

thì docker sử dụng kiến trúc phân lớp (layer). Những layer này còn được gọi là layer
trung gian, chúng được tạo từ những câu lệnh trong Dockerfile khi build một docker
image
Ví dụ:
11


FROM

node:stable

COPY . /usr/src/app
WORKDIR /usr/src/app
RUN npm install grpc
RUN npm install

ENTRYPOINT [“npm”, “start”]
Với mỗi câu lệnh trên, docker sẽ tạo ra một layer nằm chồng lên container image.
Các layer sẽ được hash, có nghĩa là docker sẽ lưu các layer vào bộ nhớ cache. Điều này
sẽ tối ưu thời gian build cho các layer mà không thay đổi giữa những lần build. Tức là
người dùng sẽ không phải rebuild và copy các file ở bước COPY nếu như câu lệnh

COPY không thay đổi.
Sau khi build xong các câu lệnh, Docker sẽ tạo ra một lớp trắng mới. Người dùng
có thể truy cập tới layer này sử dụng câu lệnh docker exec –it <container> <command>
. Bằng cách này người dùng có thể thay đổi image và có thể commit 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

12


1.4.

Docker mang lại lợi ích gì? Cho ai? Trong hồn cảnh nào?
1.4.1. Lợi ích và hồn cảnh sử dụng



Việc sử dụng Docker cho phép ta vận chuyển mã nhanh hơn, tiêu chuẩn hóa hoạt
động của ứng dụng, di chuyển mã một cách trơn tru và tiết kiệm tiền bằng cách cải
thiện khả năng tận dụng tài nguyên.

 Với Docker, ta sẽ được nhận một đối tượng duy nhất có khả năng chạy ổn định ở
bất kỳ đâu. Cú pháp đơn giản và không phức tạp của Docker sẽ cho ta quyền kiểm
sốt hồn tồn.
 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 cho việc chạy nhiều mã hơn trên từng máy chủ trở nên dễ
dàng hơn, cải thiện khả năng tận dụng và tiết kiệm tiền bạc cho chúng ta, giúp dự
án có khả năng mở rộng cao.

1.4.2. Ai sử dụng Docker
 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.
1.5.

Một số công cụ phổ biến
1.5.1 Docker Compose
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
1.5.2. Docker Swarm
Docker Swarm là một công cụ giúp gom cụm các Docker. Docker Swarm có thể
gom nhiều Docker Engine lại với nhau thành một Docker Engine “ảo”. Tức là bất cứ

13


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
1.6.

So sánh Docker với các công nghệ tương tự
LXD

OpenVZ


LinuxVServer

Windows
Containers

So sánh

Mô phỏng

Một phần mở

Sử dụng nhân được vá Docker Engine

với

trải nghiệm

rộng của nhân

để cung cấp các tính

dành cho

docker

vận hành

Linux, cung

năng ảo hóa cấp hệ


Windows

Máy ảo

cấp các công

điều hành. Mỗi Máy

Server 2016

nhưng về

cụ để ảo hóa

chủ riêng ảo được

truy cập trực

vùng chứa và

cho người

chạy như một quy

tiếp vào nhân

làm như vậy

dùng. Nó sử


trình riêng biệt trên

windows. Do

mà khơng tốn dụng Mơi

cùng một hệ thống

đó vùng chứa

chi phí mơ

trường ảo để

máy chủ lưu trữ và có

Docker gốc

phỏng tài

lưu trữ các hệ

hiệu quả cao do khơng không thể chạy

nguyên phần

thống Khách,

cần mô phỏng. Tuy


trên Vùng chứa

cứng. Mặc dù có nghĩa là nó

nhiên, nó là cổ điển về của Windows.

daemon LXD sử dụng vùng

số lượng phát hành, vì

Thay vào đó,

u cầu nhân

chứa cho tồn

chưa có bản nào kể từ

một định dạng

Linux, nó có

bộ hệ điều

năm 2007.

vùng chứa khác,

thể được cấu


hành, khơng

WSC (Vùng

hình để truy

phải các ứng

chứa Windows

cập bằng máy dụng và quy

Server), sẽ được

khách

sử dụng.

trình riêng lẻ.

Windows
hoặc macOS.

14


Trường Quyền truy

CI / CD và


hợp sử

cập phần

dụng

cứng trần cho chứa và dữ

Nhiều VPS lưu trữ và

DevOps, Vùng quản trị, và hỗ trợ

VPS, nhiều

liệu lớn, Bộ

bản phân

Ứng dụng

phối Linux

Người dùng

Legacy.

trên cùng một Biệt lập Lưu
máy chủ.


trữ, Hợp nhất
máy chủ.

dễ

dễ

trung bình

Các

Walmart

FastVPS,

DreamHost,

cơng ty

PayPal, Box.

Parallels,

Amoebasoft,

Pixar

OpenHosting Inc.,

Animation


Lycos, Pháp, Mosaix

Studios,

Communications, Inc.

Khả
năng
tích
hợp

sử dụng

Yandex.

15


Chương 2: Áp dụng Docker
2.1. Setup Dockerfile
2.1.1. NestJs – backend

FROM node:12.13-alpine As development
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install –only=development
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 –from=development /usr/src/app/dist ./dist
CMD [“node”, “dist/main”]

16


Giải thích thơng số
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.


Run project với nestjs
Bước 1: config file Dockerfile
Bước 2: docker build –t <<app-name>> .
Bước 3: docker run –p 8080:8080 app-name

2.1.2. VueJs – frontend

FROM node:12
WORKDIR /app
COPY package*.json .
17


RUN npm install
COPY . .
RUN npm run build
EXPOSE 8080
CMD [“npm”,”run”,”serve”]

Run Project cho VueJs

Bước 1: docker build –t <<app-name>>

Hình 2.1: Build dockerfile cho VueJs
Bước 2: docker run -it -p 8080:8080 -v /app/node_modules --rm test:latest

Hình 2.2: Run dockerfile
18



2.2. Setup Docker-Compose
2.2.1. Quy trình cơ bản
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:
- .:/app
ports:
- "8080:8080"
- "9000:9000"
links:
- my_service_db
environment:
- dev=1
- db_service_name=my_service_db
- db_name=learning
- db_retry_time=3000
my_service_db:
container_name: my_service_db
image: mongo
volumes:

- ./db:/data/db
ports:
- "27017:27017"

Ghi chú:
services: để khai báo những service có trong docker-compose
build: để khai báo đường dẫn tới service và có thể thêm đường dẫn đến docker file
reset: always dùng khi db gặp sự cố thì tự khởi động lại
image: khai báo tên image khi build
container_name: khai báo tên container khi build
port: ánh xạ port từ container sang port sang máy local
19


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

20


Chương 3: Phát triển Website học tiếng anh
3.1. Mô tả ứng dụng
Website là cầu nối giữa người dạy và người học. Cho phép người học tìm kiếm và đăng
ký vào một khóa học tùy theo trình độ của mình. Người học có thể xem bài học qua video
hoặc là xem livestream giảng dạy trực tiếp nếu người dùng sử dụng gói tài khoản cao cấp
hơn.

21



3.2. Sơ đồ Use case
3.2.1. Tổng quát

22


23


Hình 3.1: Sơ đồ Use case tổng quát
3.2.2. Đặc tả Use Case
3.2.2.1. Quản lý học viên

Hình 3.2: Đặc tả Use case quản lý học viên

Use case ID

USC-01

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

Actor(s)


Admin

Priority

Must have

24


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.
2.
3.
4.

Admin truy cập vào phần quản lý học viên
Admin chọn lệnh tùy theo nhu cầu
Admin xác nhận lại thông tin đã chỉnh sửa
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 cấp tài khoản
2b.1 Admin xác nhận học viên đã thanh toán
2b.2 Admin nhập thời hạn hiệu lực cho tài khoản Student Pro
2b.3 Admin chuyển loại tài khoản Student Free thành 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
Use case dừng lại
2. Admin dùng lệnh hủy
Use case dừng lại
2b.1 Học viên chưa thanh tốn
Admin gửi email thơng báo nhắc nhở

25


×