1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng hệ thống website hỗ trợ hỏi đáp cho lập trình viên

77 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Hệ Thống Website Hỗ Trợ Hỏi Đáp Cho Lập Trình Viên
Tác giả Đỗ Thị Bích Ngọc, Nguyễn Thanh Sang
Người hướng dẫn Nguyễn Thanh Sỏng
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Lập trình viên
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 77
Dung lượng 21,21 MB

Nội dung

«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 1

HỌ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 2

HỌ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 3

Chươ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 23

Hì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 25

manages 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 32

4 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 34

thứ 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 36

Tinh 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 38

Hì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

Ngày đăng: 08/03/2024, 13:53

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN