Tải bản đầy đủ (.docx) (71 trang)

Khóa luận xây dựng ứng dụng mạng xã hội hỗ trợ học tập

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 (834.68 KB, 71 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

PHẠM NGUN QUỐC

KHĨA LUẬN TỐT NGHIỆP

XÂY DỰNG ỨNG DỤNG MẠNG XÃ HỘI
HỖ TRỢ HỌC TẬP
Building a social networking application to support

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

TP. HỒ CHÍ MINH, 2020


ĐẠ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

PHẠM NGUYÊN QUỐC – 15520700

KHÓA LUẬN TỐT NGHIỆP

XÂY DỰNG ỨNG DỤNG MẠNG XÃ HỘI
HỖ TRỢ HỌC TẬP
Building a social networking application to support learning


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

GIẢNG VIÊN HƯỚNG DẪN
THS. THÁI THỤY HÀN UYỂN
THS. LÊ THANH TRỌNG

TP. HỒ CHÍ MINH, 2020


THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số …………………… ngày
………………….. của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1. …………………………………………. – Chủ tịch.
2. …………………………………………. – Thư ký.
3. …………………………………………. – Ủy viên.
4. …………………………………………. – Ủy viên.
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
Độc Lập - Tự Do - Hạnh Phúc
TRƯỜNG ĐẠI HỌC
CƠNG NGHỆ THƠNG TIN
CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TP. HCM, ngày 31 tháng 07 năm 2020

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN)
Tên khóa luận:

XÂY DỰNG ỨNG DỤNG MẠNG XÃ HỘI HỖ TRỢ HỌC TẬP
(Building a social networking application to support learning) Sinh viên

thực hiện: Cán bộ hướng dẫn: Phạm Nguyên Quốc – 15520700 ThS. Lê Thanh
Trọng ThS. Thái Thụy Hàn Uyển
Đánh giá về khóa luận
1. Về cuốn báo cáo
Số trang _________ Số chương _________ Số bảng số liệu
_________ Số hình vẽ _________ Số tài liệu tham khảo _________ Sản
phẩm _________ Một số nhận xét về cuốn báo cáo
………………………………………………………………………………….
………………………………………………………………………………….
………………………………………………………………………………….


…………………………………………………………………………………. 2.
Về nội dung nghiên cứu
………………………………………………………………………………….
………………………………………………………………………………….
………………………………………………………………………………….
…………………………………………………………………………………. 3.
Về chương trình ứng dụng:
………………………………………………………………………………….
………………………………………………………………………………….
………………………………………………………………………………….
…………………………………………………………………………………. 4.
Về thái độ làm việc của sinh viên:
………………………………………………………………………………….
………………………………………………………………………………….
………………………………………………………………………………….
………………………………………………………………………………….
Đánh giá chung:
………………………………………………………………………………….

………………………………………………………………………………….
………………………………………………………………………………….
………………………………………………………………………………….
Điểm cho sinh viên:
Phạm Nguyên Quốc:………../10
Người nhận xét (Ký tên và ghi rõ họ tên)
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC

CƠNG NGHỆ THƠNG TIN
CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc


ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI: Xây dựng ứng dụng mạng xã hội hỗ trợ học tập
Cán bộ hướng dẫn: ThS. Lê Thanh Trọng, ThS. Thái Thụy Hàn Uyển
Thời gian thực hiện: Từ ngày 23/03/2020 đến ngày 31/07/2020
Sinh viên thực hiện: Phạm Nguyên Quốc - 15520700
Nội dung đề tài:
• Thực trạng: cịn đang thiếu một ứng dụng cung cấp mơi trường online thân
thiện, tiện lợi để các bạn có thể hỏi đáp các kiến thức, chia sẻ tài liệu và theo
dõi các thông tin liên quan đến việc học cũng như hoạt động ngoại khố.
Khơng phải trường nào cũng có forum riêng để học sinh có thể hoạt động và
trao đổi trên đó.
• Mục tiêu: tạo ra 1 mạng xã hội giúp học sinh, sinh viên kết nối, giao lưu, chia
sẻ thơng tin, giúp đỡ nhau trong học tập.
• Đối tượng sử dụng: học sinh, sinh viên.
• Tính năng chính: hỏi đáp bài tập, tìm gia sư, tạo nhóm hỗ trợ học tập, xem tin
tức (các cuộc thi học thuật, các buổi training, hoạt động ngoại khố, tuyển

dụng),…
• Phương pháp thực hiện: xây dựng ứng dụng trên di động.
• Tính khả thi: hiện nay chưa có quá nhiều ứng dụng hỗ trợ việc học tập của các
bạn học sinh, sinh viên. Nên nếu có 1 ứng dụng như vậy ra mắt thì khả năng
cao sẽ được các bạn đón nhận và sử dụng. Ngồi ra thì 1 mạng xã hội tập trung
đơng đảo các bạn sinh viên cũng có thể là cầu nối quan trọng cho các doanh
nghiệp quảng cáo, tìm kiếm các nguồn nhân lực để tuyển dụng.

• Kết quả mong đợi: ứng dụng có thể đáp ứng đầy đủ các mục tiêu đề ra một cách
hiệu quả.


