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

KHÓA LUẬN TỐT NGHIỆP XÂY DỰNG MẠNG XÃ HỘI CHO NHỮNG NGƯỜI YÊU THÚ CƯ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 (7.32 MB, 183 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 DUY CƯƠNG
VI CHÍ THIỆN

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

XÂY DỰNG MẠNG XÃ HỘI CHO NHỮNG NGƯỜI YÊU
THÚ CƯNG
Build a social network for pet lovers

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

TP. HỒ CHÍ MINH, 2021


ĐẠ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 DUY CƯƠNG – 16520147
VI CHÍ THIỆN – 16521169

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

XÂY DỰNG MẠNG XÃ HỘI CHO NHỮNG NGƯỜI YÊU
THÚ CƯNG


Build a social network for pet lovers

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


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.


LỜI CẢM ƠN
Để hoàn thành tốt đề tài luận văn tốt nghiệp này, với tình cảm chân thành, chúng em
bao gồm Nguyễn Duy Cương và Vi Chí Thiện xin bày tỏ lịng biết ơn sâu sắc tới
trường Đại học Cơng nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh đã
xây dựng một mơi trường học tập chất lượng, hiện đại và năng động, tạo điều kiện để
chúng em học hỏi, phát triển tối đa bản thân. Xin chúc trường ngày càng phát triển,
hiện đại và hội nhập hơn, chúc trường ngày càng thể hiện được vị thế trung tâm hàng
đầu về nghiên cứu, đào tạo nguồn nhân lực chất lượng cao trong khu vực châu Á và
thế giới.
Chúng em xin bày tỏ lòng cám ơn thân thương nhất tới các thầy cô trong khoa Công
nghệ Phần mềm, xin cám ơn thầy cô đã truyền đạt những kiến thức và những kinh
nghiệm bổ ích giúp chúng em ứng dụng và hồn thành tốt khóa luận tốt nghiệp lần
này. Xin chúc khoa sẽ chinh phục được những thành tựu mới trong giảng dạy, đào

tạo và nghiên cứu, xin chúc các thầy cơ có thật nhiều sức khoẻ, hạnh phúc để mãi vun
đắp cho sự nghiệp trồng người.
Đặt biệt, chúng em xin trân trọng gửi lời cảm ơn tới người thầy đáng kính Ngũn
Cơng Hoan đã dẫn dắt, cố vấn, tiếp sức cho chúng em trong suốt thời sinh viên về
học tập, công việc, cuộc sống. Thầy là người trực tiếp nhận trách nhiệm hướng dẫn
và giúp đỡ chúng em hoàn thành xuất sắc đề tài luận văn tốt nghiệp này. Xin cám ơn
thầy, chúc thầy luôn luôn mạnh khoẻ, hạnh phúc và thành công.
Chúng em xin chân thành cảm ơn!
TP. Hồ Chí Minh, ngày 15 tháng 1 năm 2021
Nguyễn Duy Cương
Vi Chí Thiện


MỤC LỤC
Chương 1.

MỞ ĐẦU .............................................................................................2

1.1. Lý do chọn đề tài ...........................................................................................2
1.2. Mục đích ........................................................................................................3
1.3. Đối tượng .......................................................................................................3
1.4. Phạm vi nghiên cứu .......................................................................................4
Chương 2.

TỔNG QUAN .....................................................................................6

2.1. Tình hình mạng xã hội ở Việt Nam ...............................................................6
2.2. Tổng quan thị trường thú cưng ......................................................................7
2.3. Thị trường mạng xã hội thú cưng ..................................................................7
2.4. Tầm nhìn phát triển của dự án 4Pet ...............................................................8

2.5. Bài tốn giải quyết trong khoá luận ...............................................................8
2.5.1.

Xây dựng phiên bản MVP ...................................................................9

2.5.2.

Xây dựng hệ thống hiệu năng cao, dễ dàng mở rộng ..........................9

Chương 3.

CƠ SỞ LÝ THUYẾT ........................................................................10

3.1. Lý thuyết về sản phẩm và quy trình phát triển phần mềm ..........................10
3.1.1.

MVP ..................................................................................................10

3.1.1.1. MVP là gì? .....................................................................................10
3.1.1.2. Ý nghĩa của MVP ..........................................................................11
3.1.2.

Agile và Scrum ..................................................................................11

3.1.2.1. Tổng quan về Agile .......................................................................11
3.1.2.2. Tổng quan về Scrum ......................................................................12
3.1.3.

Quản lý dự án với Trello ...................................................................14


3.2. Lý thuyết về ứng dụng di động ....................................................................15


3.2.1.

Flutter ................................................................................................15

3.2.1.1. Flutter là gì? ...................................................................................15
3.2.1.2. Lý do chọn flutter ..........................................................................15
3.2.2.

Google Play Console .........................................................................16

3.3. Lý thuyết về kiến trúc hệ thống ...................................................................17
3.3.1.

Tổng quan về kiến trúc Microservice ................................................17

3.3.1.1. Kiến trúc Monolithic......................................................................17
3.3.1.2. Kiến trúc Microservice ..................................................................19
3.3.2.

Tìm hiểu về CQRS (Command Query Responsibility Segregation) 22

3.3.2.1. Mơ hình MVC................................................................................22
3.3.2.2. Mơ hình 3 lớp ................................................................................23
3.3.2.3. Mơ hình CQRS ..............................................................................26
3.3.2.4. Tóm tắt về 3 mơ hình .....................................................................28
3.3.3.


CDC (Change Data Capture) với Debezium .....................................29

3.3.3.1. CDC là gì? .....................................................................................29
3.3.3.2. Tổng quan về Debezium ................................................................29
3.3.4.

Message Queue ..................................................................................32

3.3.4.1. Message Queue là gì? ....................................................................32
3.3.4.2. Phân loại Message Queue ..............................................................33
3.3.4.3. Tổng quan về Kafka.......................................................................34
3.4. Lý thuyết về công nghệ cho back-end service.............................................36
3.4.1.

Elasticsearch ......................................................................................36

3.4.1.1. Elasticsearch là gì? ........................................................................36
3.4.1.2. Các khái niệm cơ bản.....................................................................37


3.4.1.3. Ưu nhược điểm của Elasticsearch .................................................40
3.4.2.

Tổng quan về gRPC ..........................................................................41

3.4.2.1. RPC ................................................................................................41
3.4.2.2. Protobuf .........................................................................................42
3.4.2.3. gRPC ..............................................................................................43
3.4.3.


GraphQL ............................................................................................44

3.4.3.1. GraphQL là gì? ..............................................................................44
3.4.3.2. Đặc điểm của GraphQL .................................................................44
3.4.3.3. Lợi ích GraphQL ...........................................................................45
3.4.4.

Docker ...............................................................................................45

3.4.4.1. Tại sao phải dùng Docker? ............................................................45
3.4.4.2. Docker là gì? ..................................................................................46
3.4.4.3. Lợi ích của Docker ........................................................................46
3.4.4.4. Một số khái niệm ...........................................................................47
3.4.4.5. Dockerfile ......................................................................................48
3.4.5.

NodeJS ...............................................................................................49

3.4.5.1. NodeJS là gì? .................................................................................49
3.4.5.2. Các đặc tính của NodeJS ...............................................................49
3.5. Lý thuyết về DevOps ...................................................................................50
3.5.1.

Kubernetes .........................................................................................50

3.5.1.1. Tổng quan về Kubernetes ..............................................................50
3.5.1.2. Kiến trúc Kubernetes .....................................................................52
3.5.1.3. Các thành phần của Kubernetes .....................................................53
3.5.2.


CI/CD ................................................................................................55


3.5.2.1. CI/CD là gì? ...................................................................................55
3.5.2.2. CI/CD với GitHub Actions ............................................................56
3.5.3.

Google Cloud ....................................................................................58

3.5.3.1. Google Cloud là gì? .......................................................................58
3.5.3.2. Những dịch vụ Google Cloud cấp cao...........................................59
Chương 4.

Giải quyết vấn đề ...............................................................................61

4.1. GraphQL hiệu năng cao với HTTP/2 ..........................................................61
4.1.1.

Tổng quan về kiến trúc hệ thống .......................................................61

4.1.2.

Vấn đề của GraphQL với HTTP/1.1 .................................................62

4.1.3.

Triển khai GraphQL với HTTP/2 ......................................................64

4.2. Kiến trúc Microservices...............................................................................67
4.2.1.


Gateway service ................................................................................68

4.2.1.1. Schema Stitching ...........................................................................68
4.2.1.2. Authentication / Authorization ......................................................69
4.2.1.3. API Document ...............................................................................71
4.2.2.

Các microservice ...............................................................................72

4.2.3.

GraphQL PubSub ..............................................................................73

4.2.4.

Database ............................................................................................74

4.2.4.1. SQL ................................................................................................74
4.2.4.2. NoSQL ...........................................................................................74
4.2.4.3. Elasticsearch ..................................................................................75
4.3. Hệ thống realtime với Kafka và GraphQL Subscription .............................75
4.3.1.

Vấn đề áp dụng ..................................................................................75

4.3.2.

Triển khai hệ thống realtime .............................................................76



4.4. Tối ưu luồng Read và Write cho database với Change Data Capture(CDC)
77
4.5. Tối ưu Elasticsearch model với Kafka Stream ............................................81
4.6. Kubernetes ...................................................................................................83
4.6.1.

Quản trị Docker image bằng Docker Hub .........................................83

4.6.2.

Triển khai và điều khiển Kubernetes cluster bằng kubectl ...............84

4.6.3.

Quản lý Kubernetes một cách trực quan bằng K9S ..........................87

4.6.4.

Định nghĩa Secret và ConfigMap ......................................................88

4.6.5.

Định nghĩa Deployment ....................................................................90

4.6.6.

Định nghĩa Volume ...........................................................................92

4.6.7.


Định nghĩa Service ............................................................................94

4.6.8.

Cấu hình Ingress ................................................................................96

4.6.9.

Horizontal Pod Autoscaler ................................................................97

4.7. CI/CD...........................................................................................................98
4.7.1.

CI/CD cho 4pet-sdk ...........................................................................98

4.7.2.

CI/CD cho microservice ....................................................................99

Chương 5.

Phân tích thiết kế hệ thống ..............................................................101

5.1. Kiến trúc hệ thống .....................................................................................101
5.1.1.

Kiến trúc tổng quan .........................................................................101

5.1.2.


Kiến trúc Microservices: .................................................................102

5.1.3.

Kiến trúc database ...........................................................................103

5.2. Use-case và đặc tả......................................................................................104
5.2.1.

Danh sách actor ...............................................................................104

5.2.2.

Danh sách use-case của hệ thống 4Pet ............................................104


5.2.3.

Đặc tả use-case ................................................................................106

5.2.3.1. Login ............................................................................................106
5.2.3.2. Story .............................................................................................107
5.2.3.3. Notification ..................................................................................108
5.2.3.4. Chat ..............................................................................................109
5.2.3.5. Discover .......................................................................................110
5.2.3.6. Profile ..........................................................................................111
5.2.3.7. Logout ..........................................................................................112
5.3. Thiết kế cơ sở dữ liệu ................................................................................114
5.3.1.


Cơ sở dữ liệu của auth service.........................................................114

5.3.1.1. Mô tả lớp account ........................................................................114
5.3.1.2. Mô tả bảng user ...........................................................................115
5.3.1.3. Mô tả bảng social_account ..........................................................116
5.3.1.4. Mô tả bảng thông tin người theo dõi ...........................................117
5.3.2.

Cơ sở dữ liệu của media service ......................................................118

5.3.2.1. Mô tả bảng media ........................................................................119
5.3.2.2. Mô tả bảng storage.......................................................................119
5.3.3.

Cơ sở dữ liệu của story service .......................................................120

5.3.3.1. Mô tả bảng story ..........................................................................121
5.3.3.2. Mô tả bảng comment ...................................................................121
5.3.3.3. Mô tả bảng comment_media .......................................................122
5.3.3.4. Mô tả bảng story_media ..............................................................123
5.3.4.

Cơ sở dữ liệu của notification service .............................................124

5.3.5.

Cơ sở dữ liệu của reaction service...................................................125



5.3.6.

Cơ sở dữ liệu của chat service .........................................................127

5.4. Thiết kế giao diện ......................................................................................128
5.4.1.

Màn hình đăng nhập: .......................................................................128

5.4.2.

Màn hình story .................................................................................130

5.4.3.

Màn hình hiển thị danh sách bình luận. ..........................................132

5.4.4.

Màn hình create story ......................................................................133

5.4.5.

Màn hình tạo story với danh sách hình ảnh và video ......................134

5.4.6.

Hình ảnh nội dung story ..................................................................135

5.4.7.


Màn hình discover ...........................................................................136

5.4.8.

Màn hình tìm kiếm story và user .....................................................137

5.4.9.

Màn hình kết quả tìm kiếm story.....................................................138

5.4.10.

Màn hình kết quả tìm kiếm user ......................................................139

5.4.11.

Màn hình thơng báo .........................................................................140

5.4.12.

Màn hình danh sách đoạn hội thoại .................................................141

5.4.13.

Màn hình chi tiết hội thoại ..............................................................142

5.4.14.

Màn hình thêm mới một hội thoại ...................................................143


5.4.15.

Màn hình profile ..............................................................................144

5.4.16.

Màn hình follower ...........................................................................145

5.4.17.

Màn hình sửa đổi profile .................................................................146

Chương 6.

Cài đặt và triển khai hệ thống ..........................................................147

6.1. Cài đặt và triển khai hệ thống trên Azure Kubernetes Service (AKS) ......147
6.1.1.

Tài nguyên chuẩn bị ........................................................................147

6.1.2.

Cài đặt Azure CLI, kubectl và k9s ..................................................147

6.1.2.1. Cài đặt Azure CLI ........................................................................147


6.1.2.2. Cài đặt kubectl .............................................................................147

6.1.2.3. Cài đặt k9s ...................................................................................148
6.1.3.

Khởi tạo Kubernetes cluster instance trên Azure Kubernetes Service

(AKS)

148

6.1.3.1. Đăng nhập Azure từ Azure CLI...................................................148
6.1.3.2. Tạo một resource group ...............................................................149
6.1.3.3. Lấy danh sách các phiên bản Kubernetes sẵn có theo khu vực ...150
6.1.3.4. Tạo một Cluster ...........................................................................152
6.1.3.5. Xác nhận AKS Cluster đã tồn tại.................................................153
6.1.3.6. Đặt AKS Cluster là context mặc định của kubectl .....................155
6.1.4.

Triển khai hệ thống..........................................................................155

6.1.4.1. Cấu trúc source code:...................................................................155
6.1.4.2. Áp dụng cấu hình hệ thống lên Azure Kubernetes Service (AKS)
157
6.2. Cài đặt triển khai ứng dụng di động: .........................................................157
6.2.1.

Yêu cầu hệ thống: ............................................................................157

6.2.2.

Chạy chương trình ...........................................................................158


Chương 7.

Kết luận ...........................................................................................159

Chương 8.

Hướng phát triển ..............................................................................160

8.1. Trong thời gian ngắn hạn:..........................................................................160
8.2. Trong 1 năm tới: ........................................................................................160


DANH MỤC HÌNH
Hình 3.1:

MVP là gì? ............................................................................................10

Hình 3.2:

4Pet sử dụng Trello để quản lý dự án ...................................................14

Hình 3.3:

Kiến trúc Monolithic .............................................................................17

Hình 3.4:

Kiến trúc Microservice .........................................................................20


Hình 3.5:

Mơ hình MVC .......................................................................................22

Hình 3.6:

Mơ hình 3 lớp........................................................................................25

Hình 3.7:

Mơ hình CQRS .....................................................................................27

Hình 3.8:

Kiến trúc Debezium ..............................................................................30

Hình 3.9:

Message Queue là gì? ...........................................................................32

Hình 3.10:

Point to point .....................................................................................33

Hình 3.11:

Publisher - Subscriber .......................................................................33

Hình 3.12:


Cấu trúc của Kafka cơ bản ................................................................34

Hình 3.13:

Cấu trúc của Kafka chi tiết ................................................................35

Hình 3.14:

Mơ hình giao tiếp client/server trong RPC........................................42

Hình 3.15:

Benchmarking Protocol Buffers, JSON, and XML in Go.................43

Hình 3.16:

gRPC technology stack .....................................................................43

Hình 3.17:

Kiến trúc của GraphQL .....................................................................45

Hình 3.18:

Truy vấn GraphQL ............................................................................45

Hình 3.19:

Kiến trúc của Docker .........................................................................47


Hình 3.20:

Kiến trúc Kubernetes .........................................................................52

Hình 3.21:

Một trong những file cấu hình GitHub Actions của 4Pet. ................57

Hình 3.22:

Kết quả chạy GitHub Actions ...........................................................58


Hình 4.2:

Kiến trúc cơ bản của hệ thống với GraphQL sử dụng HTTP/1.1 .........62

Hình 4.3:

So sánh REST và gRPC về response time ............................................63

Hình 4.4:

So sánh REST và gRPC về throughput ................................................63

Hình 4.5:

Kiến trúc cơ bản của hệ thống với GraphQL sử dụng HTTP/2 ............64

Hình 4.6:


Kiến trúc của hệ thống với GraphQL và gRPC ....................................65

Hình 4.7:

Triển khai GraphQL server với HTTP2 ...............................................66

Hình 4.8:

Kiến trúc microservices của 4Pet .........................................................67

Hình 4.9:

Schema Stitching ..................................................................................68

Hình 4.10:

GraphQL Playground Web ................................................................72

Hình 4.11:

GraphQL Subscription tích hợp với Kafka. ......................................74

Hình 4.12:

Hệ thống realtime cơ bản. .................................................................76

Hình 4.13:

Kiến trúc realtime sử dụng Kafka và GraphQL Subscription. ..........77


Hình 4.14:

Sử dụng Kafka và Debezium để đồng bộ dữ liệu từ PostgreSQL sang

Elasticsearch. 78
Hình 4.15:

Định nghĩa Kafka và Debezium bằng Docker Compose ..................79

Hình 4.16:

Control Center Overview ..................................................................80

Hình 4.17:

Control Center Topics .......................................................................80

Hình 4.18:

Control Center Connect .....................................................................81

Hình 4.19:

Cấu trúc model của Elasticsearch. .....................................................81

Hình 4.20:

Sử dụng Kafka Stream để tổng hợp model cho Elasticsearch. .........82


Hình 4.21:

Mơ hình microservices triển khai sử dụng Kubernetes .....................83

Hình 4.22:

Một Docker image của dự án 4pet trên Docker Hub ........................84

Hình 4.23:

Lệnh get .............................................................................................85

Hình 4.24:

Lệnh describe ....................................................................................85


Hình 4.25:

Lệnh delete ........................................................................................86

Hình 4.26:

Lệnh apply .........................................................................................86

Hình 4.27:

lệnh logs.............................................................................................86

Hình 4.28:


Lệnh autoscale ...................................................................................86

Hình 4.29:

Danh sách các pod của 4pet’s Kubernetes cluster.............................87

Hình 4.30:

Danh sách các container của một pod ...............................................88

Hình 4.31:

Log của một container .......................................................................88

Hình 4.32:

Một file Secret của dự án 4Pet ..........................................................89

Hình 4.33:

Một file ConfigMap của dự án 4Pet ..................................................90

Hình 4.34:

Một file Deployment của dự án 4Pet.................................................91

Hình 4.35:

Một file Storage Class của dự án 4Pet ..............................................92


Hình 4.36:

Một file Volume của dự án 4Pet .......................................................93

Hình 4.37:

Một file Service của dự án 4Pet ........................................................95

Hình 4.38:

Một file Ingress của dự án 4Pet .........................................................96

Hình 4.39:

Một file Horizontal Pod Autoscaler của dự án 4Pet ..........................97

Hình 4.40:

CI/CD cho 4pet-sdk ...........................................................................98

Hình 4.41:

Kết quả chạy CI/CD ..........................................................................98

Hình 4.42:

CI/CD cho microservice ....................................................................99

Hình 4.43:


Kết quả chạy CI/CD ........................................................................100

Hình 5.2:

Kiến trúc microservice ........................................................................102

Hình 5.3:

Kiến trúc database ...............................................................................103

Hình 5.4:

Use-case hệ thống mạng xã hội cho thú cưng ....................................104

Hình 5.5:

Sơ đồ database auth service ................................................................114

Hình 5.6:

Sơ đồ database của media service .......................................................118


Hình 5.7:

Cơ sở dữ liệu của story service ...........................................................120

Hình 5.8:


Bảng thơng báo ...................................................................................124

Hình 5.9:

Cơ sở dữ liệu của chat service ............................................................127

Hình 5.10:

Màn hình login ................................................................................129

Hình 5.11:

Màn hình story .................................................................................131

Hình 5.12:

Màn hình comment ..........................................................................132

Hình 5.13:

Màn hình tạo story bước 1...............................................................133

Hình 5.14:

Màn hình tạo story với danh sách hình ảnh và video ......................134

Hình 5.15:

Màn hình tạo nội dung cho story .....................................................135


Hình 5.16:

Màn hình discovery .........................................................................136

Hình 5.17:

Màn hình tìm kiếm user và story. ....................................................137

Hình 5.18:

Màn hình kết quả tìm kiếm story.....................................................138

Hình 5.19:

Màn hình kết quả tìm kiếm người dùng. .........................................139

Hình 5.20:

Màn hình danh sách thơng báo ........................................................140

Hình 5.21:

Màn hình danh sách hội thoại..........................................................141

Hình 5.22:

Màn hình chi tiết hội thoại ..............................................................142

Hình 5.23:


Màn hình thêm mới hội thoại ..........................................................143

Hình 5.24:

Màn hình profile ..............................................................................144

Hình 5.25:

Màn hình Follower ..........................................................................145

Hình 5.26:

Màn hình sửa đổi profile .................................................................146

Hình 6.2:

Cài đặt kubectl ....................................................................................148

Hình 6.3:

Cài đặt k9s ..........................................................................................148

Hình 6.4:

Đăng nhập Azure ................................................................................148

Hình 6.5:

Kết quả đăng nhập ..............................................................................149



Hình 6.6:

Tạo resource group. ............................................................................149

Hình 6.7:

Kết quả tạo resource group .................................................................150

Hình 6.8:

Lấy danh sách phiên bản.....................................................................150

Hình 6.9:

Kết quả lấy danh sách .........................................................................151

Hình 6.10:

Tạo Cluster. .....................................................................................152

Hình 6.11:

Kết quả tạo cluster ...........................................................................153

Hình 6.12:

Xác nhận Cluster tồn tại ..................................................................154

Hình 6.13:


Kết quả xác nhận cluster tồn tại. .....................................................154

Hình 6.14:

Đặt AKS Cluster là context mặc định .............................................155

Hình 6.15:

Kết quả đặt AKS Cluster là context mặc định. ...............................155

Hình 6.16:

Kiến trúc thư mục. ...........................................................................156

Hình 6.17:

Áp dụng cấu hình ............................................................................157

Hình 6.18:

Kết quả.............................................................................................157


DANH MỤC BẢNG
Bảng 4.1:

Danh sách microservice của 4Pet .........................................................73

Bảng 4.2:


Bảng nhiệm cụ thể của từng giai đoạn CI/CD trong 4pet sdk .............98

Bảng 4.3:

Bảng nhiệm vụ cụ thể từng giai đoạn ci/cd cho microservice ..............99

Bảng 5.1:

Kiến trúc microservice ........................................................................102

Bảng 5.2:

Danh sách actor ...................................................................................104

Bảng 5.3:

Danh sách use-case .............................................................................105

Bảng 5.4:

Đặc tả use-case login ..........................................................................106

Bảng 5.5:

Đặc tả story .........................................................................................108

Bảng 5.6:

Đặc tả use-case notification ................................................................109


Bảng 5.7:

Đặc tả use-case chat ............................................................................110

Bảng 5.8:

Đặc tả use-case discover .....................................................................111

Bảng 5.9:

Đặc tả use-case profile ........................................................................112

Bảng 5.10:

Đặc tả use-case logout. ....................................................................113

Bảng 5.11:

Mô tả bảng tài khoản .......................................................................115

Bảng 5.12:

Mô tả bảng người dùng ...................................................................116

Bảng 5.13:

Bảng mô tả tài khoản mạng xã hội. .................................................117

Bảng 5.14:


Bảng thông tin người theo dõi. ........................................................117

Bảng 5.15:

Mô tả bảng media ............................................................................119

Bảng 5.16:

Mô tả bảng storage ..........................................................................120

Bảng 5.17:

Bảng mô tả story..............................................................................121

Bảng 5.18:

Bảng mơ tả bình luận.......................................................................122

Bảng 5.19:

Mơ tả comment và media ................................................................123

Bảng 5.20:

Mô tả bảng story_media ..................................................................123


Bảng 5.21:


Mô tả bảng notifications ..................................................................125

Bảng 5.22:

Bảng reaction service ......................................................................125

Bảng 5.23:

Bảng mô tả bảng reactions ..............................................................126

Bảng 5.24:

Mô tả bảng tin nhắn .........................................................................128

Bảng 5.25:

Mô tả của bảng hội thoại .................................................................128


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

STT

Từ viết tắt

Từ đầy đủ

Chú thích

1


4Pet

For Pet

Mạng xã hội dành cho thú cưng.

2

API

Application

Giao diện lập trình ứng dụng

programming interface
3

B2B

Business to Business

Doanh nghiệp với doanh nghiệp

4

B2C

Business to Customer


Doanh nghiệp với khách hàng.

5

CDC

Change data capture

Thu thập thay đổi dữ liệu

6

CI/CD

Continuous Integration /

Tích hợp liên tục và triển khai

Continuous deployment

liên tục

Command Query

Phân tách trách nhiệm truy vấn

7

CQRS


Responsibility
Segregation
8

9

gRPC

HTTP

Google remote

Giao thức gọi thủ tục hàm từ xa

procedure call

được phát triển bởi Google.

Hypertext Transfer

Giao thức truyền tải siêu văn bản

Protocol
10

K8S

Kubernetes

Kubernetes



11

K9S

Giao dòng lệnh cho K8S

12

MVP

Minimum

Viable Sản phẩm khả dụng tối thiểu hay

Product

phiên bản sản phẩm rút gọn.

14

Pub/sub

Publisher/ subscriber

Nhà xuất bản / người đăng ký

15


Rest API

Representational state

Tiêu chuẩn thiết kế giao diện lập

transfer Application

trình ứng dụng

programming interface
16

SQL

Structured Query

Ngơn ngữ truy vấn có cấu trúc

Language
17

STT

Số thứ tự

Số thứ tự trong bảng.

18


UI

User interface

Giao diện người dùng

19

UX

User Experience

Trải nghiệm người dùng


TÓM TẮT KHÓA LUẬN
Khóa luận “Xây dựng mạng xã hội cho những người yêu thú cưng” nhằm mục đích
xây dựng nên một mạng xã hội cho những người thích và yêu thú cưng. Khóa luận
bao gồm 8 chương:
Chương 1: Mở đầu: đặt vấn đề, lý do chọn đề tài, mục đích và phạm vi nghiên cứu
của đề tài.
Chương 2: Tổng quan: nêu ra hiện trạng bài toán mạng xã hội hiện tại đang gặp phải.
Nêu ra các vấn đề của mạng xã hội của thú cưng, đưa ra giải pháp giả định. Phân tích,
nghiên cứu thực trạng các mạng xã hội dành cho thú cưng đang có trên thị trường.
Tìm ra ưu điểm và khuyết điểm từ đó làm rõ vấn đề cần giải quyết, tổng quát hóa
thành mục tiêu cần giải quyết trong khóa luận này
Chương 3: Cơ sở lý thuyết: liệt kê và giải thích rõ các thuật ngữ công nghệ, kỹ thuật
sẽ sử trong khóa luận này.
Chương 4: Giải quyết vấn đề: Trình bày cụ thể phương pháp, giải thích về cách thức
giải quyết bài tốn gặp phải và cơng nghệ áp dụng.

Chương 5: Phân tích thiết kế hệ thống: Đi chi tiết vào việc nghiên cứu và đưa ra kiến
trúc cho hệ thống, kiến trúc cơ sở dữ liệu và thiết kế giao diện người dùng.
Chương 6: Hướng dẫn triển khai và cài đặt hệ thống
Chương 7: Kết luận: đưa ra ý kiến về khóa luận
Chương 6: Hướng phát triển: nêu ra hướng phát triển của ứng dụng sau khi kết thúc
khóa luận và tương lai của ứng dụng.

1


Chương 1. MỞ ĐẦU
1.1.

Lý do chọn đề tài

Ngày nay việc sở hữu cho mình một loại thú cưng là sở thích của rất nhiều người.
Sau những giờ làm việc mệt mỏi, việc tiếp xúc hay thậm chí ngắm nhìn hình ảnh của
chúng thơi cũng mang lại nhiều lợi ích cho sức khỏe, đồng thời giúp cho ta giảm đi
muộn phiền trong cuộc sống, khó khăn trong công việc. Việc sở hữu thú cưng giúp
những người già bớt cô đơn, tăng tuổi thọ và cải thiện chất lượng cuộc sống. Những
người trẻ ngày nay có xu hướng kết hôn muộn, họ lựa chọn nuôi thú cưng (chó hoặc
mèo) để có người bầu bạn, tâm tình sau những giờ làm việc căng thẳng. Chăm sóc
thú cưng cũng là một cách rất tốt để trẻ nhỏ học biết cách chăm sóc, bồi dưỡng tình
cảm. Vì vậy, nhiều gia đình cũng lựa chọn ni thú cưng như những thành viên trong
nhà.
Trong thời điểm 2021 hiện tại, với sự phát triển mạnh của internet và cơ sở hạ tầng
viễn thông, mạng xã hội phát triển một cách bùng nổ và ngày càng thể hiện được vị
thế, vai trị của mình. Facebook, TikTok, Youtube, Instagram, Twitter, LinkedIn,
Reddit,... là một trong những gã khổng lồ hiện tại trên thế giới, tại Việt Nam thì có
Zalo, Mocha, Lotus, Gapo đã khẳng định được chỗ đứng và tầm ảnh hưởng nhất định.

Cộng đồng những yêu thú cưng tập trung phân tán và rải khắp các mạng xã hội theo
kiểu hội, nhóm, kênh,... do vậy nhu cầu chia sẻ, trải nghiệm, kết nối giữa những thành
viên, giữa những người có cùng đam mê hết sức khó khăn. Bên cạnh đó nhu cầu về
quản lý, tương tác bài viết, hình ảnh, video, tài ngun cũng rời rạc, khó kiểm sốt.
Nhu cầu về một mạng xã hội thú cưng là rất thiết yếu trong nhu cầu hiện nay.
4Pet ra đời với sứ mệnh là sân chơi chuyên biệt về tất cả mọi thứ liên quan đến thú
cưng, hội tụ những người yêu thích thú cưng thành một cộng đồng lớn, chất lượng,
là một nơi rất lý tưởng để người dùng tự do, thoải mái chia sẻ những khoảnh khắc thú
vị, vui vẻ, những kinh nghiệm chăm sóc, huấn luyện thú cưng. Tầm nhìn vĩ mơ hơn,
4Pet sẽ là một vũ trụ dành riêng cho thú cưng, nhắc đến thú cưng là nhắc đến 4Pet.

2


1.2.

Mục đích

Học cách phân tích quy mơ thị trường, đối thủ là ai, đặc điểm của những đối thủ là
gì, phân khúc, nhu cầu và đặc trưng của khách hàng.
Xây dựng kế hoạch, các tính năng phù hợp để phát triển sản phẩm dựa trên thời gian
thực hiện, chi phí, nguồn nhân lực.
Xây dựng mạng xã hội dành cho những người yêu thú cưng theo phiên bản MVP
(Minimum Viable Product) nhằm đánh giá, kiểm tra các giả thuyết đã đặt ra về thị
trường, sản phẩm, các phản hồi của người dùng từ đó đưa ra quyết định về chiến lược
phát triển sản phẩm tiếp theo.
Rèn luyện khả năng phân tích nghiệp vụ, phát triển UI / UX, khả năng quản lý và vận
hình quy trình phát triển phần mềm theo Agile / Scrum.
Tiếp cận, xây dựng hệ thống back-end hiệu năng cao ứng dụng kiến trúc
Microservices, CQRS (Command Query Responsibility Segregation).

Triển khai các giải pháp kỹ thuật và công nghệ như Change Data Capture (Kafka,
Debezium), Message Queue (Kafka), Socket, SQL (Postgresql), NoSQL (MongoDB,
Redis), Search Engine (Elasticsearch), HTTP2 (Google Protobuf - gRPC), Container
(Docker),...
Sử dụng Flutter - Dart để phát triển ứng dụng mobile, NodeJS, Kotlin, GraphQL dành
cho API.
Đóng gói, triển khai, quản lý và mở rộng các microservice bằng Kubernetes.
Triển khai CI / CD với GitHub Actions.
Sử dụng dịch vụ Google Cloud và Google Play Console.
1.3.

Đối tượng

Những người sở hữu thú cưng, những người yêu thích, quan tâm đến thú cưng.
Tập trung vào những người có độ tuổi từ 15 - 40.

3


Những người đã sử dụng Facebook, Instagram, TikTok hoặc các mạng xã hội tương
tự.
1.4.

Phạm vi nghiên cứu

Phạm vi địa lý:
● Tập trung chủ yếu vào người dùng ở Việt Nam
● Mở rộng ra các thị trường Philippines và Portugal.
Phạm vi chức năng:
● Login with Facebook: đơn giản, nhanh chóng, bảo mật thông qua tài khoản

Facebook
● Story: tương tác danh sách story của những người đang theo dõi.
● Comment: bình luận story.
● Reaction: “thả tim” (react) cho story, comment.
● Discover: khám phá các story đang thịnh hành.
● Notification: hệ thống thông báo theo thời gian thực, thông báo về hoạt động
người dùng, bạn bè, story, comment, reaction.
● Chat: hỗ trợ nhắn tin giữa bạn bè hoặc người lạ, cho phép gửi media (ảnh).
● Following: theo dõi bạn bè, người nổi tiếng để cập nhập các story, hoạt động
của họ.
● Profile: hiển thị thông tin người dùng, story, các hành động follow, unfollow,
log out.
Phạm vi kỹ thuật:
● Phát triển ứng dụng mobile multiple platform (Android & iOS) sử dụng
Flutter.
● Kiến trúc Microservices và việc ứng dụng hiệu quả vào đề tài khóa luận.
● CDC (Change Data Capture) và CQRS (Command Query Responsibility
Segregation) trong việc tối ưu luồng đọc - ghi của database (PostgreSQL,
MongoDB, Elasticsearch).

4


×