LỜI CẢM ƠN Sau hơn 4,5 năm học tập và rèn luyện tại Trường Đại học Công nghệ Thông tin, được sự giảng dạy và hướng dẫn tận tình của quý thầy cô, đặc biệt là quý thầy cô trong khoa Công n
Trang 1ĐẠ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
LÊ HỮU THẮNG
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG CHIA SẺ THÔNG TIN VÀ
Trang 2ĐẠ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
LÊ HỮU THẮNG – 16521098
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG CHIA SẺ THÔNG TIN VÀ
Trang 3THÔ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
Trang 4ĐHQG TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày… tháng… năm……
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ HƯỚNG DẪN)
Tên khóa luận:
XÂY DỰNG ỨNG DỤNG CHIA SẺ THÔNG TIN VÀ PHƯƠNG PHÁP SỐNG
KHỎE
Lê Hữu Thắng 16521098 ThS Lê Thanh Trọng
Đánh giá Khóa luận:
1 Về cuốn báo cáo:
Số trang: Số chương:
Số bảng số liệu: Số hình vẽ:
Số tài liệu tham khảo: Sản phẩm:
Một số nhận xét về hình thức cuốn báo cáo:
Trang 6ĐHQG TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày… tháng… năm……
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ PHẢN BIỆN)
Tên khóa luận:
XÂY DỰNG ỨNG DỤNG CHIA SẺ THÔNG TIN VÀ PHƯƠNG PHÁP SỐNG
KHỎE
Lê Hữu Thắng 16521098
Đánh giá Khóa luận:
1 Về cuốn báo cáo:
Số trang: Số chương:
Số bảng số liệu: Số hình vẽ:
Số tài liệu tham khảo: Sản phẩm:
Một số nhận xét về hình thức cuốn báo cáo:
Trang 8LỜI CẢM ƠN
Sau hơn 4,5 năm học tập và rèn luyện tại Trường Đại học Công nghệ Thông tin, được sự giảng dạy và hướng dẫn tận tình của quý thầy cô, đặc biệt là quý thầy cô trong khoa Công nghệ Phần mềm, em đã gặt hái được những kiến thức bổ ích, có thể áp dụng vào luận văn cũng như áp dụng trong những chặn đường tương lai
Chúng em xin chân thành cảm ơn các quý thầy cô của Trường Đại học Công nghệ thông tin, quý thầy cô của Khoa Công nghệ Phần mềm, đặc biệt là thầy Lê Thanh Trọng đã hướng dẫn tận tình, và đóng góp ý kiến để em có thể hoàn thành khóa luận tốt nghiệp một cách tốt nhất
Bên cạnh đó, em cũng xin gửi lời cảm ơn đến các bạn cùng khóa, đã có những lời góp ý, động viên em có thêm động lực thực hiện khóa luận trong khoảng thời gian qua
Trong suốt quá trình em tìm hiểu và thực hiện khóa luận, do sử dụng công nghệ còn khá mới, thời gian và nhân lực của nhóm có hạn, nên không thể tránh những sai sót
Do đó em rất mong nhận được sự thông cảm và những ý kiến đóng góp chân thành
từ quý thầy cô và các bạn Một lần nữa, em xin chân thành cảm ơn mọi người
Thành phố Hồ Chí Minh, ngày tháng năm 2021
Lê Hữu Thắng
Trang 9ĐHQG TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG CHIA SẺ THÔNG TIN VÀ PHƯƠNG
PHÁP SỐNG KHỎE
Cán bộ hướng dẫn: Ths Lê Thanh Trọng
Thời gian thực hiện:Từ ngày 01/10/2020 đến ngày 02/01/2021
Sinh viên thực hiện:
Lê Hữu Thắng - 16521098
Nội dung đề tài:(Mô tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực hiện,
kết quả mong đợi của đề tài)
Tên đề tài: Xây dựng ứng dụng chia sẻ thông tin và phương pháp sống khỏe
Mục tiêu Xây dựng một ứng dụng chia sẻ thông tin bổ ích và
các phương pháp sống khỏe Kết nối người sử dụng với các chuyên gia sức khỏe,
hỗ trợ và tư vấn cách chăm sóc sức khỏe Giúp người dùng tiếp cận được các bài viết chia sẻ phương pháp sống khỏe
Giúp các chuyên gia thu thập thông tin, đánh giá tình trạng sức khỏe
Phạm vi Đề tài sẽ tập trung phát triển ứng dụng hỗ trợ mọi
người chia sẻ thông tin và phương pháp sức khỏe, phòng tránh các bệnh theo mùa
Trang 10Đối tượng Do nhân lực và thời gian có hạn, cũng như sinh viên
chưa có nhiều kinh nghiệm trong lĩnh vực y khoa Ứng dụng sẽ chỉ tập trung cho phương pháp chăm sóc sức khỏe theo mùa, dựa vào các bệnh phổ biến
Vì thế đối tượng chính của ứng dụng sẽ là những người đang có nhu cầu tìm hiểu, tư vấn chăm sóc sức khỏe
Phương pháp thực hiện 1.Tìm hiểu
- Tìm hiểu và khảo sát các ứng dụng chăm sóc sức khỏe hiện có tại Việt Nam
2.Đối sánh
- So sánh và rút ra các điểm mạnh, điểm còn hạn chế 3.Phân tích
- Phân tích, lựa chọn những nghiệp vụ cần có của 1 ứng dụng chia sẻ thông tin và phương pháp sống khỏe
4.Xây dựng
- Mô tả ứng dụng
- Phân tích và thiết kế ứng dụng
Trang 11- Xây dựng được ứng dụng di động
- Ứng dụng search engine vào hệ thống
- Sử dụng kiến trúc microservices Kết quả mong đợi của đề tài Đối với sinh viên:
Sinh viên rèn luyện thêm những kĩ năng mềm: giao tiếp, trao đổi với giảng viên hướng dẫn
Rèn luyện tính: tự lập, chủ động khi tìm hiểu, làm việc, thực hiện đề tài cùng giảng viên
Biết lên kế hoạch chi tiết, đặt mục tiêu cụ thể
Ôn luyện toàn bộ các kiến thức đã được dạy trên trường
Áp dụng những lý thuyết vào thực tiễn, xây dựng một ứng dụng hoàn chỉnh, toàn diện nhất
Học hỏi thêm được những công nghệ mới, làm hành trang chuẩn bị cho tương lai
Đối với đề tài:
Ứng dụng microservices, search engine vào sản phẩm
Hiểu rõ nghiệp vụ của 1 ứng dụng mạng xã hội Thực hiện đúng với tên gọi đề tài, đủ với những yêu cầu giảng viên đề ra
Đáp ứng được yêu cầu đặt ra khi lên kế hoạch thực hiện
Đáp ứng được yêu cầu nghiệp vụ do sinh viên và giảng viên hướng dẫn cùng thảo luận, trao đổi
Trang 12Ứng dụng được tạo ra với mức độ hoàn thiện, có thể
sử dụng được trong thực tế Kiến trúc ứng dụng phải rõ ràng, hợp lý Để sau này ứng dụng dễ bảo trì, phát triển thêm các tính năng Quy trình phát triển ứng dụng phù hợp với thực tiễn bên ngoài (Agile, V-model,…)
Ứng dụng có độ chịu tải tốt, hiệu năng tốt
Kế hoạch thực hiện:(Mô tả kế hoạch làm việc và phân công công việc cho từng sinh
viên tham gia)
Thời gian Nội dung
28/09 – 04/10/2020 Tìm hiểu các ứng dụng hiện có, phân tích
ưu nhược điểm các ứng dụng
05/10 – 11/10/2020 Viết đề cương khóa luận, tìm hiểu, phân
tích nghiệp vụ, lên sơ đồ lớp, database,
12/10 – 25/10/2020 Thiết kế các màn hình chính
Phát triển các API Cần có các tính năng: Đăng kí, đăng nhập, quản lý thông tin người dùng, hiển thị bài viết
26/10 – 25/11/2020 Tiếp tục phát triển ứng dụng
Xây dựng, hoàn thiện các màn hình Phát triển các API
Trang 13Tích hợp hệ thống tìm kiếm vào ứng dụng Thêm tính năng chat, gọi điện
Thảo luận cùng giảng viên hướng dẫn xem xét, trao đổi những gì cần cải thiện
26/11 – 18/12/2020 Hoàn thiện ứng dụng
Build thành sản phẩm, demo cho giảng viên hướng dẫn
Chỉnh sửa tài liệu phù hợp với yêu cầu
19/12 – 02/01/2021 Viết báo cáo, khóa luận
Trang 14MỤC LỤC
TÓM TẮT KHÓA LUẬN 1
Chương 1 MỞ ĐẦU 2
1.1 Giới thiệu đề tài 2
1.2 Lý do chọn đề tài 2
Chương 2 TỔNG QUAN ĐỀ TÀI 4
2.1 Mục tiêu 4
2.2 Phạm vi 4
2.3 Phương pháp thực hiện 4
2.3.1 Tìm hiểu 4
2.3.2 Đối sánh 4
2.3.3 Phân tích 5
2.3.4 Xây dựng 5
2.4 Kết quả mong đợi 6
2.4.1 Kĩ năng 6
2.4.2 Kiến thức 6
2.4.3 Kết quả 6
2.5 Tìm hiểu đề tài 7
2.5.1 Một số ứng dụng sức khỏe 7
2.5.1.1 Doximity 7
2.5.1.2 Keto Diet Recipes 8
2.5.1.3 Annabel Karmel 9
2.5.2 Đối sánh 10
2.5.3 Hướng giải quyết 11
Chương 3 ELASTICSEARCH & DOCKER 13
Trang 153.1 Elasticsearch 13
3.1.1 Tổng quan Elasticsearch 13
3.1.2 Ưu nhược điểm 13
3.1.3 Một số khái niệm 14
3.2 Docker 15
3.2.1 Tổng quan Docker 15
3.2.2 Ưu nhược điểm 16
3.2.3 Một số khái niệm 17
Chương 4 MICROSERVICES & GOLANG 18
4.1 Tổng quan Microservices 18
4.1.1 Khái niệm 18
4.1.2 Ưu nhược điểm 19
4.1.3 gRPC là gì 20
4.1.4 Protocol Buffers 21
4.1.5 Ví dụ 21
4.2 Golang 24
4.2.1.1 Tổng quan Golang 24
4.2.1.2 Đặc điểm 24
Chương 5 THIẾT KẾ HỆ THỐNG 26
5.1 Xác định và phân tích yêu cầu 26
5.1.1 Danh sách các Actor 26
5.1.2 Danh sách các Usecase 27
5.1.2.1 Usecase về tài khoản 28
5.1.2.2 Usecase về bài viết 29
5.1.2.3 Usecase về người dùng 30
Trang 165.1.2.4 Usecase về chi tiết bài viết 31
5.1.2.5 Usecase về quản trị viên 32
5.2 Thiết kế cơ sở dữ liệu 33
5.2.1.1 ERD 33
5.2.1.2 Class Diagram 34
5.2.1.3 Các collection 34
5.3 Thiết kế kiến trúc hệ thống 42
5.3.1 Kiến trúc ứng dụng Server 44
5.3.2 Kiến trúc ứng dụng Client 49
5.4 Thiết kế giao diện 52
5.4.1 Các màn hình đăng nhập 52
5.4.2 Màn hình trang chủ 57
5.4.3 Màn hình bài viết 60
5.4.4 Màn hình trang cá nhân 64
5.4.5 Màn hình cài đặt 68
5.4.6 Các màn hình liên quan đến người dùng 69
5.4.7 Các màn hình liên quan đến nhắn tin 71
5.4.8 Các màn hình của quản trị viên 75
5.5 Triển khai hệ thống 80
5.5.1 Server 80
5.5.2 Client 81
Chương 6 KẾT LUẬN 82
6.1 Kết quả đạt được 82
6.2 Thuận lợi và khó khăn 83
6.2.1 Thuận lợi 83
Trang 176.2.2 Khó khăn 83
6.3 Hướng phát triển 83
Tài liệu Tiếng Việt 85
Tài liệu Tiếng Anh 85
Trang 18DANH MỤC HÌNH
Hình 2.1 Domixity 7
Hình 2.2 Keto Diet Recipes 8
Hình 2.3 Ứng dụng Annabel Karmel 9
Hình 3.1 Elasticsearch 13
Hình 3.2 Docker 15
Hình 4.1 Ví dụ về Microservices 19
Hình 4.2 gRPC 21
Hình 4.3 Golang 24
Hình 5.1 Danh sách các Actor 26
Hình 5.2 Sơ đồ Usecase 27
Hình 5.3 Use case quản lý tài khoản 28
Hình 5.4 Usecase quản lý bài viết 29
Hình 5.5 Usecase về người dùng 30
Hình 5.6 Usecase chi tiết bài viết 31
Hình 5.7 Usecase của quản trị viên 32
Hình 5.8 Class diagram 34
Hình 5.9 Kiến trúc hệ thống 42
Hình 5.10 Kiến trúc hexare-service 44
Hình 5.11 Kiến trúc của search-service 47
Hình 5.12 Kiến trúc của ứng dụng client 49
Hình 5.13 Màn hình đăng nhập 52
Hình 5.14 Màn hình đăng kí với số điện thoại 53
Hình 5.15 Màn hình xác thực OTP 54
Hình 5.16 Màn hình đăng kí 55
Hình 5.17 Màn hình reset mật khẩu 56
Hình 5.18 Màn hình trang chủ 57
Hình 5.19 Màn hình thông báo 58
Hình 5.20 Màn hình bảng tin chính 59
Trang 19Hình 5.21 Màn hình danh sách bài viết trong chuyên mục 60
Hình 5.22 Màn hình thêm mới bài viết 61
Hình 5.23 Màn hình chi tiết bài viết 62
Hình 5.24 Màn hình bình luận 63
Hình 5.25 Màn hình chỉnh sửa trang cá nhân 64
Hình 5.26 Màn hình trang cá nhân 65
Hình 5.27 Màn hình những người theo dõi mình 66
Hình 5.28 Màn hình những người đang theo dõi 67
Hình 5.29 Màn hình cài đặt 68
Hình 5.30 Màn hình tìm kiếm người dùng 69
Hình 5.31 Màn hình trang cá nhân người dùng khác 70
Hình 5.32 Màn hình nhắn tin 71
Hình 5.33 Màn hình trò chuyện 72
Hình 5.34 Màn hình gọi video 73
Hình 5.35 Màn hình cuộc gọi đến 74
Hình 5.36 Màn hình xác thực tài khoản người dùng 75
Hình 5.37 Màn hình chi tiết yêu cầu xác thực 76
Hình 5.38 Màn hình quản lý chuyên mục 77
Hình 5.39 Màn hình thêm chuyên mục 78
Hình 5.40 Màn hình quản lý quyền 79
Hình 5.41 Màn hình phân quyền người dùng 80
Trang 20DANH MỤC BẢNG
Bảng 2.1 Ưu nhược điểm ứng dụng Domixity 8
Bảng 2.2 Ưu nhược điểm ứng dụng Keto Diet Recipes 9
Bảng 2.3 Ưu nhược điểm ứng dụng Annabel Karmel 10
Bảng 3.1 Ưu nhược điểm Elasticsearch 14
Bảng 3.2 Ưu nhược điểm Docker 16
Bảng 4.1 Ưu nhược điểm Microserivces 20
Bảng 5.1 Bảng mô tả Usecase quản lý tài khoản 28
Bảng 5.2 Bảng mô tả Usecase về bài viết 30
Bảng 5.3 Bảng mô tả Usecase về người dùng 30
Bảng 5.4 Bảng mô tả Usecase chi tiết bài viết 32
Bảng 5.5 Collection User 36
Bảng 5.6 Collection Account 36
Bảng 5.7 Collection Work 37
Bảng 5.8 Collection Log 37
Bảng 5.9 Collection Category 38
Bảng 5.10 Collection Post 39
Bảng 5.11 Collection Report 40
Bảng 5.12 Collection Comment 40
Bảng 5.13 Collection Message 41
Bảng 5.14 Bảng mô tả chi tiết kiến trúc hexare-service 46
Bảng 5.15 Bảng mô tả chi tiết kiến trúc của search-service 48
Bảng 5.16 Bảng mô tả chi tiết kiến trúc ứng dụng client 51
Trang 213 REST Representational State
Trang 232
Chương 1 MỞ ĐẦU
1.1 Giới thiệu đề tài
“Sức khỏe là vàng”, một câu thành ngữ nói lên giá trị sức khỏe con người Thế nhưng vẫn còn rất nhiều người chưa ý thức được tầm quan trọng của sức khỏe Bởi vì khi còn có sức khỏe, chúng ta không cảm thấy được nó là điều quý giá Nhưng khi chúng
ta mất đi nó, chúng ta bị bệnh, không còn khỏe mạnh như trước, chúng ta mới nhận thấy một cách thấm thía rằng sức khỏe còn hơn tiền bạc, danh vọng, và không có vật chất, tinh thần nào bằng được, có thể nói sức khỏe là vô giá Có sức khỏe thì chúng
ta mới có thể làm được mọi việc
Nhìn lại bối cảnh xã hội hiện đại, bên cạnh việc tuổi thọ con người ngày càng được cải thiện hơn, thì cũng xuất hiện thêm các bệnh mới, các căn bệnh nguy hiểm, dễ lây lan trong cộng đồng, đặc biệt là nguy hiểm đến tính mạng con người
Điển hình trong năm 2020 vừa qua, đó là sự xuất hiện của dịch Covid-19, đã làm xáo trộn sinh hoạt, ảnh hưởng đến khắp mọi người trên thế giới Theo thống kê của WHO, tính đến tháng 12/2020, đã có 80,2 triệu ca mắc covid trên toàn thế giới, trong đó 45,3 triệu ca đã chữa khỏi, và có hơn 1,76 triệu ca tử vong Chỉ tính riêng ở Việt Nam, chúng ta có 1439 ca mắc Covid, trong đó 1303 ca đã chữa khỏi, và 35 ca tử vong Những con số trên là lời nhắc nhở chúng ta nên ý thức hơn về sức khỏe của bản thân Bởi nếu không có sức khỏe, một chàng trai cao to lực lưỡng đến mấy, cũng có thể dễ dàng bị nguy hiểm đến tính mạng trước những sự xâm nhập từ bên ngoài của bất kì
vi khuẩn, virus nào
Chính vì thế, chúng ta cần phải nâng cao ý thức, thường xuyên tập thể dục, sống lành mạnh, ăn uống đầy đủ dinh dưỡng để có được một sức khỏe tốt nhất
1.2 Lý do chọn đề tài
Hiện nay, các ứng dụng mạng xã hội ngày càng nhiều, và ngày càng đa dạng hơn về các lĩnh vực Chỉ cần với chiếc smartphone trong tay, người dùng đã có thể tìm kiếm, thu nhận các thông tin một cách nhanh chóng
Trang 24Đó là lý do mà nhóm chọn đề tài Khóa Luận Tốt Nghiệp “Xây dựng ứng dụng chia
sẻ thông tin và phương pháp sống khỏe” (tên tiếng Anh: “Build an app to share information and live healthy ways”)
Trang 25Giúp người dùng tiếp cận được các bài viết chia sẻ phương pháp sống khỏe
Giúp các chuyên gia thu thập thông tin, đánh giá tình trạng sức khỏe
2.2 Phạm vi
Đề tài sẽ tập trung phát triển ứng dụng hỗ trợ mọi người chia sẻ thông tin và phương pháp sức khỏe, phòng tránh các bệnh theo mùa
Sản phẩm sẽ có các tính năng:
Đăng kí với số điện thoại thật, đăng nhập, quản lý thông tin,
Tìm kiếm các bài viết chăm sóc sức khỏe
Đăng bài viết, chia sẻ bài viết
Hỏi đáp cùng chuyên gia
Nhắn tin, gửi file,…
Trang 27Ôn luyện toàn bộ các kiến thức đã được dạy trên trường
Áp dụng những lý thuyết vào thực tiễn, xây dựng một ứng dụng hoàn chỉnh, toàn diện nhất
Học hỏi thêm được những công nghệ mới, làm hành trang chuẩn bị cho tương lai
2.4.3 Kết quả
Ứng dụng microservices, search engine vào sản phẩm
Hiểu rõ nghiệp vụ của 1 ứng dụng mạng xã hội
Thực hiện đúng với tên gọi đề tài, đủ với những yêu cầu giảng viên đề ra
Đáp ứng được yêu cầu đặt ra khi lên kế hoạch thực hiện
Đáp ứng được yêu cầu nghiệp vụ do sinh viên và giảng viên hướng dẫn cùng thảo luận, trao đổi
Ứng dụng được tạo ra với mức độ hoàn thiện, có thể sử dụng được trong thực tế Kiến trúc ứng dụng phải rõ ràng, hợp lý Để sau này ứng dụng dễ bảo trì, phát triển thêm các tính năng
Quy trình phát triển ứng dụng phù hợp với thực tiễn bên ngoài (Agile, V-model,…) Ứng dụng có độ chịu tải tốt, hiệu năng tốt
Trang 28Bao gồm các tính năng:
Tìm kiếm bác sĩ, chuyên gia chăm sóc sức khỏe ở Hoa Kỳ
Gọi điện, gọi video với người dùng mà không công khai số điện thoại
Luôn cập nhật các tin tức và nghiên cứu mới nhất đã được các chuyên gia chăm sóc sức khỏe thẩm định
Ưu điểm Nhược điểm Nền tảng gần tương tự như là mạng xã
hội, bao gồm các chức năng khác nhau
như : quản lý trang hồ sơ, dịch vụ email,
Không thể truy cập vào ứng dụng nếu không phải là chuyên gia chăm sóc sức khỏe
Trang 29gia, bác sĩ tiết kiệm thời gian khi có thể
truy cập mọi lúc mọi nơi
Ứng dụng khó download, người dùng phải xác minh danh tính trước khi có thể download được ứng dụng
Người dùng cần biết tiếng Anh Chưa hỗ trợ nhắn tin
Bảng 2.1 Ưu nhược điểm ứng dụng Domixity
2.5.1.2 Keto Diet Recipes
Hình 2.2 Keto Diet Recipes Ứng dụng Keto cung cấp các công thức nấu ăn ngon, lành mạnh, đầy đủ dinh dưỡng nhưng vẫn phù hợp, hỗ trợ kế hoạch ăn cho người dùng
Bao gồm các tính năng hữu ích:
Chi tiết công thức nấu ăn với các thông tin Calo, Protein, chất béo,
Hỗ trợ tạo danh sách các công thức nấu ăn yêu thích
Có thể ghi chú công thức nấu ăn
Ưu điểm Nhược điểm
Trang 309
Giao diện đẹp, thân thiện với người
dùng
Hiệu năng tốt
Có thể tạo danh sách yêu thích
Ứng dụng không cần kết nối internet
Ứng dụng chưa hỗ trợ đánh giá, chia sẻ cách ăn kiêng cho mọi người
Chưa có tính năng nhắn tin, gọi điện Ứng dụng chưa hỗ trợ nhiều tính năng cần thiết cho 1 mạng xã hội
Ứng dụng chỉ đơn thuần như một cuốn
sổ tay Bảng 2.2 Ưu nhược điểm ứng dụng Keto Diet Recipes
2.5.1.3 Annabel Karmel
Hình 2.3 Ứng dụng Annabel Karmel Ứng dụng Annabel Karmel như quyển sổ tay hướng dẫn hữu ích, cung cấp hơn 250 công thức nấu ăn ngon dành cho trẻ nhỏ, giúp cho các phụ huynh có thể chuẩn bị các bữa ăn nhanh chóng dễ dàng cho trẻ em ở mọi lứa tuổi
Bao gồm các tính năng hữu ích:
Cung cấp hơn 300 công thức món ăn dành cho các trẻ ở mọi lứa tuổi, các công thức món ăn gia đình
Chia sẻ công thức nấu ăn cho trẻ đến với mọi người
Thêm vào danh sách yêu thích
Trang 31ăn, cho từng lứa tuổi
Là ứng dụng di động, nên tiện lợi
Ứng dụng tính phí Paid application Ứng dụng chưa hỗ trợ đáng giá, đăng bài viết đề xuất công thức nấu ăn mới Ứng dụng chưa hỗ trợ phân loại các món
ăn thành một thực đơn đầy đủ mỗi ngày Ứng dụng chủ yếu là cung cấp các công thức
Ứng dụng vẫn còn đơn giản, chưa có các tính năng cần thiết của 1 mạng xã hội Bảng 2.3 Ưu nhược điểm ứng dụng Annabel Karmel
2.5.2 Đối sánh
Hiện nay, có rất nhiều ứng dụng liên quan đến việc chăm sóc sức khỏe, nhưng chủ yếu dừng lại ở việc lưu trữ thông tin, các ứng dụng chỉ đơn thuần như một cuốn sổ tay, chỉ có các tính năng cung cấp thông tin, điều này sẽ khiến thông tin chỉ đi một chiều đến người dùng
Trang 32 Lưu trữ những bài viết chúng ta cảm thấy bổ ích, nhằm tiết kiệm thời gian mỗi khi chúng ta muốn tìm kiếm lại những thông tin cũ
Và trong bối cảnh mà các ứng dụng mạng xã hội phát triển mạnh mẽ, việc các ứng dụng chỉ mang tính chất đem thông tin đến người dùng sẽ phần nào đó dễ gây nhàm chán, khiến người dùng không thích, dẫn đến việc ứng dụng không thể đạt được mục đích cuối cùng: chia sẻ thông tin hữu ích về sức khỏe cho người dùng, vì khả năng kết nối, duy trì giữa người với người không thể bằng với một ứng dụng mạng xã hội
2.5.3 Hướng giải quyết
Xây dựng một ứng dụng chia sẻ thông tin và phương pháp sống khỏe theo hướng mạng xã hội
Ứng dụng này sẽ là một cộng đồng giữa những bác sĩ, chuyên gia các lĩnh vực sức khỏe và những người dùng khác
Thêm tính năng nhắn tin, gọi điện giữa người dùng Điều này sẽ giúp các bác sĩ tiếp cận bệnh nhân nhanh hơn, ít tốn th.ời gian hơn
Thêm tính năng hỏi đáp riêng tư Giúp những người có nhu cầu được tư vấn, sẽ được các chuyên gia giải đáp, đồng thời, các thông tin riêng tư được bảo mật, chỉ có các bác sĩ, chuyên gia tiếp cận được, giúp người dùng cảm thấy thoải mái hơn trong việc chia sẻ thông tin
Tính năng theo dõi người dùng, giúp kết nối, mở rộng cộng đồng
Các bài viết chăm sóc sức khỏe sẽ được phân chia theo từng chuyên mục, giúp người dùng tiết kiệm thời gian, dễ dàng tìm kiếm
Trang 343.1.2 Ưu nhược điểm
Ưu điểm Nhược điểm
Là một search-engine Nên elasticseach
sẽ tốt trong trường hợp tìm kiếm dữ liệu
Thời gian thực hiện truy vấn có độ trễ
nhỏ, gần như là thời gian thực
Là một open-source, nên có thể tự do tùy
biến tùy ý nhà phát triển
Vì là search-engine Elasticsearch không được dùng trong việc ghi dữ liệu Không hỗ trợ transaction, không có ràng buộc quan hệ giữa các dữ liệu
Vì những lý do trên, elasticsearch sẽ thường không được dùng làm database chính
Trang 3514
Hỗ trợ full-text search, với các tính năng
tách từ, tách câu, tạo index dữ liệu
Có khả năng mở rộng tuyệt vời, chỉ cần
thêm node, elasticsearch sẽ tự động auto
mở rộng
Elasticsearch chạy trên server riêng,
đồng thời giao tiếp qua RESTful nên
không phụ thuộc vào hệ thống, dễ dàng
Để có thể sử dụng tốt Elasticsearch, cần nắm rõ một số khái niệm
Cluster: Một tập hợp Nodes (servers) chứa tất cả các dữ liệu nhằm đảm bảo
tính tin cậy và sẵn dùng
Node: Một server duy nhất chứa một số dữ liệu và tham gia vào cluster’s
indexing and querying
Index: Index ở đây không phải là chỉ số mà là một tập hợp các documents, nó
tương đương với khái niệm một database
Document: Một JSON object với một số dữ liệu, đây là một đơn vị thông tin
trong Elasticsearch (tương đương với khái niệm document trong MongoDB
hay khái niệm row trong table của database SQL)
Trang 3615
Shards: Tập con các documents của 1 Index Một Index có thể được chia
thành nhiều shard, mỗi shard cũng có thể coi là một index có thể được truy cập trực tiếp giúp tính toán, tìm kiếm 1 cách song song
3.2 Docker
3.2.1 Tổng quan Docker
Docker là một nền tảng để cung cấp cách tạo, triển khai, và chạy 1 ứng dụng dễ dàng hơn bằng cách sử dụng Container
Docker tạo ra các Container, cho phép các lập trình viên đóng gói ứng dụng với tất
cả các phần cần thiết, chẳng hạn như thư viện, và gửi tất cả ra dưới dạng 1 package Bằng cách này, nhờ vào Container, ứng dụng sẽ chạy trên mọi máy Linux khác bất
kể mọi cài đặt tùy chỉnh mà máy có thể khác so với máy được sử dụng để viết và đóng gói ứng dụng
Theo một cách hiểu khác, Docker như một máy ảo (virtual machine)
Hình 3.2 Docker
Trang 3716
3.2.2 Ưu nhược điểm
Ưu điểm Nhược điểm Không như máy ảo, Docker start và stop
chỉ trong vài giây
Dễ dàng thiết lập môi trường
Việc loại bỏ hay tạo lại container rất dễ
dàng
Tốn ít tài nguyên: do các kernel OS có
thể share lẫn nhau, nên bớt đi được khá
nhiều tài nguyên không cần thiết
Linh hoạt, đồng nhất: nhờ vào đóng gói
Container mà Docker có thể chạy được
ứng dụng trên mọi Linux khác bất kể tùy
Trang 38 Docker Registry: là nơi lưu trữ riêng của Docker Images Images được push
vào registry và user sẽ pull images từ registry
Docker Hub: là Registry lớn nhất của Docker Images ( mặc định) Có thể tìm
thấy images và lưu trữ các images riêng tư trên Docker Hub,
Docker Repository: là tập hợp các Docker Images cùng tên nhưng khác tags
VD: golang:1.11-alpine
Docker Networking: cho phép kết nối các container lại với nhau Kết nối này
có thể trên 1 host hoặc nhiều host
Docker Compose: là công cụ cho phép run app với nhiều Docker containers
1 cách dễ dàng hơn Docker Compose cho phép chúng ta config các command trong file docker-compose.yml để sử dụng lại
Docker Services: là các containers trong production 1 service chỉ run 1 image
nhưng nó mã hoá cách thức để run image — sử dụng port nào, bao nhiêu bản sao container run để service có hiệu năng cần thiết và ngay lập tức
Trang 39Ý tưởng chính của Microservices là chia nhỏ ứng dụng lớn thành các dịch vụ nhỏ, kết nối với nhau gọi là các services Mỗi dịch vụ sẽ thực hiện một tập các chức năng riêng biệt Một số dịch vụ nhỏ sẽ lộ ra giao tiếp lập trình API để cho các ứng dụng khác hoặc client gọi tới
Khi vận hành, các service sẽ được chạy trong 1 máy ảo hoặc Container
Trang 4019
Hình 4.1 Ví dụ về Microservices
4.1.2 Ưu nhược điểm
Ưu điểm Nhược điểm Cho phép dễ dàng CI/CD các ứng dụng
Cải thiện khả năng bảo trì
Kiểm thử, triển khai hệ thống dễ dàng
hơn
Khó xây dựng một hệ thống Microservices
Khó khăn trong việc đảm bảo toàn vẹn CSDL