Kế hoạch thực hiện: 15 tuần (23/03 – 31/07)
• Tuần 1 (23/03 – 29/3) : gặp và trao đổi với giáo viên hướng dẫn, suy nghĩ ý
tưởng cho ứng dụng.
• Tuần 2 - 4 (30/03 – 19/04): phân tích các use case, tìm hiểu về những cơng
nghệ sẽ sử dụng.
• Tuần 5 - 8 (20/04 – 17/05): vẽ sơ đồ lớp, thiết kế database, kiến trúc ứng dụng.
• Tuần 9 - 10 (18/05 – 31/05): thiết kế giao diện.
• Tuần 11 – 18 (01/06 – 26/07): lập trình ứng dụng, viết báo cáo.
• Tuần 19 (27/07 – 31/07): hồn thiện báo cáo.
Xác nhận của CBHD

TP. HCM, ngày 31 tháng 07 năm
2020 Sinh viên

LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành cảm ơn ban giám hiệu nhà trường, các thầy cơ
của Trường Đại học Cơng Nghệ Thơng Tin nói chung và các thầy cô trực thuộc khoa
Công Nghệ Phần Mềm nói riêng, những người ln tận tình dạy hỗ, truyền đạt cho em

nhiều kiến thức mới mẻ và bổ ích trong suốt thời gian mà em theo học tại trường.
Đặc biệt, em xin gửi đến thầy Lê Thanh Trọng và cô Thái Thụy Hàn Uyển lời
cảm ơn chân thành và sâu sắc nhất. Cảm ơn thầy cơ vì đã tận tình chỉ bảo, hướng dẫn
và chia sẻ nhiều kinh nghiệm quý báu trong suốt những ngày em làm luận văn. Nếu
khơng được thầy cơ quan tâm, khơng có những lời góp ý dẫn của thầy cơ thì em đã
khơng thể hồn thành khố luận tốt nghiệp một cách trọn vẹn được.
Đồng thời, em cũng muốn được thể hiện lòng biết ơn của mình đến các bạn
cùng lớp làm khố luận, các anh chị đồng nghiệp đã luôn động viên, giúp đỡ và đưa ra
những ý kiến đóng góp vơ cùng bổ ích. Nhờ có những góp ý từ mọi người mà em có
thể nhận ra những mặt hạn chế cịn tồn tại trong bài luận của mình để từ đó cố gắng
hồn thiện nó một cách tốt nhất có thể.


Trong suốt q trình làm khố luận em ln cố gắng làm mọi thứ thật tốt. Tuy
nhiên có thể vẫn sẽ khơng tránh khỏi những sai sót. Vì vậy em rất mong nhận được thật
nhiều những lời góp ý quý giá từ phía thầy cơ, bạn bè và tất cả mọi người quan tâm đến
bài luận của em.
Sau cùng, em xin kính chúc tồn thể q thầy cơ thật nhiều sức khoẻ, nhiệt
huyết và luôn thành công trong sự nghiệp giảng dạy của mình.
TP. Hồ Chí Minh, tháng 07 năm 2020
Sinh viên thực hiện

Phạm Nguyên Quốc

MỤC LỤC
Chương 1. TỔNG QUAN ĐỀ TÀI.........................................................................2 1.1.
Giới thiệu đề tài............................................................................................2 1.2. Lý
do chọn đề tài..........................................................................................3 1.3. Mục
tiêu .......................................................................................................3 1.4. Phương
pháp thực hiện ................................................................................4 1.5. Ý nghĩa thực

tiễn..........................................................................................5

1.6. Kết

quả dự

kiến ............................................................................................5
Chương 2. TÌM HIỂU VỀ CÁC CÔNG NGHỆ SẼ SỬ DỤNG............................6 2.1.
Flutter...........................................................................................................6 2.1.1. Giới
thiệu về Flutter..............................................................................6 2.1.2. Ngơn ngữ lập
trình Dart........................................................................7 2.1.3. Ứng dụng vào đề
tài..............................................................................8 2.2. Spring
framework ........................................................................................9 2.2.1. Giới thiệu
về Spring Framework ..........................................................9 2.2.2. Ngơn ngữ lập trình
Kotlin...................................................................10 2.2.3. Ứng dụng vào đề
tài............................................................................11 2.3.
Microservices.............................................................................................11 2.3.1. Ưu
điểm ..............................................................................................11 2.3.2. Nhược


điểm ........................................................................................12 2.3.3. Ứng dụng vào đề
tài............................................................................13 2.4. Netflix
OSS................................................................................................13 2.4.1. API
Gateway: Netflix Zuul.................................................................13 2.4.1.1. Ưu
điểm.......................................................................................13
2.4.1.2.

Nhược

điểm.................................................................................14


2.4.2. Service discovery: Netflix Eureka ......................................................15
2.4.3. Ứng dụng vào đề tài............................................................................15
2.5.

Redis...........................................................................................................15

2.5.1. Các ứng dụng của Redis.....................................................................16
2.5.2. Các kiểu dữ liệu trong Redis ..............................................................16
2.5.3. Ứng dụng vào đề tài............................................................................17
2.6.

Google

Maps API.......................................................................................18

2.6.1. Giới thiệu ............................................................................................18
2.6.2. Ứng dụng vào đề tài............................................................................18
2.7.

Google

Cloud

Messaging...........................................................................19

