«av> middleware middleware.io Hình 1: Kiên trúc Microservices Microservices là một kiến trúc hệ thông bao gồm một tập hợp những dịch vu đã được chia nhỏ và tồn tại độc lập với các dịch v
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
LAP TRINH VIEN
GIANG VIEN HUONG DAN : Đỗ Thị Bich Ngọc
SINH VIÊN : Nguyễn Thanh Sáng
MÃ SINH VIÊN : BI7DCCN531
LỚP : DI7CNPM01
HÀ NỘI - 2021
Trang 2HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
LAP TRINH VIEN
GIANG VIEN HUONG DAN : Đỗ Thị Bich Ngọc
SINH VIÊN : Nguyễn Thanh Sáng
MÃ SINH VIÊN : BI7DCCN531
LỚP : DI7CNPM01
HÀ NỘI - 2021
Trang 3Chương 1: Tìm hiểu một số công nghệ liên quan 10
1 Công nghệ sử dụng cho lập trình Backend 101.1 Kiến trúc hệ thống Microservices 10
1.2 Thư viện Spring Boot hỗ trợ lập trình Java 13
1.3 Công nghệ sử dung cho lập trình Frontend 16
1.3.1 Thư viện React hỗ trợ lập trình JavaScript 16
1.4 Hé quản trị cơ sở dữ liệu MySQL 17
1.5 Cac công nghệ sử dụng khác 19
1.5.1 Công nghệ xác thực người dùng FireBase 191.5.2 Công nghệ đóng gói và triển khai ứng dụng Docker 191.5.3 Công nghệ lưu trữ dữ liệu S3 AWS 241.5.4 Công nghệ chạy mã nguồn không cần máy chủ Lambda AWS 26 1.5.5 Công nghệ tăng tốc độ tải ảnh CloudFront AWS 27 1.5.6 Công nghệ giám sát và phân tích nhật ký hoạt động của hệ thống
Prometheus và Grafana 281.5.7 Công nghệ tự động vận hành hệ thống Kubernetes 29
1.6 Tổng kết chương 1 3]
Chương 2: Phân tích hệ thống 32 2.1 Mô tả chung hệ thống 322.2 Xác định và mô tả các ca sử dụng 332.3 Xây dựng biểu đồ ca sử dung 34
2.3.1 Biểu đồ ca sử dụng tong quát của hệ thống 34 2.3.2 Biểu đồ phân rã các ca sử dụng 342.4 Kịch bản 372.5 _ Biểu đồ lớp phân tích 46 2.6 Sơ đồ tuần tự 47
2.7 Sơ đồ hoạt động 54 2.8 Tong kết chương 2 57
NGUYEN THANH SANG - D17CNPM0OI
Trang 4Đồ án tốt nghiệp
Chương 3: Thiết kế hệ thống 58 3.1 Thiết kế kiến trúc hạ tầng của hệ thống 58
3.2 Sơ đồ lớp thiết kế 60 3.3 Lược đồ cơ sé dữ liệu thiết kế 613.4 Mô ta các bang cơ sở dữ liệu 613.5 Tong kết chương 3 67
Chương 4: Cài đặt hệ thống 684.1 Cac công nghệ sử dung 684.2 Hình ảnh tiêu biểu hệ thống 68
4.3 Kết luận 72
Kết luận 73Tài liệu tham khảo 75
NGUYEN THANH SANG - DI7CNPMO1
Trang 5Đồ án tốt nghiệp
NHẬN XÉT, ĐÁNH GIA, CHO DIEM
(Của giảng viên hướng dan)
990900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000606060606
Điểm Kgy„.Y,„„ŸỶ (bằng chữ) Ộ ¬ ;
Dong ý/ Không dong ý cho sinh viên bảo vệ trước hội đông cham do án tot nghiệp?
Hà Nội, ngày thang năm 2022CÁN BỘ - GIẢNG VIÊN HƯỚNG DẪN
(ky, họ tên)
NGUYEN THANH SANG - DI7CNPMO1
Trang 6Đồ án tốt nghiệp
NHAN XÉT, ĐÁNH GIA, CHO DIEM
(Cua giang vién phan bién)
Điểm 5 5 <¿ (bằng chữ)
Đồng ý/ Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?
Hà Nội, ngày tháng năm 2022CAN BỘ - GIẢNG VIÊN PHAN BIEN
(ky, họ tên)
NGUYEN THANH SANG - DI7CNPMO1
Trang 7Đồ án tốt nghiệp
Lời cảm ơn
Đầu tiên, em xin gửi lời cảm ơn chân thành đến Học viện Công nghệ Bưu chính Viễn thông đã tạo điều kiện cho em có mỗi trường học tập đầy năng động và sáng tạo trong suốt thời gian em học tập và nghiên cứu tại trường.
Đặc biệt, Em xin gửi lời cảm ơn chân thành đến cô Đỗ Thị Bích Ngọc đã tận tình hướng dẫn, truyền đạt kiến thức, kinh nghiệm và luôn theo sát chúng em trong suốt quá trình thực hiện đề tài đồ án này.
Tiếp theo, em xin cảm ơn đến quý thầy cô của trường nói chung và quý thầy cô
của Khoa Công nghệ thông tin nói riêng đã truyền đạt không chỉ kiến thức cũng
như kinh nghiệm quý báu trong cuộc sống cho toàn thể sinh viên đang học tập tại
Trang 8Đồ án tốt nghiệp
Lời mở đầu
Trong nhiều năm gần đây, nghành công nghệ thông tin của Việt Nam đang chuyển
minh để cố găng khang định vị thé trên trường thế giới Một trong những khó
khăn của nghành công nghệ thông tin Việt Nam trên con đường phát triển là kiến
thức của các lập trình viên còn hạn chế và không đồng đều Ngoài ra, kiến thức của những lập trình viên có nhiều kinh nghiệm không được truyền đạt rộng rãi
tới các lập trình viên khác
Nhận thấy tam quan trọng của việc giải quyết van đề chia sẻ kiến thức, em muốn
sử dụng khả năng của mình dé xay dung mot hé thong website hỗ trợ lập trình viên hỏi đáp dé khuyến khích các lập trình viên đưa ra các van đề gặp phải va nhận được sự hỗ trợ của các lập trình khác có nhiều kinh nghiệm hơn Trong quá trình thực hiện đồ án, em cũng sẽ kết hợp học thêm các công nghệ mới đang là
xu thế hiện nay và sau đó có thể chia sẻ kiến thức của mình đến các lập trình viên
khác.
Nội dung của đô án bao gồm các phần sau:
Chương 1: Tổng quan về các công nghệ liên quan
Nội dung chương | sẽ giới thiệu các công nghệ được sử dụng dé xây dựng hệ
thông website hồ trợ lập trình viên
Chương 2: Phân tích hệ thống
Nội dung chương này sẽ tập trung vào phân tích hệ thống Thực hiện các công
việc: xác định và mô tả các tác nhân, ca sử dụng, xây dựng biéu đồ ca sử dụng,các kịch bản, biểu đồ lớp phân tích, biéu đồ tuần tự và biểu đồ hoat động của hệthống
Chương 3: Thiết kế hệ thống
Nội dung chương này sẽ đi sâu vào phân tích hệ thống Thực hiện các công việc:
thiệt kê kiên trúc hạ tâng của hệ thông, thiệt kê sơ đô lớp và cơ sở dữ liệu cho hệthông
Trang 9Đồ án tốt nghiệp
Thuật ngữ và các từ viết tắt
Thuật ngữ và từ viết tắt Nghĩa
API Application Programming Interface:
Giao diện lập trình ứng dụng
SQL Structured Query Language : Ngôn ngữ
truy van có cau trúcAWS Amazon Web Service
DDoS Denial of Service : Tân công từ chối dịch
vụ
CPU Central Processing Unit: Bộ xử lý trung
tam
CDN Mang phân phối nội dung
NGUYEN THANH SANG - DI7CNPMO1
Trang 10Đồ án tốt nghiệp
Danh sách hình ảnh
Hình 1: Kiến trúc Mier0serVi€es :- 52s St E2 211271211211112211 0111112110 10Hình 2: Cac Modules của Spring - G1 nh ng TH HH TH HH ngờ 14 Hình 3: Các lớp hoạt động trong thư viên Spring Boof - 5+ s« + cscserse 15 Hình 4: So sánh container và máy ả0 cv TH HH ng ngờ 20Hình 5: Biểu đồ thành phần máy ảo 2-22 S¿©S£2Ex£2EE+£EEtEEEtEEEtEEEerxrrrxrrrkerree 20
Hình 6: Biểu đồ thành phần confainer - 2-2 sSktE2EE£EE2E2EEEEEE2EEEEEEEeExerkrrex 21
Hình 7: Kiến trúc Docker ccssssscssssssssssesesssneseessneeeessnsesessnneecessneeeesnneseesnneeseesnneeeesnnees 22
Hình 8: Các đối tượng trong Dockker ccccttnhnHhHHHHHeHe 23 Hình 9: Mạng phân phối MOT QUIN ooo ‹‹‹‹‹‹3 - 27
Hình 10: Biểu đồ thé hiện dữ liệu của Grafama c.cccccccccsesssesssesssesssessseessesssesssesssessseess 29
Hình 11: Kiến trúc Kubernetes 2-2-2 E£+EE£EE£EE2EE£EEEEEEEEEEEEEEEEEECEEkrrkerkrres 30Hình 12: Biểu đồ sử dung tổng quát của hệ thống 2 2 s2 z+EeEkrErrkerkeres 34Hình 13: Biểu đồ phân rã ca sử dụng đăng ký, đăng nhập 35
Hình 14: Biểu đồ phân rã ca sử dụng quản lý bài viết 5-55 5ccctecsrrereeres 36 Hình 15: Biểu đồ phân rã ca sử dụng quản lý hồ sơ cá nhân 2-5-5552 36
Hình 16: Sơ đồ lớp PRAM CECH 01.5 46Hình 17: Sơ đồ tuần tự đăng ký tài khoản - - - sgk 47Hình 18: Sơ đồ tuần tự đăng nhập tài khoản - - 2-52 S2 22EEcEE2EeEkrEkrrkerkrex 47Hình 19: Sơ đồ tuần tự quên tài khoản - 2: 2 S9S£2SE£EEt2ESEEEEEESEEEEkrrkrrrkerkrres 48
Hình 20: Sơ đồ tuần tự thêm mới bài viết - 2-2-5 SE 2EEEEEEEEEEErEEkrrkerkrrex 49
Hình 21: Sơ đồ tuần tự sửa bài viẾt 2-22 S2222St 22x 22x 2212221211211 ckecree 49
Hình 22: Sơ đồ tuần tự xóa bài viết -2 sStc E THE12112211211 0111110111 cre 50
Hình 23: Sơ đồ tuần tự lay danh sách bài viết ¿5c scctExrterererrrrerrrres 50 Hình 24: Sơ đồ tuần tự bình luận bài viết ¿2© 25s EEeEEEEerkrrrrrrkerkrres
Hình 25: Sơ đồ tuần tự xóa bình luận bài viết
Hình 26: Sơ đồ tuần tự chỉnh sửa bình luận bài viết - 2-55 ©5cSecctcEerxerkeres 52 Hình 27: Sơ đồ tuần tự lấy bình luận bài viết - 22 5¿©2+2z++2Exczxxerxrrrxrsree 52
Hình 28: Sơ đồ tuần tự tạo hồ sơ cá nhân - 2 2© t+SE£EE2E2EEEEEE2EEEEEEEEExerkrrex 53
Hình 29: So đồ tuần tự chỉnh sửa hồ sơ cá MAM ccccececscecsesseessessesseesseesesssessessesserseens 53
Hình 30: Sơ đồ tuần tự lấy thông tin cá nhân - 2-2 S2 22EEcEESEEEkerEkrrkerkrrex 54
Hình 31: Sơ đồ hoạt động thêm bài viết mới 2-2 5 SeSE+EEtEESEEerkrrrerrkerkrres 54 Hình 32: Sơ đồ hoạt động chỉnh sửa bài viẾt 2-52 5s St E22 EEkerrkrrkerkrres 55 Hình 33: Sơ đồ hoạt động xóa bài viết -2- 5s 2t t2 2121127107121 011111 cre 56 Hình 34: Sơ đồ hoạt động cập nhật thông tin cá nhân 2-22 2 xe zzEerxezez 57 Hình 35: Biểu đồ hạ tầng hệ thống - 2 2© + £EE#EE2EEEEEEEEE271 2121121711211 re, 58
Hình 36: Sơ đồ lớp thiết kế 2© ¿+ %+SE9EEE9EEEEE2E12E17112117171111 11.1111.1111 re 60
Hình 37: Lược đồ cơ sở dữ liệu - 2-2 +2+SE£EE2EEEEEEEE2E1E71211271711211 2111111 ce, 61Hình 38: Giao diện chức năng đăng nhập - - 2225 S2 EssEEeirsrrrrrrrrrerrrree 68 Hình 39: Giao diện trang tim ttre - Ác TT TH TT TH Tnhh, 69
Hình 40: Giao diện đăng bài - - 2G 1S 2n HH H112 9212112 1T TT ng HH Tre 69
Hình 41: Giao diện trang cá nhân - Gà S2v HS HH TH ng HH nhe, 70 Hình 42: Cập nhật thông tim cá nhân - 2 S2 2213211211231 Ekrrree 70 Hinh 43: Co’ 0.00i0i0) 00010078 71Hình 44: Giám sát tài nguyên hệ thống -2 2¿©+£©2+2EEt2EEC2EEEEEEErExerkrrrkrrrke 71 Hình 45: Truy xuất nhật ký hoạt dOng oo c.cceccccccccsccscsssessesssessessesssessessessseesesssessesseesseeseess 72
NGUYEN THANH SANG - DI7CNPMO1 |»
Trang 11Đồ án tốt nghiệp
Danh sách bảng
Bảng 1: Bảng ca sử dụng cho người dùng - - 5 (S1 vn ng ng ng rưy 33Bang 2: Bảng kịch bản đăng ky tài khoản bang email 2- 2-52 sxc£zzzzxerxecez 37 Bang 3: Bang kịch ban đăng ky tài khoản bằng bên thứ ba 2-5- 5525552 38 Bang 4: Bảng kịch bản đăng nhập bằng email - 2 5° S2 *+EE£EE2EEeExrxerrxerreres 38 Bang 5: Bảng kịch ban đăng nhập người dùng bằng bên thứ ba - 2-52 39 Bang 6: Bảng kịch bản lấy lại mật khẩu người dùng 2-22 5 x2zzzzxcrxccez 40 Bang 7: Bảng kịch ban người dùng tạo bài viết mới - 2-55: 552cscctccErrxereeres 40 Bang 8: Bảng kịch bản người dùng cập nhật bài viết -2-©525scctcccrrxerreces 4I Bang 9: Bảng kịch ban người dùng xóa bài viết 5-5 52 SSStcrerkerrrrkerrres 42 Bảng 10: Bảng kịch bản hiễn thị bài viết trang cá nhân - 2 +cczccxerxcces 42 Bang 11: Bảng kịch ban tìm kiếm bài viết theo chú đề -2- 22 ©5<cczcvzxecrse 42 Bảng 12: Bảng kịch bản tìm kiếm bài viết theo hashfag . 2-55 55cccsccxccez 43 Bang 13: Bảng kịch bản người dùng bình luận bài viết -2- 2 5s 2seccxzccxz 43Bảng 14: Bảng kịch bản người dùng cập nhật thông tin cá nhân - 44 Bảng 15: Bảng kịch bản người dùng truy cập trang cá nhân khác - 44 Bảng 16: Bảng kịch bản thông báo cho người dùng 5 25 Si sesersirerree 45 Bảng 17: Danh sách các bảng trong cơ sở dữ liệu -.- 6 G5552 sseeeerrrrree 62 Bang 18: Bảng cơ sở dữ liệu Ïmagỹe SG vn TH nh ng nh nhe, 62 Bảng 19: Bảng cơ sở dữ liệu POS( - G2 h2 ng TH ng HH nh ngàng, 63 Bảng 20: Bang cơ sở dữ liệu Comamen[ - 5 - 0 5 1 21121 9E ng ng ngư, 63 Bảng 21: Bảng cơ sở dữ liệu LÏke - 6 + + 111 9193121 91 012 1v ng ngư 63 Bang 22: Bảng cơ sở dữ liệu Ca(€ØOFY TH HH nh ng nh ưy 64 Bảng 23: Bảng cơ sở dữ liệu Notificati0n - ese HH ng gen 64 Bảng 24: Bảng cơ sở dữ liệu Proffile - -G- G1121 132113 1119111911 911 vn ng ng nh rưy 64 Bang 25: Bang cơ sở dữ liệu Allowed-Ser - - Sc S22 3s stirirrrrrrrrrrrree 65 Bảng 26: Bảng cơ sở dữ liệu Blocked-Ser 6 5 1E SH gi ng ey 65 Bang 27: Bang co s6 8:1: 0)))87);;L)) Ta 65 Bang 28: Bang co’ s6° dit THOU 800 100018 66 Bảng 29: Bang cơ sở dữ liệu Work istry ees eeeeceeeneeseeeeerseeseecneeaeeaseeeeeeaees 66 Bang 30: Bang co’ s6' dit T@ SKA t1 66 Bảng 31: Bảng cơ sở dữ liệu User account 5 E23 21191 9121191 ngư 66 Bang 32: Bang cơ sở dữ liệu User_accounf_ r0Ì€ - -ó- 5 55 + + *svEseeseesserrerreeee 67 Bang 33: Bang cơ sở dữ liệu Role - 5 6 t1 ST HT HH ng ngàng 67
NGUYEN THANH SANG - DI7CNPMO1 | 9 |
Trang 12Đồ án tốt nghiệp
Chương 1: Tìm hiểu một số công nghệ liên quan
1 Công nghệ sử dụng cho lập trình Backend
oo— oo— oo— eo— oo—
oo- oo- so- s.= oe
Mircroservice Mircroservice Mircroservice Mircroservice Mircroservice
° v: v: v: v: Ỷ.
«av> middleware middleware.io
Hình 1: Kiên trúc Microservices
Microservices là một kiến trúc hệ thông bao gồm một tập hợp những dịch
vu đã được chia nhỏ và tồn tại độc lập với các dịch vụ khác trong hệ thống Mỗi
dịch vụ đảm nhiệm một chức năng duy nhất dé thực hiện một nghiệp vụ cụ thể của hệ thống.
Microservice được chia rất nhỏ, độc lập và ít phụ thuộc với nhau nên có thể đơn giản được viết và vận hành bởi những nhóm lập trình nhỏ Chính vì lý do đó,
một nhóm phát triển có thé cập nhật dich vụ của nhóm mình mà không ảnh hưởnghay phải triển khai lại toàn bộ các dịch vụ khác đã tồn tại của hệ thống.
Trong kiến trúc Microservices, mỗi dịch vụ có thé được triển khai bằng các
ngôn ngữ, cơ sở dir liệu khác nhau Trong đó, các dich vụ chỊu trách nhiệm quan
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 13Đồ án tốt nghiệp
ly va bảo toàn dữ liệu của từng dich vụ đó, tránh sự phụ thuộc dữ liệu ở tầng dữ
liệu nhưng theo đó sẽ có những khó khăn đi kèm trong việc thiệt kê
Kiên trúc Microservice bao gôm 3 nguyên tac thiệt kê sau:
Single purpose: Mỗi dich vụ nên tập trung vào một mục đích cụ thể và thực
hiện nó thật tốt Nếu trong thiết kế không đáp ứng được nguyên tắc này, một dịch
vụ làm quá nhiều tác vụ cũng lúc, điều đó biến hệ thống được phát triên theo cáchtạo ra rat nhiều dich vụ “monolithic” và như vậy ứng dụng vân sẽ ton tại tat cả
các nhược điểm của kiến trúc truyền thống.
Loose coupling: Các dịch vụ biết rất ít về nhau, một thay đôi ở một dịch vu
không yêu câu thay đôi ở các dịch vụ khác Sự giao tiêp giữa các dịch vụ nênthông qua các phương thức trao đôi API
Việc thiết kế không đáp ứng tinh Loose coupling có thé khiến sự thay đổi của một dịch vụ sẻ ảnh hưởng tới các dịch vụ khác, ứng dụng sẽ không thê cập nhật các thay đối nhanh chóng và an toàn khi có các bản vá lỗi hoặc tích hợp một
chức năng mới
High cohension: Mỗi dich vụ sé đóng gói tat cả những nghiệp vụ và dữ liệu lại với nhau thành một khối và không có ràng buộc với dịch vụ khác Khi ứng dụng cần xây dựng một tính năng mới, tat cả thay đổi nên được đặt chi trong dich
vụ mới đó
Khi mới tiêp cận với kiên trúc này, việc quan trọng khác cân đê ý là nhữngsuy nghĩ nhâm lân vê kiên trúc microservices:
- Một microservice không phải là một dịch vụ có mã nguồn nhỏ Quan niệm
sai lầm này đến từ tên “microservice” Mục tiêu của kiến tric microservice
không phải là chia ứng dụng thành càng nhiều dịch vụ nhỏ càng tốt Các dịch vụ có thê phức tạp miễn là chúng đáp ứng được ba nguyên tắc được nói ở phan 1.1.1.
- Một microservice không phải là dich vụ luôn được xây dựng với công nghệ
mới, ngay cả khi kiến trúc này cho phép nhóm phát triển sử dụng thử công
nghệ mới một cách dễ dàng nhưng day không phải là một mục tiêu được
ưu tiên của kiến trúc Nhóm phát triển có thé xây dựng các dịch vụ mới vớicông nghệ đã được xây dụng ở dịch vụ cũ, mien là nhóm phát triển cảmthấy phù hợp với nguồn lực
- Một microservice không phải là một dịch vụ phải được xây dựng từ đầu.
Khi đã có một ứng dụng sử dụng kiến trúc monolithic từ trước và được
thiết kế tốt, hoàn toàn có cơ hội dé chuyên đôi sang kiến trúc microservices
nhưng quan trọng vẫn cần đảm bảo ba nguyên tắc cốt lõi
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 14Đồ án tốt nghiệp
1.1.2 Lợi ích và khó khăn
Kiên trúc Microservices mang lại những lợi ích sau:
Một microservice nên đủ nhỏ dé một nhóm phát triển nhỏ có thé xây dựng, kiểm thử và trién khai Chính quy mô nhỏ thúc đây sự liên kết và hợp tác
giữa các thành viên tốt hơn, điều đó khắc phục được sự làm việc thiếu năngsuất của các nhóm với quy mô lớn vì thiêu giao tiép trong nhom, ngoai ra
dé duy tri một nhóm lớn đòi hỏi một chi phi rất lớn
Microservices được triển khai độc lập nên việc quản lý các bản sửa lỗi và
phát hành tính năng sẽ dé dàng hơn Ứng dụng có thé cập nhật một dich vụ
mà không cần triển khai lại cả ứng dụng và hoàn toàn khôi phục bản cập
nhật trước đó nếu có sự cố mà không ảnh hưởng tới toàn bộ hệ thống
Trong một kiến trúc Monolithic, Việc thêm một tính năng mới sẽ yêu cầu
chỉnh sửa tới rất nhiều các mã nguồn ở nhiều nơi khác nhau trong thư mục
và điều đó tác động đến các tính năng khác Bằng việc không dùng chung
mã nguồn và nơi chứa dit liệu Một kiến trúc microservice tối ưu hóa được
sự phụ thuộc và chính điều đó làm microservices trở nên dễ dàng thêm một
tính năng mới Nhóm phát triển có thể lựa chọn công nghệ phù hợp với tính năng mới và phù hợp với nguồn nhân lực của đội nhóm.
Nếu một microservice không khả dụng và dừng hoạt động, dịch vụ đó sẽ không làm gián đoạn cả ứng dụng như kiến trúc truyền thông Các dịch vụ
có thê được mở rộng tài nguyên phần cứng một cách độc lập khi có số lượng yêu cau xử lý tăng lên và không cần mở rộng toàn bộ ứng dụng Chi phí phần cứng sẽ được giảm dan Một số công nghệ hỗ trợ tốt là Docker
Swarm, Kubernetes
Trong một ứng dụng được xây dựng bang kiến trúc monolithic, việc cập nhật cơ sở dit liệu của một dịch vụ có thé trở nên khó khăn bởi các dịch vụ khác của ứng dụng có thê dùng chung dữ liệu nên việc thực hiện bất kỳ
một thay đổi nào đều ấn chứa rat nhiều rủi ro
Kiên trúc Microservice đem đên những khó khăn sau:
Tính phức tạp: Một ứng dung được xây dựng bằng kiến trúc microservices
sẽ chia thành các dịch vụ nhỏ nên mỗi dịch vụ sẽ đơn giản hơn một ứngdụng monolithic nhưng cả hệ thống sẽ phức tạp hơn
Cách tiếp cận phi tập trung có những ưu điểm nhưng cũng dẫn tới những vấn đề Ứng dụng có thê sử dụng rất nhiều các ngôn ngữ và thư viện khác nhau, điều đó khiến ứng dụng trở lên khó để bảo trì Tính chất trên chỉ có thé đem đến hữu ích nếu nhóm phat triển có thể đưa ra một số tiêu chuẩn
cho toàn dự án nhưng những tiêu chuẩn đó cần không hạn chế tính linhhoạt của các đội nhóm
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 15Đồ án tốt nghiệp
Việc sử dụng rất nhiều các dịch vụ nhỏ có thể đem đến kết quả là sự tương
tác nhiều hơn giữa các dịch vụ Ngoài ra nếu dé đạt được một nghiệp vụcần gọi tới một chuỗi các dịch vụ phụ thuộc khác (ví dụ: dịch vụ A gọi tới
dịch vụ B, B gọi tới C ), khi đó vân đề độ trễ sẽ trở thành một vấn đề lớn Nhóm phát triển cần thiết kế API rất cần thận, trách việc gọi lẫn nhau
mà không đạt được mục đích.
Với môi microservice tự chịu trách nhiệm cho việc quản lý dữ liệu nên tính
nhất quán của đữ liệu là một thử thách cần giải quyết giữa các nhóm phát triển Microservice là một hệ thống phân tán dữ liệu ở mức cao Năng lực
của nhóm phát triển cũng là một van đề mà cần cân nhắc Đội nhóm sẽ tínhtoán can thận dé ước tính có đủ kỹ năng và kinh nghiệm dé thành công với
cách tiếp cận mới.
1.2.Thư viện Spring Boot hỗ trợ lập trình Java
1.2.1 Thư viện Spring Boot là gì?
Thư viện Spring là một nền tảng mã nguồn mở được viết bởi Rod Johnson
và được phát hành lần đầu tiên vào tháng 6 năm 2003 sau đó trở thành thư
viện phát triển ứng dụng Java phố biến nhất hiện nay Vì lý do trên nên
Spring có cộng đồng hỗ trợ rộng rãi và tài liệu được viết đầy đủ đáp ứng
được việc nghiên cứu của lập trình viên
Thư viện Spring được xây dựng bao gồm các tính năng được tổ chức thành khoảng 20 mô-đun Thư viện Spring có kích thước rất nhẹ Phiên bản cơ
bản của Spring có kích thước khoảng 2MB
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 16Đồ án tốt nghiệp
) Spring Framework Runtime
Data Access/Integration Web
JDBC ORM WebSocket OXM JMS
Transactions
Core Container
Core Context
Hinh 2: Cac Modules cua Spring
Thư viện Spring Boot là một thu viện mã nguồn mở được hỗ trợ phát triển bởi
công ty có tên là Pivotal Spring Boot cung câp cho các lập trình Java một nềntảng dé bắt đầu xây dựng ứng dụng Spring một cách đơn giản thông qua việc rút
ngăn thời gian câu hình mà lập trình viên thường gặp phải khi sử dụng thư viện
Spring Spring Boot được xây dựng trên nên của thư viện Spring và bổ sung thêmmột số đặc điểm:
e Nhung máy chu web Tomcat vào thư viện giúp ứng dụng được khởi
chạy đơn giản mà không cần đóng gói thành tệp tin WAR.
e Tự động câu hinh Spring và các thư viện bên thứ ba khác
e Spring Boot không yêu cầu mã nguồn cần cấu hình XML như thư viện
Spring thông thường
e Spring Boot được thiết kế để tương thích với các ứng dụng được xây
dựng trên kiến trúc Microservices.
Thư viện Spring Boot được xây dựng trên các lớp dưới đây:
NGUYEN THANH SÁNG - DI7CNPM0I
Trang 17Đồ án tốt nghiệp
* Authentication * Business Logic s Storage Logic
* JSONTranslation * Validation
* Authorisation
Hình 3: Cac lớp hoạt động trong thư viên Spring Boot
Presentation Layer: Lớp xử lý và hién thi giao điện người dùng.
Business Layer: Lớp xử lý tất cả các nghiệp vụ của ứng dụng ví dụ như xác thực
tính đúng đăn của dữ liệu, xử lý dữ liệu theo nghiệp vụ của ứng dụng
Persistence Layer: Là lớp cầu hình và tạo câu nôi giữa ứng dụng tới hệ quản trị
cơ sở đữ liệu
Database Layer: Thực hiện trực tiêp các câu lệnh thêm, sửa, xóa, đọc tới cơ sở
dit liệu
1.2.2 Tại sao lại sử dụng thư viện Spring Boot
- Spring Boot giúp giảm thời gian phat triển sản phẩm, tránh việc câu hình
thủ công khi viết các tệp tin có định dạng phức tạp XML vì Spring Boot đã
được tích hợp sẵn tính năng tự động cau hình và từ đó tăng hiệu năng chung của nhóm phát triển sản phẩm.
- Spring Boot cung cấp nhiều công cụ hỗ trợ lập trình viên làm việc với các
cơ sở dtr liệu và các dịch vụ hàng đợi phô biến: Oracle, PostgreSQL,MySQL, MongoDB, Redis, Solr, ElasticSearch, Rabbit MQ, ActiveMQ
- Spring Boot được nhúng máy chủ web Tomcat khiến việc phát triển các
dich vụ microservice đơn giản hơn thư viện Spring truyền thống.
NGUYEN THANH SÁNG - DI7CNPM0I
Trang 18Đồ án tốt nghiệp
1.3 Công nghệ sử dụng cho lập trình Frontend
1.3.1 Thư viện React hỗ trợ lập trình JavaScript
Zep ReactJS
React là một thư viện của JavaScript được tạo dé xây dung giao diện người
dùng tương tac một cách nhanh chóng cho website
React là một thư viện mã nguồn mở, React sé chia giao diện thành những thành phần nhỏ để quản lý và có thể tái sử dụng ở nhiều nơi trong ứng dụng, giao diện người dùng chỉ chịu trách nhiệm cho lớp hiển thị của ứng
dụng
Ly do React được sử dụng rộng rãi:
React giúp tạo các ứng dụng web tương tac với người dung dễ dàngvì yêu
cầu it mã nguồn và cung câp nhiều chức năng đã được tích hợp săn, trái ngược voi VIỆC viết JavaScript thuan, mã nguôn trở nên phức tap khi ứng
dụng phinh to
React giúp ứng dụng chạy nhanh hon vì có kha nang so sánh trạng thai
trước đó của ứng dụng sau đó chỉ cập nhật những thành phần thay đổi mà không cần cập nhật lại tất cả các thành phần như các ứng dụng website
thông thường
Một giao diện được xây dựng bởi React sẽ chia thành nhiều thành phần.
Các thành phần này có logic và khả năng tương tác của riêng các thành phần và có thể được sử dụng lại trong toàn bộ ứng dụng nên làm giảm đáng
kế thời gian phát triển của ứng dụng.
React đễ học vì chủ yếu kết hợp các khái niệm HTML và JavaScript cơ
bản Điều quan trọng với người dùng là cần phải dành thời gian để hiểu
đúng về cách thư viên React hoạt động.
Facebook đã phát triển một tiện ích mở rộng trên trình duyệt giúp lập trình viên có thé sử dụng để tìm lỗi các ứng dung React Điều này làm cho quá trình gỡ lỗi các ứng dụng web React nhanh hơn va dé dang hơn Số lượng các công cụ và tiện ích mở rộng hỗ trợ cho các lập trình viên React đầy đủ React có một cộng đồng xây dựng tài liệu lớn và được hỗ trợ bởi Facebook.
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 19Đồ án tốt nghiệp
1.4 Hệ quản trị cơ sở dữ liệu MySQL
INSQL:
Trước khi di tìm hiệu vê công nghệ MySQL, cân có một cái nhìn khái quát vê co
sở dir liệu và ngôn ngữ truy van có câu trúc
Cơ sở dit liệu:
- _ Cơ sở dt liệu là một tập hợp có tổ chức của dữ liệu hoặc thông tin có cầu
trúc, được lưu trữ trong một hệ thống máy tính Một cơ sở dữ liệu thường được kiểm soát bởi một hệ thống quản tri cơ sở dữ liệu Các thành phần dữ liệu, hệ thống quản trị cơ sở dữ liệu cùng các ứng dụng tương tác được gọi
là hệ thống cơ sở dữ liệu.
- Dé liệu trong các loại cơ sở dit liệu phổ biến đang hoạt động ngày nay được
mô hình hóa thành các hàng và cột trong các bảng dé giúp xử ly và truy
van dữ liệu hiệu quả Dữ liệu trong đó có thé đơn giản dé truy cập, quan lý,
thay ‹ đổi, cập nhật Phần lớn các cơ sở dữ liệu sử dụng ngôn ngữ truy vân
có cau trúc (SQL) dé viết và lay dữ liệu
Ngôn ngữ truy vấn có cấu trúc: SQL cung cấp cho lập trình viên và người dùng
máy tính khác những khả năng sau:
- Dinh nghĩa dit liệu: bao gồm những câu lệnh giúp định nghĩa cơ sở dit liệu
và các đối tượng.
- Thao tác với dit liệu thông qua các câu lệnh dé cập nhật, thêm mới, xóa và
lây đữ liệu.
- Thao tác kiểm soát dit liệu cho phép cấp quyền đến một người dùng dé truy
cập một dữ liệu cụ thể trong cơ sở dữ liệu.
- Thao tác định nghĩa kiểu dữ liệu ví dụ như thay đổi dir liệu số thành số
nguyên Định nghĩa mỗi quan hệ của mỗi bảng trong cơ sở dữ liệu.
Hệ quan trị cơ sở dữ liệu MYSQL:
- MySQL là hệ quản trị cơ sở dé liệu mã nguồn mở phổ biến, được phát triển,
phân phối bởi công ty Oracle Với đặc trưng là một dạng mã nguôn mở,MySQL hoàn toàn có thé được tải xuống và sử dụng mà không cần phải trả
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 20Đồ án tốt nghiệp
bắt kỳ một loại phí nào Trong những trường hợp nâng cao hơn, nhóm phát
triển co thé hoc từ mã nguồn của MySQL và thay đổi mã nguồn phù hợp với
nhu cầu
- MySQL là một hệ quan tri cơ sở dữ liệu chứa tập hợp các dữ liệu có cấu trúc.
Việc thêm, truy cập và xử lý dữ liệu được lưu trữ trong cơ sở dữ liệu máy tính
cần có hệ quản tri cơ sở dữ liệu như MySQL Server.
- MySQL là một co sở dữ liệu có quan hệ Dữ liệu được lưu trữ trong các bảng
riêng biệt thay vì đặt tất cả trong một kho lưu trữ duy nhất Cau trúc cơ sở dữ liệu được tổ chức trong những tệp tin vật lý và được được tối ưu hóa tốc độ MySQL có những thành phần như: cơ sở dữ liệu, bảng, hàng, cột MySQL cho phép cau hình mối quan hệ giữa các trường đữ liệu khác nhau trong cơ sở
dữ liệu như quan hệ một-một, một- nhiều và trỏ mỗi liên hệ giữa các bảng Khi
đã cấu hình thành công, dữ liệu sẽ tuân theo những quy tắc này để tạo ràng
buộc, bảo toàn dữ liệu Nếu cơ sở dữ liệu được thiết kế tốt thì ứng dụng sẽ
không ton tại sự thiếu nhất quán, dư thừa dữ liệu, dữ liệu bị cũ hoặc bị thiếu.
- MySQL hoạt động tương thích hầu hết với các thiết bị như máy tinh dé bàn,
máy tính xách tay mà không quá tốn công cài đặt và vận hành với những ngườidùng thông thường Mỗi MySQL Server đều có những cau hình mặc định, nếu
muôn câp nhiều phần cứng cho máy chủ, máy chủ hoàn toàn có thê điều chỉnh
mở rộng cấu hình như tăng bộ nhớ đệm, tốc độ CPU và khả năng vào ra dữliệu băng những thao tác đơn giản Với những hệ thống phức tạp, MySQL có thê được thiết kế thành những cụm máy chủ để tăng khả năng chịu tải và hiệu suất của cơ sở đữ liệu.
Những thực nghiệm thực tế hiện nay cho thay MySQL là một hệ quan tri cơ
sở dữ liệu có khả năng xử lý đữ liệu lớn và nhanh nhất so với các giải pháp
hiện tại
- MySQL sẽ sử dung SQL dé truy cập dit liệu MySQL hoạt động theo mô hình
Client/Server MySQL có một lượng lớn các bản phân phối khác nhau dé phùhợp với những mục đích cụ thé, điều đó thuận lợi dé đáp ứng những nhu cầucủa từng nhóm phát triển khác nhau
MySQL là một lựa chọn hoàn hao với những lập trình viên mới tiếp cận với cơ
sở dit liệu vì tinh dễ dàng cài đặt, không ton công vận hành và hoàn toàn miễn
phi Ngoài ra, với những ứng dụng đòi hỏi xử lý dữ liệu lớn nhưng can đảm bảo
tính nhất quán dữ liệu thì MySOL là một lựa chọn không thể tot hơn.
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 21Đồ án tốt nghiệp
1.5 Cac công nghệ sử dụng khác
1.5.1 Công nghệ xác thực người dùng FireBase
Firebase Authentication
- _ Xác thực chắc chăn là một trong những điều quan trọng nhất trong phát triển
ứng dụng Một trong những công nghệ được sử dụng phô biến nhất trên thé
giới hiện nay là Firebase Ly do là Firebase cho phép ứng dụng lưu dữ liệu
người dùng một cách an toàn trên nên tảng Cloud và cho phép người dùng xác
thực thông qua các tài khoản của các ứng dụng khác một cách nhanh chóng
giúp tăng trải nghiệm người dùng
- Firebase cung cấp cho lập trình viên cả nền tảng phụ trợ bên dưới, các công
cụ hỗ trợ sản phẩm cũng như giao diện xác thực người dùng thân thiện, lập
trình viên chỉ cân tích hợp dịch vụ này vào ứng dụng của mình
- Firebase hỗ trợ xác thực bằng mật khâu, số điện thoại, xác thực thông qua các
ứng dụng phô biến như Google, Facebook, Twitter
1.5.2 Công nghệ đóng gói và triển khai ứng dụng Docker
Container
Dinh nghĩa: Container là một công nghệ hỗ trợ đóng gói toàn bộ mã nguồn và
tat cả các tài nguyên cần thiết dé ú ứng dụng có thê khởi chạy nhanh chóng, ô ồnđịnh và đơn giản trong việc di chuyền vận hành trong bat kỳ phần cứng nào
Vấn đề ứng dụng không hoạt động khi di chuyên từ môi trường này sang môi
trường khác thường phát sinh do sự khác biệt về thư viện yêu cầu và các thành phần phụ thuộc mà môi trường mới không tương thích Container giải quyết vấn đề này bằng việc cung cấp một cơ sở hạ tầng nhẹ sau đó đóng gói và triển
khai ứng dụng Toàn bộ mã nguồn, các tập tin cau hình và các thành phần yêucầu dé chạy ú ứng dụng được đưa vào một thành phan duy nhất gọi là “containerimage” Sau đó các ứng dụng có thê được khởi tạo từ “container image” tại
bất kỳ môi trường nào mà không cần bận tâm tới sự khác biệt với môi trườngcũ.
So sánh Container với Máy ảo truyền thong?
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 22Đồ án tốt nghiệp
VIRTUAL MACHINES CONTAINERS
Hypervisor Host Operating System
Host Operating System Infrastructure
Infrastructure
Hình 4: So sảnh container và may ao
- May ao: là một cách triển khai ứng dụng truyền thống Máy ảo hoạt động
dựa trên việc ảo hóa phần cứng thông qua các Hypervisor Mỗi máy ảo gồm một hệ điều hành cùng phan cứng được ảo hóa cho máy ảo đó Sau khi máy ảo được khởi tạo thành công, các thư viện và các thành phần yêu cầu sẽ được cài đặt lên đó và tiễn hành chạy ứng dụng.
Apps “4 Services Apps = Eaiye
¬
os ¬[ JƑ Kemel os + JF Kemel
[000] Hardwar
Hình 5: Biểu dé thành phan máy ảo
- Containers: là một cách triển khai ứng dụng với công nghệ mới Container
hoạt động dựa trên việc ảo hóa hệ điều hành Mỗi containers chia sẻ tài nguyên hệ điều hành của máy chủ Các thành phần được dùng chúng đều
là trạng thái chỉ đọc
NGUYEN THANH SÁNG - DI7CNPM0I
Trang 23Hình 6: Biéu đồ thành phan container
Máy ảo Container
Kích cỡ nặng Kích cỡ nhẹ
BỊ giới hạn hiệu năng bởi chỉ được cấp Đạt được hiệu năng của phần cứng
một tài nguyên phân cứng cụ thê
Thời gian khởi động khoảng 3 4 phút | Thời gian khởi động mili giây
Yêu cầu dung lượng bộ nhớ lớn Yêu cùng ít dung lượng bộ nhớ hon
Hoàn toàn bị cô lập và do đó an toàn It bảo mật nên kém an toàn
Tom tắt một số ưu điêm nồi bật cua Container:
- Container rất nhẹ giúp việc phát triển ứng dụng trở lên đơn giản hơn
- Ứng dụng được đóng gói và di chuyền dễ dàng.
- Phi hợp với việc triên khai trong môi trường sản phâm thực tế vì thời gian
hồi phục nhỏ, tính mở rộng mạnh mẽ và tích hợp trên nhiều nền tảng khác
nhau.
Tổng quan vê Docker?
Giới thiệu Docker:
- Docker là một nền tảng mã nguồn mở sử dụng để triển khai công nghệ
container Các ứng dụng được triển khai bằng Docker được đóng gói vớicác thư viện và các thành phần cân thiết vào trong một định dạng tiêu chuẩn
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 24Đồ án tốt nghiệp
của Container Nói cách khác ứng dụng chạy trong container sẽ chạy hoan
toàn độc lập với máy chủ mà ứng dụng sử dụng từ đó làm giảm sự phụthuộc vào môi trường
- Docker tương thích với tat cả các hệ điều hành hiện này từ đó các ứng dụng
ảo hóa do Docker tạo ra có thé dễ dàng hoạt động ở mọi nơi mà không cần bat kỳ sự thay đổi nào.
Kién trúc Docker:
DOCKER_HOST
Docker daemon
Hình 7: Kiến trúc Docker
- Docker sử dụng kiến trúc Client - Server Trong đó Client giao tiếp với máy
chủ Docker thông qua API Docker Client và Docker Server có thê chạy trên cùng một hệ thống và cũng có thé giao tiếp từ xa Giải thích một số đối tượng được sử dụng trong phạm vi đồ án.
NGUYEN THANH SÁNG - D17CNPM0I
Trang 25manages server manages
Hình 8: Các đối tượng trong Docker
Docker Server: là một chương trình chạy ngầm dưới hệ điều hành DockerServer lắng nghe các yêu cầu API đến và quản lý các đối tượng của Dockernhư images, containers, networks và volumes
Docker Client: là cách mà người sử dung tương tac với máy chủ Docker bang
cach sử dụng giao diện dòng lệnh Ví dụ khi gõ "docker run", một API tương
ứng với dòng lệnh sẽ được yêu cầu tới Server và thực hiện chạy ứng dụng cụ thê lên hệ thống.
Docker Registry: là nơi chứa các các bản thiết kế dé tạo ra một container còn được gọi là Docker Images Docker Registry có thé cài đặt ở chế độ riêng tư hoặc công khai dé có thé chia sé với cộng đồng Một số nơi chứa được sử dụng
rộng rãi như: Gitlab Registry, Docker Hub, Google Registry
Images: Image như một ban thiết kế va định nghĩa cách ứng dụng được triển khai Docker Server sẽ dựa vào bản thiết kế để khởi tạo container và vận hành
ứng dụng
Một số ưu điểm khi sử dụng Docker:
Thời gian dé tạo một Container bằng Docker là rất nhanh vì dung lượng thực
sự nhỏ Từ đó các giai đoạn phát triển, kiểm thử và triển khai ứng dụng có thêđược thực hiện nhanh hon Các Container chứa ứng dụng có thê được đưa vào
kiểm thử sau đó đưa vào môi trường sản xuất mà không cần phải thêm bất kỳ
sự thay đồi nào
Docker có khả năngđược triển khai cả ở máy chủ vật lý cũng như các nền
tang Cloud Có thé dé dang di chuyên các ứng dung từ môi trường Cloud sang
máy chủ cục bộ và từ cục bộ lên Cloud với tốc độ nhanh Sự điều chỉnh có thê
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 26Đồ án tốt nghiệp
dé dang được thực hiện Khi có bat kỳ thay đối mở rộng về phần cứng đều
không làm ảnh hưởng tới khả năng hoạt động của ứng dụng
- Docker sử dụng các tài nguyên có sẵn một cách hiệu quả hon vì cách hoạt
động không mat nhiều tài nguyên dé chạy trình Hypervisor.
1.5.3 Công nghệ lưu trữ dữ liệu S3 AWS
Mi N
Tổng quan về Amazon Simple Storage Service (S3):
S3 là một phan dịch vụ lưu trữ trên môi trường Cloud phổ biến của Amazon Web Services (AWS) S3 cung cap tinh sẵn dùng, su én định lên đến 99.99999 %, ngoài ra S3 cũng cung cấp khả năng mở rộng dung lượng lưu trữ và truy cập cao đáp ứng mọi nhu cầu lưu trữ và truy xuất của người dùng Một đặc điểm nôi bật của S3 thu hút người dùng là S3 tính phi dựa trên dung lượng lưu trữ và truy xuất dữ liệu người dùng sử dụng, điều đó giúp giảm chi phí cho việc vận hệ thống.
Phương pháp lưu trữ dữ liệu trên S3 khác với việc lưu trữ dữ liệu trên 6 đĩacứng truyền thống S3 sử dụng cách tiếp cận lưu trữ dạng khối, khi một tệptin được lưu trữ trong Amazon S3, tệp tin đó sẽ được lưu trữ ở nhiều nơi(trong nhiều trung tâm dữ liệu) đồng thời cùng lúc Amazon S3 thường
xuyên kiểm tra tính nhất quán của dữ liệu băng cách kiểm tra thông qua
thuật toán sử dụng mã băm Nếu phát hiện dữ liệu của tệp tin bi hỏng, tệp tin sẽ được khôi phục băng cách sử dụng dữ liệu đã được nhân bản khi tệp tin được tải lên lan đầu.
Một số khái niệm khi sử dụng S3:
Bucket: là một khái niệm chỉ vùng chứa lưu trữ trên AWS, đây nơi dir liệuđược lưu trữ trong bộ nhớ Amazon S3 53 cho phép lưu trữ vô hạn dữ liệu
và không giới hạn số lượng tệp tin hay thư mục trong một Bucket Mỗi dữ
liệu cần phải được lưu trữ trong một Bucket cụ thể S3 đặt giới hạn 5 TB
đối với kích thước của một tệp tin được lưu trữ Bucket được sử dụng là
định danh cấp cao nhất và được sử dụng để kiểm soát truy cập từ người dùng tới một nơi lưu trữ cụ thể.
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 27Đồ án tốt nghiệp
Key: Một tập tin hay thư mục có một khóa định dạng duy nhất sau khi được
tải lên một Bucket Key này là một chuỗi mô phỏng đường dẫn thư mục
phân cấp của hệ thống Biết Key cho phép chúng ta truy cập đối tượng trong Bucket Bucket, Key và tên phiên bản giúp xác định một đối tượng
là duy nhất.
S53 Region: Amazon có các trung tâm dữ liệu ở các khu vực khác nhau trên
toàn cầu bao gồm: USA, Ireland, South Africa, India, Japan, China, Korea, Canada, Germany, Italy, and Great Britain Người dùng có thé chon khu
vực muốn khi tao Bucket AWS khuyén khích nên chon một khu vực gần
nhất dé cung cấp độ trễ thấp hơn cho kết nối mạng hoặc giảm thiểu chi phí
sử dụng Dữ liệu được lưu trữ trong một S3 Region không tự động dichuyền khỏi trung tâm đữ liệu của vùng đó nhưng có thể di chuyên đữ liệutheo cách thủ công
Access control lists (ACL): là một tính năng được sử dụng để quản lý vàkiểm soát quyền truy _cập vào các tệp tin và Bucket ACL là các quy tắcđược đính kèm với moi Bucket và tệp tin để xác định người dùng và nhómngười dùng có quyên truy cập vào một Bucket hoặc tệp tin cụ thé Mặc
định, chủ sở hữu tài nguyên có toàn quyền truy cập vào tài nguyên sau khi được tạo Quyên truy cập Bucket giúp xác định ai có thé truy cập các tệp tin hoặc thư mục trong Bucket Quyền truy cập tệp tin xác định người dùng
nào được phép truy cập vào tệp tin và kiểu truy cập, thao tác được sử dụng
Ví dụ: có thé đặt quyền chi đọc cho một người dung và quyền đọc-ghi cho
người dùng khác
Bucket policies: là cách mà S3 AWS cho phép hoặc từ chối quyền của một người dùng khác cùng sử dụng dịch vụ AWS đối với tài nguyên Amazon S3 Với Bucket policies, S3 sẽ xác định các quy tắc bảo mật áp dung cho nhiều tệp trong một Bucket Đây là một chính sách bảo mật nội bộ trong
dịch vụ S3
Một số lợi ich nồi bật khi sử dụng S3:
S53 cung cấp những khái niệm rất dé hiểu dé tiếp cận, ngoài ra S3 AWS
cũng cung câp những cách tương tác đơn giản dé người dùng có thé lưu trữ
dễ dàng như sử dụng giao diện web, thao tác với dòng lệnh hoặc các SDK
dé hỗ trợ các lập trình viên.
S3 không giới hạn khả năng lưu trữ dữ liệu của người dùng Bảo mật cao
với nhiều tùy chọn dé có thê linh động với mục tiêu sử dụng.
S3 được thiết kế để chịu được tải lớn và khả năng phục hồi hệ thống rất
nhanh Theo tài liệu chính thống, Amazon S3 cam kết dịch vụ của mình có
khả năng duy trì tính sẵn sàng ở mức 99.9999 %,
S3 cung cấp các gói tùy chọn lưu trữ đữ liệu khác nhau tùy thuộc vào mục đích sử dụng Vi dụ dữ liệu đã cũ và ít được sử dụng tới sẽ có thể lưu trữ bang gói lưu trữ với chi phí thấp đi kèm với tốc độ truy xuất thấp hơn nhưng
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 28Đồ án tốt nghiệp
tiết kiệm được chi phí Ngoài ra, người dùng chỉ thanh toán với những dung
lượng lưu trữ mà người dùng sử dụng khi đó sẽ tránh lãng phí với các tải
nguyên và tiên bạc
1.5.4 Công nghệ chạy mã nguồn không cần máy chủ Lambda AWS
Lambda là một dạng dịch vụ chạy mã nguồn không cần máy chủ được cung cấp bởi AWS Lambda là một trong các dịch vụ quan trọng được AWS cung cấp hiện nay vì được sử dụng bởi hàng trăm nghìn khách hàng của Amazon Web Services (AWS) dé phục vụ hàng nghìn tỷ yêu cầu mỗi tháng.
Lambda thích hợp với hầu hết các ứng dụng trong các ngành công nghiệp với nhiều đối tượng khách hàng khác nhau từ giải trí đến dịch vụ tài chính và các ngành thương mại điện tử khác Những khách hàng tận dụng những lợi thế của Lambda như giảm thời gian đưa ứng dụng ra thị trường, tối ưu hóa chỉ phí vàcải thiện hiệu năng của ứng dụng
Lambda chạy mã nguồn của ứng dụng trên cơ sở hạ tầng có tính khả dụng cao
và thực hiện tất cả việc quản trị cơ bản, bao gồm bảo trì máy chủ và hệ điều
hành, cung cấp dung lượng và tự động mở rộng, vá lỗi, giám sát mã nguồn vàghi lại nhật ký hoạt động cua ứng dụng
Tóm tắt: Với Lambda, người dùng có thể tải lên mã nguồn ứng dụng; Lambda
sẽ xử lý các thành phan can thiết để chạy mã nguồn với tinh săn dùng cao.Mặt khác, Lambda cho phép tạo các ứng dụng không máy chủ và có khả năng
tích hợp với nhiêu dịch vu AWS khác.
Lợi ích: Một số lợi ích nồi bật ma Lambda Cung cấp:
Lambda chạy mã nguồn trên cơ sở hạ tầng có khả năng chịu lỗi cao và đặt dưới sự quản lý của AWS, trải rộng trên nhiều vùng khả dụng Lambda đảm nhiệm việc quản trị, bảo trì và sửa các lỗi bảo mật của cơ sở hạ tầng Ngoài ra
Lambda cũng cung cấp tính năng ghi nhật ký hoạt động và truy xuất nhất ký
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 29Đồ án tốt nghiệp
đó Từ đó các lập trình viên sẽ có thời gian để tập trung vào việc phát triển và
tối ưu ứng dụng.
- Lambda cung cap kha năng tự động nâng cấp tài nguyên dé đáp ứng khi ứng
dụng bị quả tải bởi lượt sử dụng lớn Lambda tự động nâng câp khi có mộtlượt truy cập lớn một cach đột ngột
- Nguoi dùng khi sử dung Lambda chỉ cần thanh toán mỗi khi mã nguồn được
chạy, điều đó khác với việc triển khai truyền thống là thanh toán bằng việc thuê máy chủ hoặc mua phần cứng và mat chi phi dé vận hành hang tháng trong khi tài nguyên không được tận dụng hết.
1.5.5 Công nghệ tăng tốc độ tải ảnh CloudFront AWS
¥)
Hình 9: Mang phân phối nội dung CDN: Mạng phân phối nội dung
- Là một hệ thống các máy chủ trên toàn cầu làm nhiệm vụ lưu bản sao của
các nội dung tĩnh bên trong ứng dụng, sau đó phân tán bản sao ra nhiều
máy chủ khác và từ các máy chủ đó sẽ gửi tới cho người dùng khi họ truy
cập vào ứng dụng Vì lý do các máy chủ được đặt khắp nơi trên thế giới
nên khi người dùng lay những nội dung trong ứng dụng như hình ảnh vàvideo, ứng dụng sẽ tìm đến máy chủ gan nhất và hién thi nội dung đến
người dùng Số lượng máy chủ các nhiều càng làm tăng trải nghiệm củangười dùng cũng như giảm tải cho toàn bộ hệ thống
CloudFront:
NGUYEN THANH SANG - DI7CNPM0I
Trang 30Đồ án tốt nghiệp
Là một dịch vụ của Amazon Web Service hỗ trợ tính năng CDN với máy
chủ được giải khắp toàn thế giới ( 180 máy chủ được đặt ở 73 thành phố
và 33 quốc gia ) CloudFront được Amazon thiết kế dé tối ưu hóa hiệu suất truy xuất nội dung và có thé mở rộng kha năng phục vụ khi có lưu lượng
truy xuất đữ liệu lớn Một trong những lo ngại khi sử dụng các dịch vụ ở
bên thứ ba là tính bảo mật thì cũng được AWS tích hợp sẵn và người dùng
có thể có nhiều tùy chọn định cấu hình để có dịch vụ bảo mật tối ưu, phù hợp với bài toán cụ thê.
Rất đơn giản dé sử dụng, ít tốn kém hon vi chi tinh phí trên kích thước dữ
liệu được truyền.
Một số trường hợp sử dụng:
1.
3
1.5.6
Ung dung can phân phối nội dung tĩnh (ảnh, video, văn bản): CloudFront
cải thiện độ trễ và giảm tải trên các máy chủ Giúp lưu nội dung tĩnh của
ứng dụng vao bộ nhớ của các may chủ trung gian từ đó mang lại cho người
xem trải nghiệm nhanh chóng và đáng tin cậy khi truy cập trang web
Phát video trực tuyến: có thê sử dụng CloudFront đề lưu vào bộ nhớ máy chủ trung gian các đoạn video trực tuyến và giảm tải cho máy chủ phátvideo
Nâng cao bảo mật: tích hợp khả năng ngăn chặn tan công DDoS, mã hóa
các dữ liệu nhạy cảm, phân quyền và khi đó thông tin chỉ có thể được xem
bởi những người cụ thể
Công nghệ giám sát và phân tích nhật ký hoạt động của hệ thống
Prometheus và Grafana
Prometheus và Grafana:
Prometheus: là một ứng dụng mã nguồn mở được sử dụng để giám sát dựa trên
số liệu thu thập từ hệ thống và tiễn hành cảnh báo khi các tình huống nguy hiểm xảy ra Prometheus tiến hành thu thập số liệu thông qua việc gửi các yêu cầu HTTP đến các ứng dụng hoạt động trên hệ thống, sau đó các ứng dụng đó sẽ tiễn hành trả về số liệu thực theo thời gian của ứng dụng hoạt động Số liệu sau khi
được trả về Prometheus sẽ được lưu vào một cơ sở dữ liệu dạng chuỗi thời gian
Dé người dùng truy xuất số liệu, Prometheus cung cấp cho người dùng một bộ ngôn ngữ truy vân là PromQL Ngôn ngữ truy vân PromQL sẽ hỗ trợ người dùng
phân tích các ứng dụng đang hoạt động và cơ sở hạ tang dé cung cấp những thông
tin đúng về tình trạng của hệ thống
Grafana là một ứng dụng mã nguồn mở được sử dụng dé phân tích dữ liệu từ
nhiêu nguôn khác nhau trong đó có thê đên từ Prometheus và hiên thị trên các
biêu đô đẹp mat va dê dang phân tích
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 31Đồ án tốt nghiệp
Hình 10: Biểu đô thé hiện dữ liệu của Grafana
1.5.7 Công nghệ tự động vận hành hệ thống Kubernetes
Cum may chủ Kubernetes
Kubernetes là tập hợp của một cum những may chủ (máy ảo hoặc máy vật ly)được liên kết với nhau để hoạt động như một đơn vị duy 1 nhất Theo cách truyền
thống, các ứng dụng sẽ được triển khai trên các máy ảo năm trên một hoặc nhiều
máy chủ vật lý và mọi thứ đều hoạt động tốt nhưng vấn đề xuất hiện khi ứng dụng
được thị trường chấp nhận với số lượng người dùng tăng cao và đòi hỏi nang cap
máy chủ, tăng khả năng phục vụ người dùng Việc triển khai ứng dụng sang máy
ảo mạnh hơn sẽ mất nhiều thời gian và xuất hiện nhiều rủi ro Kubernetes giải quyết vấn đề băng việc cung cấp một không gian làm việc với nhiều máy chủ liên kết lại và gọi là cụm máy chủ Kubernetes Khi ứng dụng cần nâng cấp tài nguyên, máy chủ mới sẽ được cài đặt và được kết nối thêm vào cụm máy chủ Kubernetes
đã tồn tại Bang cách làm này, việc nâng cấp sẽ không làm ảnh hưởng tới ứng
dụng đang chạy Ứng dụng được triển khai lên cụm, Kubernetes sẽ vận hành toan
bộ ứng dụng một cách tự động và tính toán dé dua ra những quyết định mở rộng hoặc giảm tài nguyên cấp cho ứng dụng theo số lượng yêu câu cần xử lý của
người dùng Kubernetes là mã nguôn mở, được phát triển bởi Google nhằm hỗ
trợ và triển khai các ứng dụng đưới dạng container
Kiên trúc cum máy chủ Kubernetes
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 324 4
Cụm máy chủ gồm hai thành phần chính: Bộ phận điều khiển trung tâm
(Kubernetes Control Plan) và bộ phận máy chủ trực tiép chạy ứng dung(Kubernetes Nodes)
«e Bộ điều khiển trung tâm: đóng vai trò như bộ não con người, chịu trách
nhiệm quản lý và đưa ra quyết định với toàn bộ cụm máy chủ Ví dụ lập kế hoạch thời gian hoặc chọn máy chủ để triển khai ứng dụng sau đó phát hiện
va phản hồi những sự kiện tác động đến cụm làm giảm khả năng phục vụcủa ứng dụng Các thành phan trong bộ điều khiến trung tâm có thê chạytrên bất kỳ máy chủ nào trong cụm Tuy nhiên, để đơn giản hóa việc quản
lý, các thành phần trong bộ điều khiển trung tâm sẽ được cài đặt chạy trên một máy ảo duy nhất gọi là Master Giải thích khái niệm cơ bản của các
thành phan trong bộ điêu khiển trung tâm:
- Kube-api-server: hoạt động như một công xác thực các yêu cầu được
gửi đến cụm máy chủ của quản trị hệ thống Các yêu cầu được gửi
dưới dạng API, sau khi được xác thực ở kube-api-server thì quản trị
viên sẽ được cấp một phạm vị quyền dé thực hiện điều khién cụm
máy chủ
Etcd: nơi lưu trữ dữ liệu tại các thời gian khác nhau của cụm Dữ liệu
được lưu trữ có thé phục vụ cho việc cập nhật hệ thống quay lại trạng thái trước đó nếu gặp lỗi tại thời điểm hiện tại hoặc giám sát toàn bộcụm.
Kube-scheduler: Giám sát những ứng dụng đang chạy hoặc chọn máychủ phù hợp dé triển khai ứng dụng lên máy chủ đó
Kube - controller manager: là nơi lấy dữ liệu từ etc dé tính toán và đưa ra những quyết định điều khiển cụm một cách tự động như tự động cấp thêm tải nguyên cho ứng dụng.
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 33Đồ án tốt nghiệp
Cloud-controller manager: chạy các bộ điều khiển dùng dé tương tac
với môi trường Cloud như Google Cloud Platform
e_ Máy chủ trực tiếp chạy ứng dụng (Kubernetes Nodes): là các máy ảo hay
máy vật lý làm việc như những máy ảo truyền thông dé lưu trữ những ứng
dụng đang ở trạng thái chạy nhưng khác là đặt dưới sự quản lý của bộ điều
khiển trung tâm (Master) Máy chủ trực tiếp chạy ứng dụng gồm 3 thànhphần chính là kubelet, kube-proxy và container runtime
¢ Kubelet: là một thành phan chạy trên mỗi máy chủ trong cụm nhằm
chịu trách nhiệm liên tục kiểm tra trạng thái của các ứng dụng chạytrong máy chủ đó để đảm bảo các cấu hình ban đầu của ứng dụngđược đáp ứng đúng và không bị thay đổi trong quá trình vận hành
e Kube-proxy: duy trì những quy tắc giao tiếp nhất định trên toàn bộ
cụm, giữa các thành phần bên trong một máy chủ tới máy chủ khác hoặc giao tiếp bên ngoài giữa các cụm máy chủ với nhau.
e Container runtime: là thành phan chịu trách nhiệm tải các bản thiết
kế, định nghĩa ứng dụng (images) và khởi chạy ứng dụng dưới dạngcontainers
1.6 Tổng kết chương 1
Trong Chương 1, đồ án đã trình bày về các công nghệ được sử dung trong dự án
và giới thiệu tông quan về cách tiếp cận kiến trúc Microservices dé xây dựng ứng
dụng a
Các chương tiếp theo sẽ đi sâu vào quy trình phát triển phần mềm dé có thé hiểu
rõ hơn về hệ thống website hỗ trợ hỏi đáp cho lập trình viên.
NGUYEN THANH SÁNG - DI17CNPM0I
Trang 34thứ 3 như Google, Facebook, Github Sử dụng tài khoản bên thứ 3 giúp lập trình
viên nhanh chóng truy cập vào hệ thống mà không mat nhiều bước xác thực
Ngoài ra hệ thống còn cung cấp các chức năng quên mật khâu giúp người dùng
lây lại tài khoản cá nhân
Hệ thống cho phép người dùng quản lý danh sách những bài viết hỏi đáp hoặc chia sẻ kinh nghiệm của mình Người dùng có thể tạo ra một bài viết mới hoặc sửa đối một bài viết đã tồn tại với nội dung gồm: Dữ liệu dạng văn bản (hỗ trợ định dạng chèn mã nguồn với ngôn ngữ tương ứng), một ảnh hoặc một danh sách ảnh mã nguồn cần hỗ trợ chỉnh sửa Bên cạnh đó trong bai viết mới người dùng
có thé chèn thêm hyperlink, cập nhật trạng thái cảm xúc, sử dụng hashtag dé phân biệt chủ đề công nghệ của bài viết cần hỗ trợ Quan trọng người dùng có thé tùy chọn sự riêng tư của bài viết, tùy chọn này cho phép người dùng đặt chế độ chỉ mình tôi, công khai với người dùng khác trong hệ thống Ứng dụng còn giúp
người dùng theo dõi được những bình luận hỗ trợ giải đáp, lượt thích với những
bài viết Ngoài ra, hệ thống cũng cho phép người dùng xóa những bài viết đã được đăng trước đó và không cho phép hồi phục khi đã bị xóa Người dùng sau khi tham gia hệ thống có thé viết bình luận đề hỗ trợ các lập trình viên khác trong các bài viết công khai và sẽ có một thông báo được gửi tới lập trình viên đặt câu hỏi Sau khi bình luận được tạo, người dùng có thể chỉnh sửa hoặc xóa bình luận củamình
Hệ thong cho phép người dung quản lý thông tin co bản của một lập trình bao gồm những thông tin cơ bản sau đây: địa chỉ nơi ở, nơi làm việc/học tập, ngày sinh, số điện thoại, email, kỹ năng, các dự án các nhân Những thông tin công
khai này sẽ làm tăng sự uy tín của lập trình viên hỗ trợ trả lời và trong trang cá
nhân, người dùng có thê quản lý các bài viết hỏi đáp và chia sẻ của mình.
NGUYEN THANH SANG - DI7CNPMO1
Trang 35ứng dụng thông qua các hình thức
- _ Tên đăng nhập/mật khâu
- Đăng nhập bằng tài khoản
Đăng ký Người dùng có thê đăng ký tài khoản mới
băng email và cung cấp mật khẩu
Đăng bài viết Chức năng cho phép người dùng tạo một
bài viết với nội dung có thể bao gồm: ký
tự, ảnh, cảm xúc, chủ đề, hashtag, đường
dẫn đính kèm và chia sẻ với một trong các
tùy chọn (công khai, chỉ mình tôi)
Tìm kiêm bài việt Người dùng có thê tìm kiêm bài việt với
nội dung, chủ đê mình quan tâm
Quan lý bài việt Người dùng có thê xem những bài viêt mà
mình đã đăng trước đó ngoài ra có khảnăng chỉnh sửa và xóa bài việt của mình
Quản lý thông tin cá nhân Người dùng có thể cập nhật thông tin cá
nhân của mình
Viết các bình luận trong các bài việt Ứng dụng cho phép người dùng bình luận
vào những bài viet mình quan tâm
Thể hiện cảm xúc với bài viết Ứng dụng cho phép người dùng ấn thích
bai việt
Thông báo sự kiện Ứng dụng tự động thông báo đến người
dùng những sự kiện liên quan
Bảng 1: Bang ca sw dụng cho người dùng
NGUYEN THANH SANG - DI7CNPMO1
Trang 36Tinh năng dang ky, đăng nhập.
NGUYEN THANH SÁNG - DI7CNPMO1
Trang 37Đồ án tốt nghiệp
a _& Pd * a = pes ` = &
Hình 13: Biéu đồ phân rã ca sử dung đăng ky, đăng nhập
NGUYEN THANH SANG - DI7CNPMO1
Trang 38Hình 14: Biểu đồ phân rã rã ca sử dụng ‹ quản lý bài viết
Tinh năng quản lý ho sơ cá nhân người dùng.
‘Hinh 15: Biểu đà phân rã ca sử dụng quản lý hồ sơ cá nhân
NGUYEN THANH SÁNG - DI7CNPMO1