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

Khóa luận tốt nghiệp Kỹ thuật phần mềm: Phát triển ứng dụng hỗ trợ chia sẻ thông tin du lịch cùng nhau

109 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

Về nội dung nghiên cứu: Tập trung tìm hiểu lý thuyết về các công nghệ để xây dựng hệ thốngmicroservices và ứng dụng di động bằng công nghệ React Native, các kỹ thuậtliên quan đến việc tr

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA CONG NGHE PHAN MEM

NGO DUC HOA

KHOA LUAN TOT NGHIEP PHAT TRIEN UNG DUNG HO TRO TU VAN

Build advisory and sharing tourist destinations application

KY SU NGANH KY THUAT PHAN MEM

TP HO CHÍ MINH, 2021

Trang 2

ĐẠI HỌC QUÓC GIA TP HÒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHAN MEM

NGO ĐỨC HÒA - 16520423

KHOA LUAN TOT NGHIEP

PHAT TRIEN UNG DUNG HO TRO TU VAN

& CHIA SE THONG TIN DU LICH CUNG NHAU

Build advisory and sharing tourist destinations application

KY SU NGANH KY THUAT PHAN MEM

GIANG VIEN HUONG DAN ThS NGUYEN THI THANH TRUC

TP HO CHi MINH, 2021

Trang 3

DANH SÁCH HOI DONG BẢO VỆ KHÓA LUẬN

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số

¬ ngày của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

1 TS Huỳnh Ngọc Tin — Chủ tịch.

2 ThS Thái Thụy Hàn Uyên - Thư ký

3 ThS Nguyên Công Hoan — Uy viên.

Trang 4

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC Độc Lập - Tự Do - Hạnh Phúc

CÔNG NGHỆ THÔNG TIN

TP HCM, ngày 22 thang 02 năm 2021

NHAN XÉT KHÓA LUẬN TOT NGHIỆP

(CUA CAN BỘ HƯỚNG DAN)

Tên khóa luân:

PHÁT TRIEN UNG DUNG HỖ TRỢ TƯ VAN & CHIA SE THONG TIN

DU LICH CUNG NHAU

Nhóm SV thực hiện: Cán bộ hướng dẫn:

Ngô ĐứcHòa 16520423 ThS Nguyễn Thị Thanh Trúc

Đánh giá Khóa luận

1 Về cuốn báo cáo: ;

SÔ trang s/¬ Sôchương 5

Số tài liệu thamkhảo 7 Sanpham 1

Một số nhận xét về hình thức cuốn báo cáo:

Cuốn báo cáo đầy đủ các phần tóm tắt đề tài, tổng quan, phân tích thiết kế hệthống, đặc tả use case, thiết kế giao diện và tài liệu tham khảo

2 Về nội dung nghiên cứu:

Tập trung tìm hiểu lý thuyết về các công nghệ để xây dựng hệ thốngmicroservices và ứng dụng di động bằng công nghệ React Native, các kỹ thuậtliên quan đến việc triển khai và quản lý hệ thống lên Google Cloud

Trang 5

Kubernetes, đồng thời áp dụng quy trình tự động triển khai (Auto DevOps)

của Gitlab CI/CD.

3 Về chương trình ứng dụng:

Ứng dụng di động PackNGo, Phat trién duoc mét hé thống hỗ trợ tư vấn và

chia sẻ thông tin du lịch cùng nhau bằng kiến trúc microservices

Tạo ra ứng dụng với giao diện thân thiện va dé sử dụng, bao gồm các tính

năng cần thiết phục vụ cho nhu cầu tạo, quản lý và chia sẻ thông tin cho

nhóm cùng du lich, theo dõi realtime vi trí của các thành viên trong đoàn khi

di chuyền để liên lạc và khắc phục nhanh sự có nếu có, tìm kiếm địa điểm

cung câp các tiện ích trong quá trình du lịch: quán ăn, tiệm sửa xe, nhà trọ,

Tích hợp với các ứng dụng mạng xã hội tiện cho việc chia sẻ và mời gọi bạn

bè cùng tham gia du lịch.

4 Về thái độ làm việc của sinh viên:

Sinh viên làm việc tích cực thực hiện đề tài, có tính thần học hỏi tiếp thu ýkiến đóng góp

Đánh gia chung:

Khoa luận đạt yêu câu của một khóa luận tot nghiệp kỹ su/ cử nhân, xêp loại Gioi

Diém từng sinh viên:

Ngô Đức Hòa: 9/10

Người nhận xét

Nguyễn Thị Thanh Trúc

Trang 6

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC Độc Lập - Tự Do - Hạnh Phúc

CÔNG NGHỆ THÔNG TIN

TP HCM, ngày 19 tháng 02 năm 2021

NHAN XÉT KHÓA LUẬN TOT NGHIỆP

(CUA CAN BỘ PHAN BIEN)

Tên khóa luân:

XÂY DỰNG ỨNG DỤNG THEO DÕI BỆNH NHÂN TIỂU ĐƯỜNG

Nhóm SV thực hiện: Cán bô phản biên:

Ngô Đức Hòa 16520423 ThS Phan Nguyệt Minh

Đánh gia Khóa luận

1 Vê cuôn bao cáo:

Số trang 87 Sốchương 5

Số bang số liệu 0 Sốhìnhvẽ 77

Số tài liệu tham khảo 7 San phẩm I

Một số nhận xét về hình thức cuốn báo cáo:

- _ Về hình thức, cuốn báo cáo tương đối trình bày đầy đủ các nội dung, đúng

định dạng Về bố cục cũng đã đạt được các yêu cầu cơ bản theo quy định

về hình thức trình bày Các hình ảnh có đánh số và ghi chú

- _ Bồ cục báo cáo bao gồm các chương:

Chương 1: Tổng quan đề tài

Chương 2: Kiến thức nền tảngChương 3: Phân tích thiết kế

Trang 7

Chương 4: Triển khai và phát triển sản phẩm

Chương 5: Tổng kết

2 Về nội dung nghiên cứu:

Sinh viên đã nghiên cứu và ứng dụng những công nghệ như Kiến trúcmicroservices theo hướng một hệ thống Event Driven Architecture, tìm hiểu

các stack công nghệ tương ứng cho việc xây dựng hệ thống microservices:

NodeJS, PostgreSQL, React Native, Redis, RabbitMQ hoặc Kafka, Docker

va Kubernetes.

Sinh viên đã triển khai được thành công một hệ thống microservices tương đối

hoàn chỉnh lên Kubernetes cluster, có khả năng theo dõi tinh trạng chung của

hệ

thống và xử lý sự cố mỗi khi phát sinh van đề Đồng thời, sinh viên còn tích

hợp được Gitlab CI/CD vào project dé tự động hóa việc kiểm thử và phân phối

mã nguôn mới nhât cho hệ thông.

3 Về chương trình ứng dụng:

Ứng dụng di động đa nên tảng cho việc chia sẻ thông tin du lịch cùng nhauvới tương đối đầy đủ các chức năng như đã thiết kế ban đầu Giao diện thuận

tiện, tương thích nhiều kích cỡ màn hình hiển thị Các chức năng của ứng dụng

hoạt động tốt Việc gợi ý sản phâm hoạt động tốt, tuy nhiên cần thêm dữ liệu

dé tăng tính chính xác của việc gợi ý đồng thời cần hoàn thiện thêm dé có thé

sử dụng trong thực tế

4 Về thái độ làm việc của sinh viên:

Sinh viên thé hiện thái độ nghiêm túc khi hẹn và làm việc với giáo viên phản

biện.

Đánh giá chung:

Khóa luận đạt yêu cầu của một khóa luận tốt nghiệp kỹ sư ngành Kỹ thuật Phần

mêm, xêp loại Gidi

Trang 8

Điểm từng sinh viên:

Ngô Đức Hòa: 9/10

Người nhận xét

Phan Nguyệt Minh

Trang 9

LỜI CẢM ƠN

Thực tế luôn cho thấy, sự thành công nào cũng đều gắn liền với những sự hỗtrợ, giúp đỡ của những người xung quanh dù cho sự giúp đỡ đó là ít hay nhiều, trực

tiếp hay gián tiếp Trong suốt thời gian từ khi bắt đầu làm luận văn đến nay, chúng

em đã nhận được sự quan tâm, chỉ bảo, giúp đỡ của thầy cô, gia đình và bạn bẻ xung

quanh.

Với tâm lòng biết ơn vô cùng sâu sắc, chúng em xin gửi lời cảm ơn chân thànhnhất từ đáy lòng đến quý Thầy Cô của Trường Đại học Công Nghệ Thông Tin đãcùng dùng những tri thức và tâm huyết của mình dé có thé truyền đạt cho chúng emtrong vốn kiến thức quý báu suốt thời gian học tập tại trường

Đặc biệt, chúng em xin chân thành cảm ơn ThS Nguyễn Thị Thanh Trúc đã tận

tâm chỉ bảo hướng dẫn chúng em qua từng buổi học, từng buôi nói chuyện, thảo luận

về dé tài nghiên cứu Nhờ có những lời hướng dẫn, day bảo đó, bài luận văn này củachúng em đã hoàn thành một cách xuất sắc nhất Một lần nữa, em xin gửi lời cảm ơnchân thành đến cô

Khi thực hiện luận văn chúng em còn bỡ ngỡ vì vốn kiến thức của chúng em cóhạn Do vậy, không tránh khỏi những thiếu sót, chúng em rất mong nhận được ý kiến

đóng góp của quý Thay Cô dé bài luận được hoàn thiện hơn

TP HCM, ngày 28 tháng 12 năm 2020

Ngô Đức Hòa

Trang 10

ĐẠI HỌC QUOC GIA TP HO CHÍMINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC Độc Lập - Tự Do - Hạnh Phúc

CÔNG NGHỆ THÔNG TIN

TP HCM, ngày 01 tháng 09 năm 2020

DE CƯƠNG CHI TIẾT

Tên đề tài: Phát triển ứng dụng hỗ trợ tư vấn & chia sẻ thông tin du lịch cùng

nhau

Cán bộ hướng dẫn: ThS NGUYÊN THỊ THANH TRÚC

Thời gian thực hiện: Từ ngày 01/09/2020 đến ngày 28/12/2020

Sinh viên thực hiện:

1 NGÔ DUC HÒA ~ 16520423Nội dung đề tài: (M6 ta chi tiết mục tiêu, phạm vi, đối tượng, phương pháp

thực hiện, kết quả mong đợi của đề tai)

Tổng quan đề tài:

e _ Việt Nam đang là một trong những nước có ngành dịch vụ đang trên

đà phát triển mạnh, đặc biệt ngành dịch vụ đang đóng góp ngày càng

cao trong tỉ trọng GPD của cả nước và được ky vọng là sẽ chiếm đến43% GPD vào năm 2025 Lượng khách du lịch nội địa và quốc tế đồ

về Việt Nam là cực kì cao với con số thong kê cho năm 2018 là 15,5

triệu lượt người đối với du khách quốc tế Song song với đó, xu hướng

du lịch ngau hứng, du lịch phượt đang được các bạn trẻ cực ki ưa

chuộng vì tính tự do về thời gian và địa điểm du lịch cũng như tính

linh hoạt khi có thé tự do lựa chọn phương tiện như xe máy, xe đạp

hay xe hơi, cũng như có thé tổ chức đi cá nhân hoặc đi thành các nhómnhỏ và lớn khác nhau Chính vì thế mà du lịch đang là một thị trường

vô cùng tiềm năng đề khai thác

Trang 11

e Với nhiều loại hình du lịch khác nhau mà nhu cầu của khách du lịch

cũng càng ngày càng trở nên đa dạng hơn trước rất nhiều, đi kèm theo

đó là sự yêu cau ngày càng cao về tính tiện dụng va sự ứng dụng cua

công nghệ vào trong các sản phẩm dịch vụ cho du lịch Minh chứng

cho điều này là ngày càng có nhiều các sản phẩm công nghệ đáp ứng

cho các nhu cầu khác nhau của du lịch như đặt vé xe, lên lịch trình

cho chuyền du lịch, đặt phòng, thuê hướng dẫn viên, review đặc san,

Có thé ké tên một số các ứng dung du lịch đang rất thịnh hành trên thị

trường ngày nay như VeXeRe, Booking, Agoda, Trivago, TripAdvisor, diadiemdulich.

e Đa số các san phẩm kê trên đều đánh vào các nhu cầu về đặt phòng,

giới thiệu địa điểm du lịch hay đặt vé xe khách, khá ít sản phẩm phục

vụ cho vấn đề chia sẻ lịch trình và hẹn nhóm đi du lịch cùng nhau.

Mục tiêu đề tài:

e Kiên trúc microservices:

o Tìm hiêu được khái niệm về kiên trúc microservices theo hướng

một hệ thông Event Driven Architecture.

o Tim hiểu các stack công nghệ tương ứng cho việc xây dung hệ

thông microservices: NodeJS, PostgreSQL, React Native, Redis, RabbitMQ hoặc Kafka, Docker va Kubernetes.

e Ứng dung thực tế (ứng dụng chia sẻ thông tin du lich cùng nhau)

o Tạo ra ứng dụng với giao diện thân thiện và dé sử dụng.

o Tạo ra các tính năng cần thiết phục vụ cho nhu cầu tạo, quản lý

va chia sẻ thông tin cho nhóm cùng du lịch, theo dõi realtime vi

trí của các thành viên trong đoàn khi di chuyên dé liên lạc và

khắc phục nhanh sự cô nếu có, tìm kiếm địa điểm cung cấp các

tiện ích trong quá trình du lịch: quán ăn, tiệm sửa xe, nhà trọ,

e Tích hợp với các ứng dụng mang xã hội tiện cho việc chia sẻ va mời

gọi bạn bẻ cùng tham gia du lịch.

Phương pháp thực hiện:

e Nghiên cứu công nghệ