2.7.1. Giới thiệu ............................................................................................19
2.7.2. Ứng dụng vào đề tài............................................................................20
2.8.


Amazon

S3.................................................................................................20

2.8.1. Các khái niệm cơ bản..........................................................................20
2.8.2. Ưu điểm của Amazon S3....................................................................22
2.8.3. Ứng dụng vào đề tài............................................................................23
2.9. SMTP Gmail ..............................................................................................23
2.9.1. Giới thiệu ............................................................................................23
2.9.2. Ứng dụng vào đề tài............................................................................23
Chương 3. XÂY DỰNG MẠNG XÃ HỘI HỖ TRỢ HỌC TẬP.........................24 3.1.
Đặt vấn đề ..................................................................................................24 3.2. Tìm
hiểu về các ứng dụng học tập phổ biến ở Việt Nam...........................24 3.2.1.


QandA.................................................................................................24
3.2.2.
3.2.3.

PhotoStudy..........................................................................................25
Hỏi

đáp

247.........................................................................................26

3.2.4. EduBox ...............................................................................................27
3.3. Kết luận ......................................................................................................27 3.4.
Hướng giải quyết........................................................................................28 3.5. Xác
định và phân tích yêu cầu ...................................................................30

3.5.1. Danh sách các actor ............................................................................30 3.5.2.
Danh sách các use case .......................................................................30 3.6. Thiết kế
kiến trúc hệ thống ........................................................................33 3.7. Thiết kế cơ sở
dữ liệu.................................................................................36 3.7.1. Account
Service..................................................................................36 3.7.2. QA
Service..........................................................................................38 3.7.3. Group Service
.....................................................................................41 3.7.4. Event
Service ......................................................................................43 3.7.5. Tutor
Service ......................................................................................45 3.8. Thiết kế giao
diện.......................................................................................47 3.8.1. Đăng
nhập...........................................................................................47 3.7.2 Đăng ký tài
khoản...............................................................................48 3.7.3 Trang cá
nhân .....................................................................................51 3.7.4 Hỏi đáp bài
tập....................................................................................54 3.7.5 Sự
kiện ................................................................................................60 3.7.6 Nhóm học
tập......................................................................................66 Chương 4. KẾT
LUẬN ........................................................................................72 4.1. Kết quả đạt được
........................................................................................72
4.2. Thuận lợi và khó khăn................................................................................72
4.2.1. Thuận lợi.............................................................................................72 4.2.2.
Khó khăn.............................................................................................72 4.3. Hướng
phát triển ........................................................................................72


DANH MỤC HÌNH
Hình 1.1: Thống kê lượng người Việt Nam sử dụng mạng xã hội .............................2
Hình 2.1: Kiến trúc Flutter..........................................................................................6
Hình 2.2: Vịng đời của Widget..................................................................................7
Hình 2.3: Kiến trúc Spring Framework ......................................................................9
Hình 2.4: Các dịch vụ của Netflix OSS....................................................................13

Hình 2.5: Logo redis.................................................................................................15
Hình 2.6: Logo Gooogle Map API ...........................................................................18
Hình 2.7: Dịch vụ Google Cloud Messaging............................................................19
Hình 2.8: Amazon web services S3 ..........................................................................20
Hình 3.1: Logo QandA .............................................................................................25
Hình 3.2: Logo PhotoStudy ......................................................................................25
Hình 3.3: Logo Hỏi đáp 247 .....................................................................................26
Hình 3.4: Logo EduBox............................................................................................27
Hình 3.5: Use case của Người dùng .........................................................................30
Hình 3.6: Kiến trúc tổng thể của hệ thống................................................................33
Hình 3.7: Màn hình đăng nhập .................................................................................47
Hình 3.8: Màn hình gửi mã xác thực email ..............................................................48
Hình 3.9: Màn hình nhập mã xác thực email............................................................49
Hình 3.10: Màn hình nhập thơng tin cá nhân ...........................................................50
Hình 3.11: Màn hình trang cá nhân ..........................................................................51
Hình 3.12: Màn hình cập nhật thơng tin cá nhân......................................................52
Hình 3.13: Màn hình danh sách bạn bè ....................................................................53
Hình 3.14: Màn hình danh sách câu hỏi ...................................................................54
Hình 3.15: Màn hình đặt câu hỏi ..............................................................................55
Hình 3.16: Màn hình trả lời câu hỏi..........................................................................56
Hình 3.17: Màn hình xem chi tiết câu hỏi và câu trả lời ..........................................57
Hình 3.18: Màn hình xem những câu hỏi đã đặt.......................................................58
Hình 3.19: Màn hình những câu hỏi đã lưu ..............................................................59
Hình 3.20: Màn hình xem danh sách sự kiện............................................................60
Hình 3.21: Màn hình tìm kiếm sự kiện.....................................................................61
Hình 3.22: Màn hình sự kiện mà đã chia sẻ..............................................................62
Hình 3.23: Màn hình sự kiện đã tham gia.................................................................63
Hình 3.24: Màn hình chi tiết sự kiện ........................................................................64
Hình 3.25: Màn hình tạo sự kiện ..............................................................................65



Hình 3.26: Màn hình danh sách nhóm học tập .........................................................66
Hình 3.27: Màn hình tạo nhóm học tập ....................................................................67
Hình 3.28: Màn hình xem thành viên trong nhóm học tập .......................................68
Hình 3.29: Màn hình mơ tả nhóm học tập ................................................................69
Hình 3.30: Màn hình đăng bài trong nhóm học tập ..................................................70
Hình 3.31: Màn hình xem bài đăng trong nhóm học tập ..........................................71

DANH MỤC BẢNG
Bảng 3.1: Danh sách các actor..................................................................................30
Bảng 3.2: Chi tiết use case của Người dùng.............................................................32
Bảng 3.4: Danh sách các thuộc tính của Account.....................................................36
Bảng 3.5: Danh sách các thuộc tính của FriendRequest...........................................37
Bảng 3.6: Danh sách các thuộc tính của Friend........................................................37
Bảng 3.7: Danh sách các thuộc tính của OTP...........................................................38
Bảng 3.8: Danh sách các thuộc tính của Topic.........................................................38
Bảng 3.9: Danh sách các thuộc tính của Question....................................................39
Bảng 3.10: Danh sách các thuộc tính của Bookmark ...............................................39
Bảng 3.11: Danh sách các thuộc tính của Answer....................................................40
Bảng 3.12: Danh sách các thuộc tính của Star..........................................................40
Bảng 3.13: Danh sách các thuộc tính của Group......................................................41
Bảng 3.14: Danh sách các thuộc tính của Post .........................................................42
Bảng 3.15: Danh sách các thuộc tính của GroupMember ........................................42
Bảng 3.16: Danh sách các thuộc tính của Invitation.................................................43
Bảng 3.17: Danh sách các thuộc tính của Topic.......................................................43
Bảng 3.18: Danh sách các thuộc tính của Event.......................................................44
Bảng 3.19: Danh sách các thuộc tính của Going ......................................................44
Bảng 3.20: Danh sách các thuộc tính của Subject ....................................................45
Bảng 3.21: Danh sách các thuộc tính của Registration.............................................45
Bảng 3.22: Danh sách các thuộc tính của Request ...................................................46


DANH MỤC TỪ VIẾT TẮT
STT

Từ viết tắt

Từ đầy đủ

1

STT

Số thứ tự

2

AWS

Amazon Web Service

3

Amazon S3

Amazon Simple Storage Service

4

API


Application Programming Interface


5

REST

Representational State Transfer

6

Netflix OSS

Netflix Open Source Software

7

JVM

Java Virtual Machine

TÓM TẮT KHÓA LUẬN
– Tổng quan đề tài: đặt vấn đề, lý do chọn đề tài và mục tiêu dự kiến. – Nghiên cứu
về các công nghệ sẽ sử dụng để thực hiện đề tài: kiến trúc Microservices, Flutter
Framework, Spring Framework, …
– Tìm hiểu về các khó khăn mà học sinh, sinh viên đang gặp phải trong việc học. –
Nghiên cứu các mạng xã hội học tập hiện có trên thị trường, phân tích ưu điểm,
nhược điểm.
– Đưa ra các giải pháp để giải quyết những khó khăn đó.
– Xây dựng ứng dụng mạng xã hội hỗ trợ học tập, phân tích các use case, tính năng

cần có cho ứng dụng.
– Thiết kế kiến trúc hệ thống, thiết kế cơ sở dữ liệu và giao diện cho ứng dụng di
động.
– Triển khai ứng dụng lên server.
– Tổng hợp kết quả đã đạt được, phân tích thuận lời và khó khăn cũng như đề ra
hướng phát triển trong tương lai cho ứng dụng.


1

Chương 1. TỔNG QUAN ĐỀ TÀI
1.1. Giới thiệu đề tài
Học tập có tầm quan trọng vơ cùng to lớn đối với mỗi con người. Nó là q
trình khơng ngừng trau dồi, bổ sung những kiến thức, kỹ năng và kinh nghiệm
mới. Học giúp con người ta mở mang tri thức, xây dựng xã hội ngày một văn
minh và tiến bộ.
Càng ngày con người càng có nhiều hình thức học tập khác nhau. Ngồi việc
học ở trường lớp, chúng ta cịn có thể tự học thơng qua bạn bè, sách báo,
internet hoặc các trải nghiệm thực tế.
Nhờ vào sự phát triển của công nghệ, mạng xã hội đang dần trở nên phổ biến
trong đời sống hàng ngày. Nó giúp mọi người có thể kết nối và tương tác với
nhau một cách nhanh chóng, dễ dàng hơn.

Hình 1.1: Thống kê lượng người Việt Nam sử dụng mạng xã hội

Theo các số liệu thống kê của Hootsuite vào đầu năm 2020 [1], có khoảng 65
triệu người Việt Nam đang sử dụng mạng xã hội, chiếm 67% dân số cả nước.
Trong đó có tới 99% người sử dụng mạng xã hội truy cập thông qua các thiết bị
di động.


2

1.2. Lý do chọn đề tài
Trong quá trình học tập, các bạn học sinh, sinh viên đơi khi sẽ gặp nhiều vấn đề
khó khăn khơng thể tự mình giải quyết và cần sự giúp đỡ từ thầy cô, bạn bè


hoặc cộng đồng.
Là 1 sinh viên đang còn ngồi trên ghế nhà trường, em hiểu được những khó
khăn trong học tập mà những bạn học sinh, sinh viên thường gặp phải. Ngoài
thời gian học tập ở trường, việc tự học ở nhà cũng là điều vơ cùng quan trọng.
Sẽ có lúc tụi em gặp phải những bài tập khó nhưng lại khơng tìm được ai để hỏi,
vì khơng phải lúc nào cũng có thể gặp gỡ bạn bè, thầy cơ. Hoặc khi em tìm hiểu
được kiến thức nào đó bổ ích, muốn chia sẻ cho tất cả mọi người cùng biết
nhưng lại khơng có khơng gian để chia sẻ.
Vì vậy, việc tạo ra 1 cộng đồng có thể kết nối, giúp đỡ nhau vượt qua những khó
khăn trong học tập cùng như chia sẻ những kiến thức hay, bổ ích là điều rất cần
thiết.
Em thực hiện đề tài này với mong muốn tạo ra 1 mạng xã hội giúp kết nối các
bạn học sinh, sinh viên lại để có thể hỗ trợ nhau trong học tập kiến thức chuyên
môn cũng như tham gia các hoạt động ngoại khố.
Đó là lí do em chọn đề tài “Xây dựng ứng dụng mạng xã hội hỗ trợ học tập”
(Building an social network application to support learning).
1.3. Mục tiêu
– Tìm hiểu và nghiên cứu về những khó khăn mà các bạn học sinh, sinh viên
đang phải đối mặt.
– Đưa ra các giải phải để hỗ trợ, giải quyết các khó khăn đó. Đặc biệt là các giải
pháp về công nghệ.
– Xây dựng ứng dụng để hiện thực hoá các giải pháp này. – Nâng cao kĩ năng
chuyên môn xây dựng ứng dụng di động, thiết kế giao diện người dùng cũng

như thiết kế hệ thống back-end.

3

1.4. Phương pháp thực hiện
Thực hiện đề tài theo các bước:
– Phân tích đề tài.
– Lấy khảo sát từ các bạn học sinh, sinh viên để hiểu thêm về những vấn đề khó
khăn trong học tập.
– Tham khảo các mạng xã hội hỗ trợ học tập hiện có trên thị trường. –


Nghiên cứu các công nghệ để áp dụng.
– Phát triển ứng dụng.
– Đưa cho các bạn học sinh, sinh viên sử dụng thử để lấy ý kiến phản hồi. –
Kiểm thử và hồn thiện ứng dụng.
Những cơng nghệ được sử dụng:
– Front-end:
• Flutter Framework.
• Google Maps API.
– Back-end:
• Spring Framework:
o Spring boot
o Spring secutiry
• Microservices architecture:
o Netflix’s Zuul
o Netflix’s Eureka
• SQL:
o mySQL
• NoSQL:

o Redis
• Others:
o AWS
o SMTP Gmail

4

1.5. Ý nghĩa thực tiễn
Tạo ra một cộng đồng lớn các bạn học sinh, sinh viên thể kết nối với nhau, có
cùng 1 mục tiêu chung là giúp đỡ nhau trong học tập.
1.6. Kết quả dự kiến
– Nắm được các kiến thức cơ bản về Flutter, có thể sử dụng để xây dựng frontend cho ứng dụng di động.
– Hiểu rõ về các khái niệm, cách thức hoạt động của kiến trúc Microservices,


có thể tự thiết kế 1 hệ thống Microservices hồn chỉnh.
– Áp dụng tất cả kiến thức tìm hiểu được xây dựng ứng dụng mạng xã hội hỗ
trợ học tập với các tính năng chính:
• Tạo tài khoản, đăng nhập, đăng xuất, xử lý qn mật khẩu. •
Tìm kiếm, kết bạn.
• Hỏi – đáp bài tập: đăng câu hỏi về những vấn đề thắc mắc trong học tập,
những người khác có thể xem và trả lời những câu hỏi đó; sắp xếp và tìm
kiếm các câu hỏi theo những mơn học hoặc chủ đề khác nhau; lưu trữ
những câu hỏi, câu trả lời hay vào kho cá nhân, …
• Xây dựng nhóm hỗ trợ học tập: tạo các hội nhóm để có thể chia sẻ kiến
thức, tài liệu học tập; mời bạn bè vào nhóm học tập; lưu trữ các bài
viết, tài liệu, hình ảnh được chia sẻ trong nhóm học tập vào kho lưu
trữ cá nhân; đánh giá các bài viết, tài liệu, hình ảnh mà người khác
chia sẻ trong nhóm vào kho lưu trữ cá nhân, …
• Tìm gia sư: đăng bài tìm người hướng dẫn về mơn học nào đó, những

người khác có thể xem và đăng ký làm gia sư.
• Xem và chia sẻ thơng tin về: các cuộc thi học thuật, các buổi seminar,
training, các hoạt động ngoại khoá; đặt nhắc nhở về sự kiện sắp diễn
ra; chia sẻ sự kiện với bạn bè; tìm kiếm địa điểm diễn ra sự kiện
thông qua API của Google Map; …
• Nhận thơng báo về các thơng tin liên quan.

5

Chương 2. TÌM HIỂU VỀ CÁC CƠNG NGHỆ SẼ SỬ DỤNG
2.1. Flutter
2.1.1. Giới thiệu về Flutter
– Flutter là một SDK mới của google dành cho các thiết bị di động giúp
developers và designers xây dựng nhanh chóng ứng dụng dành cho các thiết
bị di động (Android, iOS).
– Flutter bao gồm Reactive framework và công nghệ hiển thị 2D (2D rendering
engine) và các công cụ phát trển (development tool). Các thành phần này
làm việc cùng nhau giúp ta thiết kế, xây dựng, test, debug ứng dụng.


Hình 2.1: Kiến trúc Flutter

– Flutter đã tạo ra một khái niệm "mới" đó là widget. Widget chính là nền tảng
của Flutter, một widget miêu tả một phần của giao diện người dùng. Tất cả
các component như text, image, button hay animation, theme, layout hay
thậm chí app cũng là 1 widget. Trong Flutter tất cả các widget hay giao diện
đều được code bằng dart [2].

6


Hình 2.2: Vịng đời của Widget

– Khi một widget thay đổi trạng thái, chẳng hạn như do người dùng click hay
animation, widget sẽ tự xây dựng lại theo trạng thái mới. Điều này tiết kiệm
thời gian của nhà phát triển bởi vì UI có thể được mô tả như là một state
functions. Ta không phải viết thêm code để chỉ update UI khi state change.
– Flutter hỗ trợ Hotreload giúp ta nhanh chóng và dễ dàng thử nghiệm, xây
dựng giao diện thêm tính năng và sửa lỗi mà không cần khởi động lại
chúng.


2.1.2. Ngơn ngữ lập trình Dart
– Dart là ngơn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và
sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn. Nó được sử
dụng để xây dựng các ứng dụng web, server, máy tính để bàn và thiết bị di
động.
– Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế
garbage-collected, sử dụng cú pháp kiểu C để dịch mã tùy ý sang
JavaScript. Nó hỗ trợ interface, mixin, abstract, generic, static typing và
sound type (2 cái cuối có thể hiểu là type-safe). Dart là ngơn ngữ mã nguồn
mở và miễn phí, được phát triển trên GitHub [3].

7

– Ưu điểm:
• Năng suất: Cú pháp Dart rõ ràng và súc tích, cơng cụ của nó đơn giản
nhưng mạnh mẽ. Type-safe giúp bạn xác định sớm các lỗi tinh tế. Dart
có các thư viện cốt lõi và một hệ sinh thái gồm hàng ngàn package.
• Nhanh: Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có
được dự đốn hiệu suất cao và khởi động nhanh trên các thiết bị di động

và web.
• Di động: Dart biên dịch thành mã ARM và x86, để các ứng dụng di động
của Dart có thể chạy tự nhiên trên iOS, Android và hơn thế nữa. Đối với
các ứng dụng web, chuyển mã từ Dart sang JavaScript.
• Dễ gần: Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú
pháp và định hướng đối tượng khơng gây ngạc nhiên của nó. Nếu bạn
đã biết C ++, C # hoặc Java, bạn có thể làm việc hiệu quả với Dart chỉ
sau vài ngày.
• Reactive: Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản
lý các đối tượng tồn tại trong thời gian ngắn, chẳng hạn như các widget
UI, thông qua phân bổ đối tượng nhanh và GC. Dart hỗ trợ lập trình
khơng đồng bộ thơng qua các tính năng ngơn ngữ và API sử dụng các
đối tượng Future và Stream.
– Nhược điểm:
• Cịn khá mới nên tài liệu cịn hạn chế. Có ít sự hỗ trợ từ cộng đồng.


2.1.3. Ứng dụng vào đề tài
Sử dụng Flutter Framework để lập trình cho giao diện của ứng dụng.

8

2.2. Spring framework
2.2.1. Giới thiệu về Spring Framework

Hình 2.3: Kiến trúc Spring Framework

– Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi
hàng triệu lập trình viên. Nó giúp tạo các ứng dụng có hiệu năng cao, dễ
kiểm thử, sử dụng lại code…

– Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là:
Dependency Injection và Aspect Oriented Programming.
– Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát
triển Java Desktop, ứng dụng mobile, Java Web. Mục tiêu chính của


Spring là giúp phát triển các ứng dụng J2EE một cách dễ dàng hơn dựa
trên mơ hình sử dụng POJO (Plain Old Java Object) [4].

9
– Spring được chia làm nhiều module khác nhau, tùy theo mục đích phát

triển ứng dụng mà ta dùng 1 trong các module đó.
2.2.2. Ngơn ngữ lập trình Kotlin
– Kotlin là một ngơn ngữ ngữ dụng kiểu tĩnh dành cho Java Virtual Machine.
Nó được tạo ra bởi JetBrains, Kotlin chạy trên JVM và sử dụng các cơng
cụ và thư viện hiện có của Java. Và ngược lại Java cũng có thể sử dụng
các item được xây dựng trong Kotlin [5].
– Ưu điểm:
• Có thể thay thế cho Java: Một trong những thế mạnh lớn nhất của
Kotlin như là một ứng viên để thay thế cho Java là khả năng tương tác
rất tốt giữa Java và Kotlin — bạn có thể thậm chí có code Java và
Kotlin tồn tại song song trong cùng dự án, và tất cả mọi thứ vẫn sẽ
được biên dịch một cách hoàn hảo. Vì Kotlin là hồn tồn tương thích
với Java, nên cũng có thể sử dụng phần lớn các thư viện Java và các
framework trong dự án Kotlin của bạn—thậm chí nâng cao các
framework dựa vào chú thích xử lý.
• Dễ học: Kotlin nhằm mục đích là nâng cao hơn so vớiJava, chứ khơng
phải hồn tồn viết lại, rất nhiều các kỹ năng đã có trong việc code
Java của bạn vẫn được áp dụng đối với dự án Kotlin. Kotlin cũng

được thiết kế để có thể dễ học cho các nhà phát triển Java. Những nhà
phát triển Java sẽ cảm thấy rằng hầu hết cú pháp của Kotlin đều quen
thuộc.
• Code ngắn gọn hơn: code viết trong Kotlin thường sẽ gọn gàng hơn
nhiều và nhỏ gọn hơn so với những gì được viết bằng Java. – Nhược điểm:
• Cộng đồng nhỏ hơn và ít có sẵn trợ giúp: Vì Kotlin là một ngôn ngữ
tương đối mới, nên cộng đồng Kotlin vẫn còn khá nhỏ, đặc biệt là so
với cộng đồng của ngôn ngữ khác như Java. Nếu bạn chuyển đổi sang


10
Kotlin, thì bạn có thể khơng có được truy cập vào cùng một số hướng

dẫn, bài đăng trên blog, và tài liệu hướng dẫn sử dụng, và có thể gặp ít
hỗ trợ từ cộng đồng về những nơi như các diễn đàn và Stack
Overflow.
• Code khơng dễ đọc đối với người mới học: Mặc dù cú pháp ngắn gọn
của Kotlin là một trong những thế mạnh lớn nhất của ngôn ngữ, nhưng
bạn có thể thấy một số khó khăn ban đầu, đơn giản bởi vì có rất nhiều
thứ đang được thực hiện trong một số lượng nhỏ code đó. Java có thể
dài dịng hơn, nhưng ngược lại tất cả mọi thứ đều rõ ràng, có nghĩa là
những người khơng quen code Java có xu hướng dễ dàng hơn để hiểu
so Kotlin
2.2.3. Ứng dụng vào đề tài
Sử dụng Spring Framework (ngôn ngữ lập trình Kotlin) để lập trình cho
back-end server của ứng dụng.
2.3. Microservices
Ý tưởng của Microservices là chia nhỏ ứng dụng lớn ra thành nhiều services
nhỏ kết nối với nhau. Mỗi service nhỏ thực hiện một tập các chức năng liên
quan với nhau, có thể chạy riêng biệt, phát triển và triển khai độc lập. Khi vận

hành, mỗi service sẽ được chạy trên một máy ảo hoặc Docker container [6].
2.3.1. Ưu điểm
– Cho phép dễ dàng triển khai các ứng dựng lớn, phức tạp:


Cải thiện khả năng bảo trì - mỗi service tương đối nhỏ do đó dễ hiểu
và thay đổi hơn



Khả năng testing dễ dàng hơn - các services nhỏ hơn và nhanh hơn để
test



Khả năng triển khai tốt hơn - các services có thể được triển khai độc
lập



11
Cho phép các services được phát triển bởi những team khác nhau. Mỗi

team có thể phát triển, thử nghiệm, triển khai và mở rộng quy mô


dịch vụ của mình một cách độc lập với tất cả các team khác.


Giảm thiểu rủi ro: Nếu có lỗi trong một service thì chỉ có service đó bị

ảnh hưởng. Các services khác sẽ tiếp tục xử lý các yêu cầu. Trong khi
đó, một thành phần hoạt động sai của kiến trúc một khối có thể làm
ảnh hưởng tồn bộ hệ thống.



Dễ dàng thay đổi sử dụng các công nghệ mới: Khi triển khai các
services bạn có thể lựa chọn nhiều cơng nghệ mới. Tương tự khi có
thay đổi lớn đối với các services hiện có bạn có thể dễ dàng thay đổi
cơng nghệ.

2.3.2. Nhược điểm
– Phải

đối phó với sự phức tạp của việc tạo ra một hệ thống phân tán: •

Cần implement việc communication giữa các inter-services.


Handle partial failure là rất phức tạp vì một luồng xử lý cần đi qua
nhiều services.


Việc thực hiện các requests trải rộng trên nhiều services khó khăn
hơn, điều này cũng địi hỏi sự phối hợp cẩn thận giữa các teams.



Khó khăn trong việc đảm bảo toàn vẹn CSDL nếu triển khai theo
kiến trúc cơ sở dữ liệu phân vùng.


– Triển khai và quản lý microservices nếu làm thủ công theo cách đã làm
với ứng dụng một khối phức tạp hơn rất nhiều.
– Phải xử lý sự cố khi kết nối chậm, lỗi khi thông điệp không gửi được
hoặc thông điệp gửi đến nhiều đích đến vào các thời điểm khác nhau.

12

2.3.3. Ứng dụng vào đề tài
Sử dụng kiến trúc Microservices để thiết kế hệ thống server cho ứng
dụng.
2.4. Netflix OSS


