Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 183 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
183
Dung lượng
7,32 MB
Nội dung
ĐẠ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 ………………… 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 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ơi trường học tập chất lượng, đại động, tạo điều kiện để chúng em học hỏi, phát triển tối đa thân Xin chúc trường ngày phát triển, đại hội nhập hơn, chúc trường ngày thể vị trung tâm hàng đầu nghiên cứu, đào tạo nguồn nhân lực chất lượng cao khu vực châu Á giới Chúng em xin bày tỏ lòng cám ơn thân thương tới thầy cô khoa Công nghệ Phần mềm, xin cám ơn thầy cô truyền đạt kiến thức kinh nghiệm bổ ích giúp chúng em ứng dụng hồn thành tốt khóa luận tốt nghiệp lần Xin chúc khoa chinh phục thành tựu giảng dạy, đào tạo nghiên cứu, xin chúc thầy có thật nhiều sức khoẻ, hạnh phúc để vun đắp cho 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 suốt thời sinh viên học tập, công việc, sống Thầy người trực tiếp nhận trách nhiệm hướng dẫn giúp đỡ chúng em hoàn thành xuất sắc đề tài luận văn tốt nghiệp Xin cám ơn thầy, chúc thầy luôn mạnh khoẻ, hạnh phúc thành công Chúng em xin chân thành cảm ơn! TP Hồ Chí Minh, ngày 15 tháng năm 2021 Nguyễn Duy Cương Vi Chí Thiện MỤC LỤC Chương MỞ ĐẦU .2 1.1 Lý chọn đề tài 1.2 Mục đích 1.3 Đối tượng .3 1.4 Phạm vi nghiên cứu .4 Chương 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 2.3 Thị trường mạng xã hội thú cưng 2.4 Tầm nhìn phát triển dự án 4Pet .8 2.5 Bài toán giải khoá luận .8 2.5.1 Xây dựng phiên MVP 2.5.2 Xây dựng hệ thống hiệu cao, dễ dàng mở rộng Chương CƠ SỞ LÝ THUYẾT 10 3.1 Lý thuyết sản phẩm quy trình phát triển phần mềm 10 3.1.1 MVP 10 3.1.1.1 MVP gì? .10 3.1.1.2 Ý nghĩa MVP 11 3.1.2 Agile Scrum 11 3.1.2.1 Tổng quan Agile .11 3.1.2.2 Tổng quan Scrum 12 3.1.3 Quản lý dự án với Trello 14 3.2 Lý thuyết ứng dụng di động 15 3.2.1 Flutter 15 3.2.1.1 Flutter gì? 15 3.2.1.2 Lý chọn flutter 15 3.2.2 Google Play Console 16 3.3 Lý thuyết kiến trúc hệ thống 17 3.3.1 Tổng quan 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 CQRS (Command Query Responsibility Segregation) 22 3.3.2.1 Mơ hình MVC 22 3.3.2.2 Mơ hình lớp 23 3.3.2.3 Mơ hình CQRS 26 3.3.2.4 Tóm tắt mơ hình .28 3.3.3 CDC (Change Data Capture) với Debezium .29 3.3.3.1 CDC gì? .29 3.3.3.2 Tổng quan Debezium 29 3.3.4 Message Queue 32 3.3.4.1 Message Queue gì? 32 3.3.4.2 Phân loại Message Queue 33 3.3.4.3 Tổng quan Kafka .34 3.4 Lý thuyết công nghệ cho back-end service 36 3.4.1 Elasticsearch 36 3.4.1.1 Elasticsearch gì? 36 3.4.1.2 Các khái niệm 37 3.4.1.3 Ưu nhược điểm Elasticsearch 40 3.4.2 Tổng quan 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 gì? 44 3.4.3.2 Đặc điểm GraphQL 44 3.4.3.3 Lợi ích GraphQL 45 3.4.4 Docker .45 3.4.4.1 Tại phải dùng Docker? 45 3.4.4.2 Docker gì? 46 3.4.4.3 Lợi ích 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 gì? 49 3.4.5.2 Các đặc tính NodeJS .49 3.5 Lý thuyết DevOps 50 3.5.1 Kubernetes 50 3.5.1.1 Tổng quan Kubernetes 50 3.5.1.2 Kiến trúc Kubernetes .52 3.5.1.3 Các thành phần Kubernetes .53 3.5.2 CI/CD 55 3.5.2.1 CI/CD 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 gì? .58 3.5.3.2 Những dịch vụ Google Cloud cấp cao 59 Chương Giải vấn đề .61 4.1 GraphQL hiệu cao với HTTP/2 61 4.1.1 Tổng quan kiến trúc hệ thống .61 4.1.2 Vấn đề 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 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 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 Docker Hub 83 4.6.2 Triển khai điều khiển Kubernetes cluster kubectl .84 4.6.3 Quản lý Kubernetes cách trực quan K9S 87 4.6.4 Định nghĩa Secret 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 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 đặc tả 104 5.2.1 Danh sách actor .104 5.2.2 Danh sách use-case 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ế sở liệu 114 5.3.1 Cơ sở liệu 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ở liệu 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ở liệu 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ở liệu notification service .124 5.3.5 Cơ sở liệu reaction service 125 Cài đặt kubectl Hình 6.2: 6.1.2.3 Cài đặt k9s K9 cung cấp giao diện người dùng đầu cuối để tương tác với cụm Kubernetes bạn Mục đích dự án để giúp điều hướng, quan sát quản lý ứng dụng bạn dễ dàng K9s liên tục theo dõi Kubernetes để thay đổi đưa lệnh để tương tác với tài nguyên quan sát bạn Hình 6.3: Cài đặt k9s 6.1.3 Khởi tạo Kubernetes cluster instance Azure Kubernetes Service (AKS) 6.1.3.1 Đăng nhập Azure từ Azure CLI Hình 6.4: Đăng nhập Azure Kết quả: 148 Hình 6.5: 6.1.3.2 Kết đăng nhập Tạo resource group Hình 6.6: Tạo resource group Kết quả: 149 Hình 6.7: 6.1.3.3 Kết tạo resource group Lấy danh sách phiên Kubernetes sẵn có theo khu vực Hình 6.8: Lấy danh sách phiên 150 Kết quả: Hình 6.9: Kết lấy danh sách 151 6.1.3.4 Tạo Cluster Hình 6.10: Tạo Cluster Kết quả: 152 Hình 6.11: 6.1.3.5 Kết tạo cluster Xác nhận AKS Cluster tồn 153 Hình 6.12: Xác nhận Cluster tồn Kết quả: Hình 6.13: Kết xác nhận cluster tồn 154 6.1.3.6 Đặt AKS Cluster context mặc định kubectl Hình 6.14: Đặt AKS Cluster context mặc định Kết quả: Hình 6.15: Kết đặt AKS Cluster context mặc định 6.1.4 Triển khai hệ thống 6.1.4.1 Cấu trúc source code: 155 Hình 6.16: Kiến trúc thư mục 156 6.1.4.2 Áp dụng cấu hình hệ thống lên Azure Kubernetes Service (AKS) Hình 6.17: Áp dụng cấu hình Kết quả: Hình 6.18: 6.2 Kết Cài đặt triển khai ứng dụng di động: 6.2.1 Yêu cầu hệ thống: Yêu cầu phần cứng • Ram: Từ 16GB trở lên • CPU: Intel Core i7 6700HQ apple M1 Yêu cầu phần mềm: • Hệ điều hành: Ubuntu 20.04 Mac OS 11 (Big Sur) 157 • Flutter: 1.24.0-10.1.pre Các dịng điện thoại khuyến nghị: • Samsung Galaxy S20 • Iphone 12 Pro Max 6.2.2 Chạy chương trình • Vơ thưc mục 4pet source code • Chạy flutter run để chạy ứng dụng 158 Chương KẾT LUẬN Qua khoá luận luận này, nhóm hoàn thành mạng xã hội cho thú cưng với phiên MVP Nhờ bảo tận tình thầy Hoan, nhóm lên kế hoạch chi tiết làm khóa luận Khi bắt tay vào làm khóa luận, nhóm có kinh nghiệm việc phát triển phần mềm Giai đoạn đầu, chúng em sử dụng kiến thức học trường, cộng với kiến thức từ thầy Hoan Nhóm bắt đầu tìm hiểu thêm kiến thức hướng giải cho tốn mạng xã hội Phải nói kiến thức hoàn toàn mà chúng em chưa tiếp cận Bên cạnh đó, hướng giải chọn khóa luận khó Có nhiều kỹ thuật để tìm hiểu, có nhiều công nghệ để áp dụng thời điểm Chúng em phải cân việc tìm kiếm, nghiên cứu cho khóa luận, cơng việc cơng ty sống Giai đoạn sau khóa luận, nhờ việc chuẩn bị tốt kế hoạch rõ ràng Mặc dù nhân lực nhóm có hai người, thời gian làm khóa luận hạn hẹp Mỗi kỹ thuật có nhiều Song hai cố gắng hoàn thành, xây dựng hệ thống đáp ứng khả mở rộng chịu tải với kế hoạch 159 Chương HƯỚNG PHÁT TRIỂN 8.1 Trong thời gian ngắn hạn: Hoàn thiện dự án với phiên MVP Kiếm 1000 người dùng khoảng tháng đầu đưa sản phẩm thị trường Cải thiện chức thơng báo, hiển thị thơng báo khỏi ứng dụng Giúp người dùng không bỏ lỡ đoạn tin nhắn, story Tích hợp đăng nhập bên thứ ba Google, Tiktok, … Tìm kiếm thêm đồng đội đồng hành, phát triển dự án Triển khai bán áo nhận diện thương hiệu 8.2 Trong năm tới: Tìm kiếm nhà đầu tư cố vấn cho sản phẩm Mở rộng thị trường sản phẩm nước Mỹ, Anh Mở rộng hệ sinh thái cách kết hợp với bên thứ ba đồ ăn, thức uống dịch vụ liên quan đến thú cưng để hoàn thiện sản phẩm Phát triển hệ thống admin, quản lý hiệu bên tích hợp quản lý nội dung người dùng Nghiên cứu, phát triển hệ thống nhận dạng thú cưng Hỗ trợ nhanh chóng tìm lại thú cưng bị thất lạc với 4Pet 160 TÀI LIỆU KHAM KHẢO [1] “Scrum (software development),” [Online] Available: https://en.wikipedia.org/wiki/Scrum_(software_development) [Accessed 04 01 2021] [2] “Minimum viable product,” [Online] Available: https://en.wikipedia.org/wiki/Minimum_viable_product [Accessed 04 01 2021] [3] “Agile software development,” [Online] Available: https://en.wikipedia.org/wiki/Agile_software_development [Accessed 04 01 2021] [4] “Microservices,” [Online] Available: https://en.wikipedia.org/wiki/Microservices [Accessed 05 01 2021] [5] “Message queue,” [Online] Available: https://en.wikipedia.org/wiki/Message_queue [Accessed 06 01 2021] [6] “Kafka,” [Online] Available: https://kafka.apache.org/ [Accessed 07 01 2021] [7] “Elasticsearch,” [Online] Available: https://www.elastic.co/ [Accessed 03 01 2021] [8] “Debezium,” [Online] Available: https://debezium.io/ [Accessed 03 01 2021] [9] “GraphQL,” [Online] Available: https://graphql.org/ [Accessed 02 01 2021] [10] “gRPC,” [Online] Available: https://grpc.io/ [Accessed 01 01 2021] [11] “Nodejs,” [Online] Available: https://nodejs.org/en/ [Accessed 29 12 2020] [12] “Kotlin,” [Online] Available: https://kotlinlang.org/ [Accessed 05 12 2020] 161 [13] “Confluent Documentation,” [Online] Available: https://docs.confluent.io/home/overview.html [Accessed 20 11 2020] [14] “Docker,” [Online] Available: https://www.docker.com/ [Accessed 01 01 2021] [15] “Kubernetes Documentation,” [Online] Available: https://kubernetes.io/ [Accessed 15 11 2020] [16] “Google cloud document,” [Online] Available: https://cloud.google.com/docs/ [Accessed 12 12 2020] [17] “gRPC vs REST Performance Comparison,” [Online] Available: https://www.vinsguru.com/grpc-vs-rest-performance-comparison/ [Accessed 13 12 2020] [18] “What is Unified Modeling Language (UML)?,” [Online] Available: https://www.visual-paradigm.com/guide/uml-unified-modelinglanguage/what-is-uml/ [Accessed 05 01 2021] [19] “Flutter documentation,” [Online] [Accessed 12 11 2020] 162 Available: https://flutter.dev/docs ... 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 người yêu thú cưng? ?? nhằm mục đích xây dựng nên mạng xã hội cho người thích yêu. .. 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... cửa hàng spa cho thú cưng xuất hiện, cùng với dịch vụ khác cho thú cưng tăng mạnh Đây dấu hiệu tốt báo hiệu tốt thị trường thú cưng đầy tiềm 2.3 Thị trường mạng xã hội thú cưng Tại Việt Nam,