o_ Môi trường triển khai: Docker, Kubernetes, Google Cloud

Platform

o Back-end:

Trang 12

= NodeJS: sử dung express framework dé tô chức dang

RESTful API.

= PostgreSQL.

* ORM: ObjectionJS.

= PassportJS và chuẩn OAuth 2 cho việc xác thực và cấp

quyên cho người dùng.

=" Facebook SDK, Google Map SDK.

= Redis dé cache thông tin

= RabbitMQ (hoặc Kafka) lam message queue cho các

service liên lạc với nhau.

=" Google Storage cho việc lưu trữ các file media: hình

ảnh, video,

= React Native.

= Redux, redux saga cho việc lưu trữ state cho toàn ứng

dung.

= Facebook SDK, Google Map SDK.

e Nghién cứu nghiệp vu:

o Tìm hiểu nhu cầu của người tham gia du lịch phượt

o Tìm hiểu quá trình lên kế hoạch cho chuyến đi

o Tìm hiểu quá trình mời gọi bạn bè cùng tham gia chuyến đi

o Tìm hiểu quá trình di chuyên theo nhóm khi du lịch phượt

o Tìm hiểu quy trình chia sẻ thông tin sau chuyến đi cho mọi

người.

Kế hoạch thực hiện:

Làm việc cá nhân, chủ yếu ứng dụng được thực hiện tại nhà và trình

bày với giảng viên hàng tuần dé giảng viên theo dõi tiến độ, đánh giá, nhận xét

và lên kế hoạch cho những tuần tiếp theo

Kết quả mong đợi:

Hoàn thiện ứng dụng di động với giao diện thân thiện và dễ sử dụng

với đầy đủ các chức năng cho việc lập kế hoạch và quản lý chuyến đi du lịch

Trang 13

phượt của cá nhân hoặc cả nhóm Hệ thống xử lý phía server chạy ôn định và

dễ dàng quản lý cũng như nâng cấp khi cần thiết

Kê hoạch thực hiện: (M6 ta kế hoạch làm việc và phân chia công việc các

thành viên tham gia)

Với thời gian thực hiện từ 01/09/2020 tới 28/12/2020, nhóm chia thành 5

giai đoạn làm việc, cụ thê:

- Giai đoạn 1: Nghiên cứu, tìm hiểu công nghệ cho việc phát triển

dé tài khóa luận.

- _ Giai đoạn 2: Phân tích nghiệp vụ, xây dựng mô hình UML mô tả

nghiệp vụ của đê tài khóa luận.

- Giai đoạn 3: Phát triển hệ thống và ứng dụng trên thiết bị di động

- Giai doan A: Trién khai hé thong lên dịch vụ Google Cloud và

quản lý băng Kubernetes.

- _ Giai đoạn 5: Viết báo cáo cho đề tài khóa luận

Giai đoạn 1

-Research

Tim hiéu dockerTim hiéu docker composeTim hiéu kubernetes

Tim hiéu NodeJS va express

framework

Tim hiéu React NativeTim hiéu api facebook, api

google map, api google storage

Tim hiéu Redis, RabbitMQ

Xây dựng use case Xây dung diagram

2 tuần (01/10/2020 —

08/10/2020)

Trang 14

Giai đoạn 3 - Xây dựng database 8 tuần (08/10/2020 —

Build Xây dựng back-end 08/12/2020)

Xây dựng app

Giai đoạn 4 - Deploy ứng dụng lên server 1 tuần (08/12/2020 —

Deloy 15/12/2020)

Giai đoạn 5 - Viết báo cáo 2 tuần (15/12/2020 —

Report Review lại code 28/12/2020)

Xác nhận của CBHD TP HCM, ngày 1 thang 9 năm 2020 (Ky tên và ghi rõ họ tên) Sinh viên

(Ký tên và ghi rõ họ tên)

ThS NGUYEN THỊ THANH TRÚC NGÔ ĐỨC HÒA

Trang 15

MỤC LỤC

1.1 _ Phát biểu đề tài nghiên COU oo ceccessessessessesssessessessesstesesseeseeseens |1.2 Mục tiêu và phạm vi của CC cuc net 2

1.2.1 Mục tiÊU HS HH TT xen xg 2

1.2.2 PRAM VI - 1111111293111 vn ng khen xa 3

1.3 Đối tượng sử MUN eeeecccssecsssesssssesssesssessesssessecssecsssssecssessesssecsusesecsses 31.4 — KẾt quả dự kiến -2- 2k 2k2 2112212112122 cre 31.5 _ Phương pháp nghiên cứu và nguồn số liệu -5¿55+¿ 3

1.5.2 Nguồn dữ liệu - 2-5 SE E2 2122122111121121 211111 cty 41.6 Điểm mới của luận văn : cccc2cvxtctEktrrrrkrrrrrkrrrrrrkrrrrk 41.7 Kết cấu luận văn - ¿tt 2 S121 5EEE111511E111111111115112 111111 xee 4Chương 2 KIÊN THUC NÊN TẢNG -2- 2 <+E2+E+Ee£EeEeEerxrreei 5

2.1 Công nghệ ao hóa Containerlization va Docker: - «+ 5

2.1.1 Dinh nghia — 5

2.1.2 Các thành phan chink w c ceccccccsscsscesessessessessestessessessessesssesessesses 6

2.1.3 Một số khái iG oa eeccseeeeecssssescessseeseessneseessneeeesneseessneeesseneeeen 6

2.1.4 So sánh Docker với Virtual Machine - 5 555555 S+s+ccss+ 7

2.2 Công nghệ điều phối container và Kubernetes - - 9

2.2.2 Các thành phần chính: + 2 2 +E££E£EE£EE2EEzEerEerkerxereee 102.2.3 Một số khái niệm - -c5ctccvttttttttrttrrrrttrrrrrrrrrrrrrrriio 12

2.3 €0 ]80//0900B.1 Ả.¬ 13

Trang 16

2.3.1 Dinh 2 nh an 13

2.3.2 Ưu điểm của việc thực hiện CI/CD trong dự áắn 14

2.3.3 Quy trình CI/CTD - + + kSk SH HT TT HH Hệ, 14 2.3.4 Gitlab CYU/CD nẴ 15 2.3.5 Gitlab Ñunn€T - ác ST ng ngàng nến 16

3.4 SO d6 Use Case? An 263.5 Sơ d6 lớp — Class điagram ¿- ¿5+ ++EEEeEEEE2EE2E2EeEEerkerkrex 27

3.6.1 Sơ đồ tuần tự chức năng Đăng nhập - 2-52 2 ecxerxzxxez 283.6.2 Sơ đồ tuần tự chức năng Đăng ky 2 c5z+ccxerererxee 29

3.6.3 Sơ đồ tuần tự chức năng Upload hình anh -5:-5¿ 303.6.4 Sơ đồ tuần tự chức năng Chỉnh sửa thông tin cá nhân 313.6.5 Sơ đồ tuần tự chức năng Đôi mật khẩu - zss+xczczxsxz 32

Trang 17

3.6.7.

3.6.8.

3.6.9.