Hình 2.4: Các dịch vụ của Netflix OSS
2.4.1. API Gateway: Netflix Zuul
API Gateway có thể coi là một cổng trung gian, nó là cổng vào duy nhất tới
hệ thống microservices. API gateway sẽ nhận các requests từ phía client,
chỉnh sửa, xác thực và điều hướng chúng đến các API cụ thể trên các services
phía sau. [7]
2.4.1.1.Ưu điểm
• Che dấu được cấu trúc của hệ thống microservices với bên ngoài:
Clients sẽ tương tác với hệ thống của chúng ta thông qua api gateway
chứ không gọi trực tiếp tới một services cụ thể, các

13
endpoints của các services sẽ chỉ được gọi nội bộ, tức là gọi giữa các

services với nhau hoặc được gọi từ API gateway, người dùng sẽ gọi
các api này thơng qua các public endpoints từ API Gateway. Chính vì

vậy cho nên phía client khơng cần và cũng khơng thể biết được các
services phía backend được phân chia như thế nào, việc refactor code
frontend cũng dễ dàng hơn đối với lập trình viên.
• Phần code phía frontend sẽ gọn gàng hơn: Vì khơng phải tracking nhiều
endpoints, tất cả chỉ việc gọi đến api gateway nên phần code frontend
sẽ gọn gàng hơn so với việc phải tracking hàng tá endpoints trên từng
services một, nhất là khi mà hệ thống ngày một phình to ra.


• Dễ dàng theo dõi và quản lý traffic: Hầu hết các hệ thống API gateway
phổ biến hiện nay đều sẽ đi kèm tính năng theo dõi và quản lý lượng
traffic bằng GUI hoặc thông qua các APIs của hệ thống Gateway.
• Requests caching và cân bằng tải: API Gateway sẽ kiêm ln vai trị
load balancer của hệ thống, requests sẽ không được gửi trực tiếp đến
backend nên sẽ giảm thiểu được rủi ro hệ thống bị quá tải.
• Thêm một lớp bảo mật nữa cho hệ thống: API gateway giúp ngăn chặn
các cuộc tấn công bằng cách thêm một lớp bảo vệ các loại tấn công
như ddos, slq injections,...
2.4.1.2. Nhược điểm
• Tăng thời gian response: Vì phải đi qua server trung gian cho nên việc
response sẽ bị trễ hơn so với việc gọi trực tiếp tới hệ thống. • Thêm tác
nhân gây lỗi: Để sử dụng API Gateway thì chúng ta sẽ phải config, rồi
chỉnh sửa code, quản lý server gateway, bla bla...Khiến cho chúng ta có
thêm việc phải lo, chẳng may gateway có lỗi thì requests sẽ khơng thể tới
được phía server.

14
• Có thể gây nghẽn: Nếu như khơng được scale hay config hợp lý thì

gateway sẽ có thể bị quá tải và làm chậm hệ thống của chúng ta. • Tốn

thêm tiền: Tiền server, tiền điện, tiền quản lý hệ thống api gateway, với hệ
thống lớn cần các tính năng xịn sị thì cịn tốn thêm tiền mua bản
Enterpise của các api gateway nữa này, tính ra cũng không rẻ chút nào cả.
2.4.2. Service discovery: Netflix Eureka
Service discovery là nơi lưu trữ thơng tin của tồn bộ services trong hệ
thống Microservices. Khi service được khởi động, nó sẽ gửi thơng tin và
địa chỉ IP của mình tới Eureka. Sau đó Eureka cho nhiệm vụ lưu trữ và
quản lý chúng.
2.4.3. Ứng dụng vào đề tài
Sử dụng Netflix Zuul làm API Gateway, Netflix Eureka làm Service
discovery cho back-end của ứng dụng.


2.5. Redis
Redis (REmote DIctionary Server) là một mã nguồn mở được dùng để lưu trữ
dữ liệu có cấu trúc, có thể sử dụng như một database, bộ nhớ cache hay một
message broker [8].

Hình 2.5: Logo redis

15
2.5.1. Các ứng dụng của Redis


Caching: Sử dụng làm bộ nhớ đệm. Chính tốc độ đọc ghi nhanh mà
Redis có thể làm bộ nhớ đệm, nơi chia sẻ dữ liệu giữa các ứng dụng
hoặc làm database tạm thời. Ngồi ra Redis có thể sử dụng để làm Full
Page Cache cho website. Cũng vì tính nhất quán của Redis, cho dù
restart Redis thì người dùng cũng khơng có cảm nhận chậm khi tải
trang.




Counter: Sử dụng làm bộ đếm. Với thuộc tính tăng giảm thơng số rất
nhanh trong khi dữ liệu được lưu trên RAM, sets và sorted sets được
sử dụng thực hiện đếm lượt view của một website, các bảng xếp hạng
trong game chẳng hạng. Redis hỗ trợ thread safe do đó nó có thể đồng
bộ dữ liệu giữa các request.

– Publish/Suscribe

(Pub/Sub): Tạo kênh chia sẻ dữ liệu. Redis hỗ trợ tạo

các channel để trao đổi dữ liệu giữa publisher và subscriber giống như
channel trong Socket Cluster hay topic trong Apache Kafka. Ví dụ:
Pub/Sub được sử dụng theo dõi các kết nối trong mạng xã hội hoặc
các hệ thống chat.
– Queues:

Tạo hàng đợi để xử lý lần lượt các request. Redis cho phép lưu


×