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