Sơ đồ hoạt động chức năng Tạo chuyến đi mới - 33

Sơ đồ tuần tự chức năng Đánh dau địa điểm -¿-c+ccssx¿ 34 Sơ đồ tuần tự chức năng Cập nhật thông tin chuyến đi 35

Sơ đồ hoạt động chức năng Mời bạn bè tham gia chuyến di 36

3.6.10 Sơ đồ tuần tự chức năng Theo dõi vị trí thành viên trong đoàn 37

3.6.11 Sơ đồ tuần tự chức năng Cập nhật vi trí hiện tại 38

3.6.12 Sơ đồ tuần tự chức năng Viết review sau chuyến đi 39

3.7 Thiết kế giao diện người dùng của ứng dụng -c:- + 40 3.7.1 Giao diện màn hình Đăng nhập -¿- c5 S5 ‡ 2< ++csssssxss 40 3.7.2 Giao diện màn hình Đăng ký ¿5c St ‡+‡sxsesserrsrres 42 3.7.3 Giao diện màn hình Quản lý thông tin cá nhân - - 44

3.7.4 Giao diện màn hình Danh sách bài viẾt 2s+s+=szs+szs+z 48 3.7.5 Giao diện màn hình Tao mới chuyến đi 2 2s s2 s+¿ 51 3.7.6 Giao diện màn hình Danh sách chuyến đi -ss+- 57 3.7.7 Giao diện màn hình Chỉnh sửa thông tin chuyến đi 59

3.7.8 Giao điện màn hình Xem vi trí thành viên trong chuyến đi 62

3.7.9 Giao điện màn hình Viết review sau chuyến đi - 64

Chương 4 TRIÊN KHAI VÀ PHÁT TRIEN SAN PHẨM 66

4.1 Đăng ký tai khoản Google và khởi tao Project cùng với Cluster 66

4.2 Cài đặt docker, gcloud sdk và kubectÏ 5 55 <+++s<++<s+ 71 4.3 Dung project PackNGo Core API và triển khai lên cluster đã tạo 72

4.4 Tích hợp Gitlab CI/CTD - -.- - k*nnvvnnnHnHngg nnưy 77 4.5 Thực hiện việc trigger CI/CD khi push code s55 +s++ 82

Chương 5 TONG KẾT 2-2 S2E2E2E12E1EE1E7171121121111E21rxeE 85

Trang 19

DANH MỤC HÌNH VE

Hình 1.1: Hình thức du lịch phượt đang trở nên ngày càng phổ biến trong giới trẻ 2Hình 2.1: So sánh giữa kiến trúc Virtual Machine và Containerlization/Docker 5

Hình 2.2: Mô hình máy chủ ao Virtual Machines - 5-5 S2 *++scxsseeresse 7

Hình 2.4: Hệ thống file cắt lớp Container 2-2 + s2E++E+2EE+EEeEEerErEezrxrrxerxee 9Hình 2.5: Các thành phần chính của Kubernetes :- 2: 22 s¿22s+2sz2zx2zxzex 10

Hình 2.6: Các khái niệm trong Kubernef€s - - 5 2c 33+ * + Essvkrseersseerss 12

I0 1:8230600:.1589)//090 1n 15

Hình 2.9: Quy trình thực hiện CI/CD trên Gitlab CL/CD - 5-55 5<<++s53 16 Hình 2.10: Công nghệ NodeJS - 2 12112212 112 1n HH HH Hiệp 17

Hình 2.11: Framework EXT€SS c0 0221121125111 1 11118111115 1118118111111 xeE 18

Hình 2.12: Native App va Hybrid ADpp -. 5c 32c 32112 EEsEErrrksrrerirsrrsrrree 19 Hình 2.13: Công nghệ React ÌNatfIVe Q00 HS S1 HH HH 1H 11 1g ray 20

Hình 2.14: Hệ quan tri cơ sở dữ liệu PostgreSQL, - 55 S5 + + x+sssxssexss 21

Hình 3.1: Sơ đồ kiến trúc hệ thống - 2 ¿+ 1+SE+EE2EE2EE£E£EEEEESEE2EEEEErEerkrrkrree 24Hình 3.2: Sơ đồ triển khai của hệ thống -2- 2 2+SE+EE+EE£EE+2E2EEzEEerxerrrrer 25

Hình 3.3: Sơ đồ Use-case của hệ thống ¿- ¿©2222 22Et2E22EE2EEeEEsrkrrrrres 26

Hình 3.4: Sơ đồ lớp của hệ thống -. - 2 ¿SE EEEE2E2E21EE1E2121121121 11111 xe 27Hình 3.5: Sơ đồ tuần tự chức năng Đăng nhập 2-5 s+cx+E+2EzEerxerxerszxee 28

Hình 3.6: Sơ đồ tuần tự chức năng Đăng ký - 2-52 Ss cteEEeEErEEEerkerkerrrrex 29

Hình 3.7: Sơ đồ tuần tự chức năng Upload hình ảnh 2:2 ©5222xz+sz+>+2 30Hình 3.8: Sơ đồ tuần tự chức năng Chỉnh sửa thông tin cá nhân 31Hình 3.9: Sơ đồ tuần tự chức năng Đổi mật khâu 2- 2 2 2+Eczxezezsse2 32

Hình 3.11: Sơ đồ tuần tự chức năng Đánh dấu địa điểm -¿-c-cccccccxersxerez 34Hình 3.12: Sơ đồ tuần tự chức năng Cập nhật thông tin chuyến đi - 35

Hình 3.13: Sơ đồ tuần tự chức năng Mời bạn bè tham gia chuyến đi 36

Trang 20

Hình 3.14: Sơ đồ tuần tự chức năng Theo dõi vi trí thành viên trong đoàn 37Hình 3.15: Sơ đồ tuần tự chức năng Cập nhật vi trí hiện tại - 38Hình 3.16: Sơ đồ tuần tự chức năng Viết review sau chuyên đi - 39

Hình 3.18: Màn hình Dang ky - c2 2 1311221121111 11 1181111111111 15 ke 42

Hình 3.19: Màn hình Quản lý thông tin cá nhân 5 25 S+s*S+>+skx+eexses2 44

Hình 3.21: Màn hình Thay đổi mật khâu 2- 2 2 2+E£EE£EE2EE2EE2EeEEerxerxrxee 46

Hình 3.22: Màn hình Danh sách bài viẾt - -555c25ccccccxrerxrrrrrrrrrrrrrrree 48

Hình 3.23: Màn hình Danh sách bài viết với action bufton - 2-2-5 5z>s2 49Hình 3.24: Màn hình Tao mới chuyến đi 2-2-5 £+S+2EE+EE+£E+zEzE+zExzrxerxrrez 51Hình 3.25: Man hình Tìm địa Gi@m c.cccccccccecccceececcececescsesesescecsesusecsesvensececsveeeeeees 52

Hình 3.26: Màn hình Gắn tọa độ điềm di chuyền Am " 53 Hình 3.27: Màn hình Chon ngày cho chuyến di c cececccccscessessesessessessssssessessessesseaee 54

Hình 3.28: Màn hình Chon giờ cho chuyến đi 2 2 2 E+2E+£E2E++£++£xerxrzez 55Hình 3.29: Màn hình Danh sách chuyến đi 2-2 2s E+E++EE+E£+Ee£Eerxerszxez 57

Hình 3.31: Màn hình Chinh sửa chuyến đi với popup xác nhận xóa chuyến đi 60Hình 3.32: Màn hình Xem vị trí thành viên trong chuyến đi - 5 s2 s2 62Hình 3.33: Màn hình Xem vị trí thành viên trong chuyến đi - 5 52 52 64

Hình 4.1: Form tạo tài khoản Google - 5c 2c 3221121115115 ExeE 66

Hình 4.2: Tao Project TỚI SG 2c 221112111511 351 1511511111111 11 E11 E11 1111k tkr 67

Hình 4.3: Điền thông tin Project mới -¿- 2 + seEx‡EE2EE2EE2EEEEEEEEEEEEEEEEEEErkerkrree 68Hình 4.4: Tìm kiếm product Kubernetes Engine 2 + 2 + s2 2+Ee£xe£zz+zx+2 68

Hình 4.5: Enable Kubernetes Engine APÏ - - + Sc s32 vn triệt 69

Hình 4.6: Tao cluster mmỚI - - 2111111112253 11 111111530111 11kg 11 ky 69

Hình 4.7: Form tao cluster mỚII - + < +22 2113223111115 1 1135111115511 11 xee 70

Hình 4.8: Danh sách các cluster đã fạO - - - c2 1112231111253 1 111531111151 EEcezzxe 70

Trang 21

Dockerfile dé build image -2- 2: ©222S222Et2E2EE2EEtzxrerxrzrxres 73

Dựng container lên và kiểm tra tình trạng của container đã dựng 75

Push image lên Google Cloud R€g1SfFV - - 555 +5 ++ss+scxseeseres 75 Google Cloud Registry ST ng HH Hư 75

File deployment yall - + 2 331113211 129111 51111511111 xrE 76

Kiểm tra tình trạng của cluster bằng k9s ¿- 2 c+ccccccerssreee 77

Thêm Kubernetes cluster vào project ø1tlab - csscsc+sssxssersss 77

Chọn Thêm cÏusfer - - - + 2133322211332 13312331111 5311112811 18x re 77

Form tích hợp project với Kubernetes cluster đã có sẵn 78

Cấu hình gitlab CI/CTD -¿- 2-2 s+SE+EEE2EE+EE£EEEEEEEEEEEEEEEEEEEkerkerrrrex 79

Bật tính năng Auto DevOps dé thực hiện CI/CD 5- 55+: 79

Cấu hình cho Gitlab Runner :22++22+v2£xvvsrxvrsrrrrrsrrreg 80

Kiểm tra tình trang Gitlab Runner trên clusfer - 2-22 5+: 81

I0 In 10011177 83

Trang 22

DANH MỤC TU VIET TAT

CSDL Cơ sở dit liệu Cơ sở đữ liệu cho ứng dụng

HTTP HyperText Transfer Protocol Giao thức truyền siêu văn banJSON JavaScript Object Notation Dinh dang trao đổi dit liệu

UI User Interface Giao diện người dùng

SDK Software Development Kit Bộ sưu tập các công cụ phat

triển phần mềm

API Application Programming Giao diện lập trình ứng dụng

Interface

CUCD Continuous Integration and Quy trinh tich hop va trién khai

Continuous Delivery liên tục

VM Virtual Machine Máy ảo

OS Operating System Hệ điều hành

Trang 23

Chương 1 TONG QUAN DE TÀI

1.1 Phát biểu dé tai nghiên cứu

Việt Nam đang là một trong những nước có nganh dịch vụ đang trên đà phát

triển mạnh, đặc biệt ngành dịch vụ đang đóng góp ngày càng cao trong tỉ trọngGPD của cả nước và được kỳ vọng là sẽ chiếm đến 43% GPD vào năm 2025.Lượng khách du lịch nội địa và quốc tế đỗ về Việt Nam là cực kì cao với con sốthống kê cho năm 2018 là 15,5 triệu lượt người đối với du khách quốc tế Song

song với đó, xu hướng du lịch ngẫu hứng, du lịch phượt đang được các bạn trẻ cực

kì ưa chuộng vì tính tự do về thời gian và địa điểm du lịch cũng như tính linh hoạtkhi có thé tự do lựa chọn phương tiện như xe máy, xe đạp hay xe hơi, cũng như có

thé tổ chức đi cá nhân hoặc đi thành các nhóm nhỏ và lớn khác nhau Chính vi thé

mà du lịch đang là một thị trường vô cùng tiềm năng để khai thác

Với nhiều loại hình du lịch khác nhau mà nhu cầu của khách du lịch cũng càngngày càng trở nên đa dạng hơn trước rất nhiều, đi kèm theo đó là sự yêu cầu ngàycàng cao về tính tiện dụng và sự ứng dụng của công nghệ vào trong các sản phẩm

dịch vụ cho du lịch Minh chứng cho điều này là ngày càng có nhiều các sản phẩmcông nghệ đáp ứng cho các nhu cầu khác nhau của du lịch như đặt vé xe, lên lịch

trình cho chuyến du lịch, đặt phòng, thuê hướng dẫn viên, review đặc sản, Cóthé ké tên một số các ứng dụng du lich đang rất thịnh hành trên thị trường ngày

nay như VeXeRe, Booking, Agoda, Trivago, TripAdvisor, diadiemdulich.

Da số các san phẩm kê trên đều đánh vào các nhu cầu về đặt phòng, giới thiệu

địa điểm du lịch hay đặt vé xe khách, khá ít sản phẩm phục vụ cho van dé chia sẻ

lịch trình và hẹn nhóm di du lịch cùng nhau.

Trang 24

Hình 1.1: Hình thức du lịch phượt dang trở nên ngày càng phổ biến trong giới trẻ

1.2 Mục tiêu và phạm vi của đề tài

1.2.1 Mục tiêu

- Muc tiêu cuối cùng của đề tài: phát triển được một hệ thống hỗ trợ tư vấn

và chia sẻ thông tin du lịch cùng nhau bằng kiến trúc microservices

- Tao ra ứng dụng với giao diện thân thiện va dé sử dung, bao gồm các tính

năng cần thiết phục vụ cho nhu cầu tạo, quản lý và chia sẻ thông tin cho

nhóm cùng du lịch, theo dõi realtime vi trí của các thành viên trong đoàn

khi di chuyên dé liên lạc và khắc phục nhanh sự cố nếu có, tìm kiếm địa

điểm cung cấp các tiện ích trong quá trình du lịch: quán ăn, tiệm sửa xe,

nha tro,

- Tich hợp với các ứng dụng mang xã hội tiện cho việc chia sẻ và mời gọi

bạn bè cùng tham gia du lịch.

Trang 25

1.2.2 Phạm vi

- Đối tượng nghiên cứu: Công nghệ phát triển và triển khai hệ thống

microservices, đồng thời nghiên cứu và phát triển công nghệ hybrid mobileapplication bang React Native

- Thoi gian nghiên cứu: Dữ liệu thu thập và các định hướng, giải pháp được

đề xuất từ thời gian nhận đề tài tới lúc hoàn thành ứng dụng

- _ Giới hạn nghiên cứu: Pham vi nghiên cứu ở mức tìm hiéu và phát triển hệ

thông microservices va ứng dụng trên di động.

1.3 Đối tượng sử dụng

Những người sử dụng điện thoại thông minh có sở thích đi du lịch phượt cá

nhân hoặc theo nhóm.

1.4 Kết quả dự kiến

Hoàn thành ứng dụng di động PackNGo với giao diện thân thiện và dé sử dụng

với đầy đủ các chức năng cho việc lập kế hoạch và quan lý chuyến đi du lịch phượtcủa cá nhân hoặc cả nhóm Hệ thống xử lý phía server chạy 6n định va dé dangquản lý cũng như nâng cấp khi cần thiết

1.5 Phương pháp nghiên cứu và nguồn số liệu

1.5.1 Phương pháp nghiên cứu

Tập trung tìm hiểu lý thuyết về các công nghệ để xây dựng hệ thống

microservices và ứng dụng di động bằng công nghệ React Native, các kỹ thuật liênquan đến việc triển khai và quản lý hệ thống lên Google Cloud Kubernetes, đồng

thời áp dụng quy trình tự động triển khai (Auto DevOps) của Gitlab CI/CD Nghiên

cứu, so sánh các phương pháp thực hiện và chọn ra phương pháp phù hợp Tham

khảo các ứng dụng tương tự đã có mặt trên thị trường dé chọn ra cấu trúc xây dung

ứng dụng phù hợp.

Trang 26

1.5.2 Nguồn dữ liệu

Nguồn dữ liệu từ của luận văn được thu thập từ các nguồn đáng tin cậy (các

trang web chính thức về du lịch của chính phủ: https://vietnamtourism.gov.vn/)

1.6 Điểm mới của luận văn

Kết hợp giữa công nghệ quản lý mã nguồn (Git/Gitlab), công nghệ tự độngtriển khai dự án (Gitlab CI/CD) và công nghệ quản lý các service theo hướng

microservices (Google Cloud Kubernetes) để tạo ra một hệ thống hoàn chỉnh, có

khả năng tự phục hồi khi gặp sự có, giúp tiết kiệm thời gian trong quá trình pháttriển hệ thống

1.7 Kết cấu luận văn

Ngoài phần kết luận, mục lục, danh mục các chữ viết tắt, danh mục cácbảng, phụ lục và tài liệu tham khảo; luận văn được bố cục theo 5 chương:

Chương 1: Tổng quan đề tài

Chương 2: Kiến thức nền tảng

Chương 3: Phân tích, Thiết ké

Chương 4: Triển khai va phát triển sản phẩm

Chương 5: Tổng kết

Trang 27

Chương2 KIÊN THỨC NEN TANG

2.1 Công nghệ ảo hóa Containerlization và Docker:

2.1.1 Định nghĩa

Containerlization là một công nghệ cho phép các lập trình viên phát triển, vậnchuyên và triển khai các ứng dụng phân tán mà không bị ảnh hưởng bởi sự khácnhau về kiến trúc ha tầng giữa các môi trường triển khai khác nhaull Nhờ vậy,lập trình viên giảm thiểu được đáng kể thời gian và công sức cho việc chỉnh sửacau hình hay tránh gặp các lỗi liên quan đến việc triển khai ứng dụng tại các môi

trường khác nhau.

Containerlization đưa ra một giải pháp mới cho vấn đề ảo hóa, thay vì tạo ra

các máy ảo con chạy độc lập (Virtual Machine), các ứng dụng sẽ được đóng gói

lại thành các Container riêng lẻ Các Container này chạy chung trên nhân hệ điều

hành, chia sẻ chung tải nguyên của máy mẹ, do đó hoạt động nhẹ và nhanh hơn các máy ảo dạng Virtual Machine.

Docker là một trong những giải pháp cho công nghệ containerlization, được

viết bằng Go-lang, một ngôn ngữ lập trình hệ thống do Google phát triển và phát

Trang 28

2.1.2 Các thành phần chính

Các thành phần chính của Docker bao gồm:

- Docker Engine: là thành phần chính của Docker, như một công cu dé đóng

gói ứng dụng.

- Docker Hub: là dich vu cloud dé chia sé ứng dụng, có thé thao tác pull/push

voi cac docker image.

2.1.3 Một sô khái niệm

Một sô khái niệm phô biên vê Docker:

- Docker image: là một “read-only template” Chang hạn, một image chứa

hệ điều hành Ubuntu đã cài đặt sẵn Apache và ứng dụng web

- Docker registry: là kho chứa image Người dùng có thể tạo ra các image

của mình và tải lên đây hoặc tải về các image được chia sẻ

- Docker container: hoạt động giống như một thư mục (directory), chứa tất

cả những thứ cần thiết dé một ứng dụng có thể chạy được Mỗi một docker

container được tao ra từ một docker image Các thao tác với một container:

chạy, bật, dừng, di chuyền, và xóa

- Dockerfile: là một file chứa tập hợp các lệnh dé Docker có thé đọc và thực

hiện dé đóng gói một image theo yêu cầu người dùng

- Orchestration: là các công cụ, dich vụ dùng dé điều phối và quản lý nhiều

containers sao cho chúng làm việc hiệu quả nhat!”!.

Trang 29

VIRTUAL MACHINE VIRTUAL MACHINE VIRTUAL MACHINE

HYPERVISOR

HOST OPERATING SYSTEM

PHYSICAL SERVER

Hình 2.2: Mô hình máy chủ ao Virtual Machines

Khi mô hình triển khai bằng các máy ảo (Virtual Machine) ra đời, tài nguyêncủa máy tính được tận dụng một cách tốt hơn so với công nghệ triển khai theo

phương pháp truyền thống (1 máy chủ vật lý + 1 hệ điều hành + 1 application)

Tuy nhiên, việc ảo hóa này lại nảy sinh vấn đề mới:

- Ng6n tài nguyên: khi chạy 1 máy ảo, nó sẽ luôn chiếm | phan tài nguyên

cố định Vd: máy chủ có 512GB SSD, 16GB RAM Tao ra 4 máy ảo Linux,

mỗi máy cấp 64GB SSD và 2GB RAM Như vậy, sẽ mất 256 GB SSD đểchứa 4 máy ảo, và khi chạy cùng 4 máy ảo lên cùng lúc, chúng sẽ chiếm

8GB RAM Mặc dù chỉ chạy lên dé không đó thôi, chưa dùng gì cả nhưng

nó vẫn chiếm từng đó

- _ Tốn thời gian thực thi: thời gian khởi động, shutdown của các máy ảo sẽ

lâu, thường là hàng phút.

Trang 30

- Công kênh: việc phải chịu tải cho cả 1 nhóm máy ảo như vậy thì server

không thé chay hét hiéu suat duoc

Khi đó, công nghệ ảo hóa containerlization ra đời nham khac phục những

khuyết điểm trên

APPLICATION APPLICATION APPLICATION

CONTAINER CONTAINER CONTAINER

PHYSICAL SERVER OR VIRTUAL MACHINE

Hình 2.3: Mô hình máy ao Container

Với công nghệ này, trên một máy chủ, ta sẽ sinh ra được nhiều máy con (giốngvới ảo hóa), nhưng điều đặc biệt là các máy con (Guess OS) này đều dùng chungphần nhân của máy mẹ (host OS) và chia sẻ với nhau tài nguyên của máy mẹ (RAMchăng ghan) Như vậy việc tận dụng tài nguyên sẽ được tôi ưu hơn

Ngoài ra, việc sử dụng hệ thống file cắt lớp (layer file system) sẽ khiến việc

tôi ưu tài nguyên hiệu quả hơn.

Trang 31

Cu thé, mỗi máy con (container) mới, nó sẽ được xây dựng dựa trên 1 file anh

(image) dạng chi đọc (read-only) Trong mỗi máy con sẽ có thêm 1 lớp bọc

có-thê-ghi-được (writabe-layer), các thay đôi trong máy con sẽ được ghi lên đây Nhu

vậy, từ 1 image ban dau, ta có thé tạo nhiều máy con mà chỉ tốn rất ít dung lượng

6 đĩa

- _ Ưu điểm: nhanh, nhẹ, có thé chia sẻ dễ dàng qua DockerHub

- _ Nhược điểm : mới, cập nhật thay đôi thường xuyên

2.2 Công nghệ điều phối container và Kubernetes

Trang 32

tắt đi, một container khác cần phải khởi động lên Điều này sẽ dé dang hơn nếuđược xử lý bởi một hệ thống Và giải pháp cho vấn đề này chính là công nghệ điềuphối container (Container Orchestration) mà trong đó, Kubernetes là một công cụthông dụng nhất và đã được sử dụng cho nhiều hệ thống ở các công ty lớn: Google,

Slack, Shopify, Booking.com.

Kubernetes cung cấp một framework dé chạy các hệ thống microservices một

cách mạnh mẽ! Nó đảm nhiệm việc nhân rộng và chuyên đôi dự phòng cho ứngdụng hệ thống, cung cấp các mẫu cho việc triển khai (Deployment), dịch vụ

(Service), Khi người dùng định nghĩa những yêu cầu mong muốn đối với hệ

thống của mình, Kubernetes sẽ tự động thực hiện triển khai theo những yêu cầu đó

và cung cấp cho người dùng các công cụ cho việc theo dõi trạng thái của hệ thống,

cũng như sẽ tự khởi động lại các container bị lỗi, thay thế, xóa các container không

phản hồi lại cau hình health check đã được định nghĩa

Hình 2.5: Các thành phan chính của Kubernetes

Kubernetes chia hệ thong ra làm 3 thành phan chính là Master, Node và các

Addons, đảm nhiệm vai trò riêng biệt:

10

Trang 33

Kubernetes Master được xem như là trai tim của Kubernetes, được xây dựng

dé quản lý tất cả các hoạt động, thao tác với các container trong cluster Nó bao

gồm API Server (kube-apiserver), etcd, Scheduler (kube-scheduler), Controller

Manager (kube-controller-manager) va Cloud Controller Manager

(cloud-controller-manager):

API Server: cung cấp các RESTful APIs cho các thành phần khác trong

Kubernetes Master API Server lưu thông tin của các đối tượng trong

Kubenetes vào etcd.

etcd: là một hệ thống phân tán, mã nguồn mở, dùng dé lưu trữ các giá trị

key-value Kubernetes dùng etcd dé lưu, cập nhập và nhân bản các data

của nó.

Scheduler: có nhiệm vu là xác định node nao trong cluster có thể sử dụng

dé chạy các pods

Controller Manager: là tập hợp các vòng điều khiển quan sát các sự thay

đổi từ API Server dé đảm bảo rằng cluster luôn ở trang thái mà nó mong

muốn

Cloud Controller Manager: được sử dụng để tương tác với các Cloud

Provider (Google Cloud Kubernetes, AWS, ).

Worker Node được xây dựng dé chạy trên tat cả các node của Kubenetes

cluster, chịu trách nhiệm quản ly va báo cáo tình trạng của các Pods cho

Kubernetes Master, bao gồm các thành phan:

kubelet: chịu trách nhiệm quản lý và báo cáo các hoạt động của node về

API Server của Kubernetes Master kubelet sẽ chạy các container sử dụng

container runtime như Docker Nó sé không quản ly các container không

được tạo bởi Kubernetes.

kube-proxy: đảm nhiệm vai trò routing ø1ữa service và các pods.

Thành phân cuôi cùng của Kubernetes là các Addons, gôm các công cụ hỗ

trợ cho việc quản lý Kubernetes dé dàng và tiện lợi hơn: DNS Server, Web UI

11

Trang 34

(Dashboard) hỗ trợ quản lý Kubernetes cluster bang giao điện, Container

Resource Monitoring (record các thông tin về hệ thống vào database và cho phép

chúng ta phân tích các thông tin đó sử dung UJ),

2.2.3 Một số khái niệm

Service

Deployment

- Cluster: một cụm các máy chủ đảm nhiệm vai trò là một Worker Node và

được quản lý bởi Master Node.

- Cluster Node: là máy chủ (vật ly hoặc máy ảo) dùng lam Worker Node.

12

Trang 35

- Pods: là đơn vị quản lý nhỏ nhất trong cluster, đại điện cho 1 process đang

hoạt động trong | cluster, có chức năng quản lý hoạt động của container 1

Pod có thê quản lý 1 hoặc nhiều container bên trong nó

- Deployment: là một “kịch bản” thé hiện rõ các yêu cầu cho việc triển khai

ứng dụng trên cluster.

- Service: trỏ tới 1 tập hợp các pod thông qua các label dé tạo thành 1 nhóm

service dé cho môi trường bên ngoài cluster có thê truy cập tới.

2.3 Gitlab CI/CD

2.3.1 Định nghĩa

CI/CD

~~ £TM

Plan Code Build Test Release Deploy Operate

Hình 2.7: Quy trình CI/CD trong phát triển sản phẩm CNTT

Continuous Integration (Tích hợp liên tục - CI) là quá trình cho phép lập trình

viên tích hợp công việc vào một branch được chia sẻ thường xuyên, tang cường sự

hợp tác khi phát triển Tích hợp thường xuyên giúp kiểm định commit, giúp lậptrình viên sớm phát hiện các lỗi chức năng có thê xảy ra trong quá trình làm việcthông qua việc chạy các test suite khi phát hiện có những thay đổi mới, tăng tinh

an toản và tính lưu động cho việc phát triên sản phâm.

Continuous Delivery (Phân phối liên tục — CD) là quá trình dién ra khi có sựthay đổi code và sẽ tiến hành tự động merge code và tạo ban build dành cho môi

13

Trang 36

trường phát triển, thực hiện việc chuẩn bị release môi trường production Thông

thường thì trước giai đoạn này sẽ có quy trình Continuous Integration (C]).

2.3.2 Ưu điểm của việc thực hiện CI/CD trong dự án

Tiết kiệm chi phí: công việc test sẽ được thực thi bởi CI, và khi code đã

pass qua lần test đó sẽ được triển khai lên môi trường production một cách

tự động, có nghĩa là đã loại bỏ được việc tốn chi phí nhân công va chi phíthời gian để xử lý công việc đó

Nâng cao tốc độ triển khai: chi phí rút giảm được qua việc làm đó sẽ được

đầu tư vào việc phát triển Vì vậy, giúp cho việc nâng cao tốc độ triển khai,

và cũng sẽ liên tục triển khai thêm các việc update mới nữa

Thay đổi mã nguồn nhỏ hon: do những thay đổi về code liên tục được pháthiện, kiểm tra và phân phối ra môi trường kiểm thử nên số lượng mã nguồnthay đôi sẽ được chia nhỏ ra

Cách ly lỗi tốt hơn và nhanh hơn: mã nguồn thay đổi được chia nhỏ ra danđến việc phát hiện được sớm các sai sót trong quá trình làm việc và nhanh

chóng sửa chữa.

Không bao giờ gửi mã nguồn bị hỏng: quá trình phân phối được diễn rasau khi đã hoàn tất quá trình kiêm thử và được làm hoàn toàn bằng máy,cho nên mọi sai sót xảy ra đều sẽ không được thông qua, ngăn chặn việc

phân phối mã nguồn chứa lỗi.

2.3.3 Quy trình CI/CD

Có rất nhiều quy trình, công cụ khác nhau dé ứng dụng CI/CD vào dự án

Dưới đây là quy trình được áp dụng trong đề tài khóa luận này:

Bước 1: Khởi tao repository va có branch default là master dùng cho môi trường production, branch develop dùng cho môi trường staging va branch uat

dùng cho môi trường user acceptance testing (môi trường test dành cho tester)

Bước 2: Trừ owner va maintainer ra, các lập trình viên khác phải push code

tính năng lên branch của mình được checkout từ develop và sau khi hoàn tất

14

Trang 37

thì tự merge tính năng cần test vào branch uat và tạo merge request vào branch

develop.

Bước 3: Hệ thống tự động thực hiện test mã nguồn trên branch uat, nếu thành

công thì sẽ triển khai tự động mã nguồn lên server uat Nếu that bai thì sẽ thôngbáo lỗi và ngừng quá trình triển khai tại đó

Bước 4: Tester vào hệ thống uat để kiểm thử và xác nhận thỏa điều kiện détriển khai lên môi trường production

Bước 5: Owner hoặc Maintainer sẽ xem qua merge request Nếu không gặp

vấn đề thì sẽ chấp nhận cho merge vào branch develop

Bước 6: Khi tới thời gian phát hành tính năng mới, Owner merge từ develop

Bước 9: Quay lại bước 2 với việc phát triển tính năng mới, đồng thời lắng nghephản hồi từ phía khách hàng về tinh năng hiện tại

2.3.4 Gitlab CI/CD

Pipeline Jobs 9 Tests

Preparation

O coroos

Building syntax Testing Deploy

© ouild-oroductio G @ estint @ ohpstan

dé có thé lay mã nguồn từ respository

15

Trang 38

Từ khi Gitlab ra mắt tính năng Gitlab CI/CD, việc áp dụng CI/CD vào quytrình phát triển sản phẩm càng dé dang hơn bao giờ hết Mã nguồn dé ở Gitlab, rồi

cài đặt CI/CD dé test va deploy mã nguồn tự động Tat cả những công đoạn CI/CDtrên đều sẽ được thực hiện bởi Gitlab Runner

2.3.5 Gitlab Runner

> >

code GitLab install pushed trigger dependencies,

to GitLab GitLab Runner run tests job

Hình 2.9: Quy trình thực hiện CI/CD trên Gitlab CI/CD

Gitlab Runner là thành phần cực kỳ quan trọng trong workflow Gitlab CI Nếu

không có Runner thì sẽ không có lệnh test, deploy nào được thực thi Runner có

nhiều loại, phân biệt dựa vào cái gọi là executor Khi khởi tạo runner, người dùng

sẽ phải chọn nó là loại executor nao, và nó sẽ quyết định môi trường thực thi các

câu lệnh trong file config trong project (.gitlab-ci-yml).

Trong phạm vi khóa luận này, nhóm sử dung Gitlab Runner với executor là

Kubernetes dé chạy quy trình CI/CD lên trên cluster trên Kubernetes Kubernetesexecutor khi dùng với Gitlab CI/CD sẽ kết nối tới Kubernetes API trong cluster để

khởi tạo pod cho mỗi Gitlab CI/CD jobf.

16

Trang 39

2.4 NodeJS/Express

2.4.1 Công nghệ NodeJS

NodeJS là một JavaScript runtime được xây dựng trên JavaScript Engine V8

của Chrome và là một mã nguồn mở đa nền tảng dùng đề phát triển các ứng dụng

phía server và các ứng dụng liên quan đến web”.

Trước đây, khi có một yêu cầu tới phía máy chủ sẽ sinh ra một thread dẫn tới

khi có quá nhiêu yêu câu thì máy chủ sẽ bị chậm chạp và việc xử lý thread cũng

gây khó khăn cho lập trình viên cũng như khó tiếp cận từ lúc đầu

Vì thế, NodeJS dựa trên sự kiện và xử ly theo mô hình non-blocking I/O détạo ra các ứng dụng nhẹ và hiệu quả cho các ứng dụng về dữ liệu thời gian thực

chạy trên các thiết bị phân tán Có thể hiểu rằng, với mỗi yêu cầu tới phía NodeJSthì sẽ chăng bao giờ gặp trường hợp bị khóa tài nguyên (lock up) như việc xử lý

thread truyền thống Ngoài ra, xử lý sự kiện cũng rat dé tiếp cận cho lập trình viênmới học, đây cũng là lý do chính mà NodeJS được phát trién mạnh mẽ trong những

năm gan đây NodeJS cung cấp cho chúng ta các module JavaScript đa dạng, có

thé đơn giản hóa sự phát triển của các ứng dung web sử dụng NodeJS với các phần

mở rộng này.

17

Trang 40

2.4.2 Framework Express

nedes

—XOFQSS

Hình 2.11; Framework Express

Express là một Framework nhỏ nhưng linh hoạt được xây dựng trên nền tang

của Nodejs, cung cấp đầy đủ các tính năng mạnh mẽ để phát triển web hoặcmobilel9l,

Express cung cấp thêm các tính năng dé lập trình viên lập trình tốt hon ma

không làm giảm tốc độ của Node1S

18

Ngày đăng: 02/10/2024, 04:26

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

TÀI LIỆU LIÊN QUAN

w