ĐẠI HỌC KINH TẾ QUỐC DÂN
TRƯỜNG CÔNG NGHỆ
----------------
KHÓA LUẬN TỐT NGHIỆP
Đ tài: NGHIÊN CU VÀ TRIN KHAI H
THNG DEVOPS CHO NN TNG WEBSITE
Tên sinh viên : Nguyễn Trí Dũng
Mã sinh viên : 11218445
Lớp : Công nghệ thông tin 63A
Ngành : Công nghệ thông tin
Khoa : Công nghệ thông tin
Giảng viên hướng dẫn : Trần Thị Mỹ Diệp
Hà Nội, 11/2024
MỤC LỤC
MỤC LỤC................................................................................i
MỤC LỤC HÌNH ẢNH.............................................................iii
DANH MỤC CÁC TỪ VIẾT TẮT...............................................vi
CHƯƠNG 1. TỔNG QUAN VỀ BÀI TOÁN................................2
1.1 Lý do tiếp cận bài toán................................................2
1.2 Giới thiệu về Devops...................................................2
1.2.1 Khái niệm về Devops............................................2
1.2.2 Lịch sử hình thành của thuật ngữ Devops.............3
1.2.3 Quy trình của Devops trong vòng đời phát triển
phần mềm..............................................................................5
1.3 Giới thiệu về CI/CD......................................................7
1.3.1 Khái niềm về CI/CD...............................................7
1.3.2 CI/CD pipeline........................................................9
1.3.3 Nguyên tắc trong CI/CD........................................9
1.3.4 Lợi ích của CI/CD.................................................11
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VỀ NỀN TẢNG CÔNG NGHỆ
...................................................................................................13
2.1 Virtualization, Containerization và công cụ Docker...13
2.1.1 Virtualization.......................................................13
2.1.2 Containerization..................................................14
2.1.3 Docker.................................................................15
2.2 Version Control System và công cụ Git.....................17
2.2.1 Version Control System.......................................17
2.2.2 Git.......................................................................19
2.3 CI/CD và Jenkins........................................................20
i
2.3.1 Kiến Trúc Jenkins.................................................20
2.3.2 Định Nghĩa..........................................................21
2.3.3 Tính Năng Chính của Jenkins...............................21
2.3.4 Quy Trình Hoạt Động của Jenkins........................22
2.3.5 Lợi Ích Của Jenkins..............................................23
2.4 Monitoring với Prometheus, Exporter và Grafana.....24
2.4.1 Monitoring...........................................................24
2.4.2 Prometheus.........................................................26
2.4.3 Exporter..............................................................28
2.4.4 Grafana...............................................................30
CHƯƠNG 3. THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG...............33
3.1 Thiết kế sơ đồ hệ thống.............................................33
3.2 Cấu hình hệ thống.....................................................34
3.3 Cài đặt hệ thống........................................................35
3.3.1 Website...............................................................35
3.3.2 Công cụ CI/CD.....................................................36
3.3.3 EC2 cho môi trường sản xuất..............................40
3.3.4 Công cụ Monitoring.............................................44
3.4 Triển khai hệ thống...................................................48
3.4.1 CI/CD pipeline......................................................48
3.4.2 Monitoring...........................................................53
CHƯƠNG 4. THỬ NGHIỆM VÀ ĐÁNH GIÁ HỆ THỐNG..........59
4.1 Thử nghiệm hệ thống................................................59
4.2 Đánh giá hệ thống.....................................................64
KẾT LUẬN............................................................................65
TÀI LIỆU THAM KHẢO..........................................................67
ii
iii
MỤC LỤC HÌNH ẢNH
Hình 1-1: Khái niệm Devops.........................................................3
Hình 1-2: Vòng đời phát triển của Devops...................................5
Hình 1-3: Khái niệm CI/CD............................................................7
Hình 1-4 Quy trình CI/CD..............................................................9
Hình 2-1: Kiến trúc Virtualization...............................................13
Hình 2-2: Kiến trúc Container.....................................................14
Hình 2-3: Kiến trúc Docker.........................................................15
Hình 2-4: Luồng làm việc trong Git............................................19
Hình 2-5: Ví dụ quy trình CI/CD với Jenkins................................21
Hình 2-6: Giao diện của Jenkins sau khi chạy Pipeline...............22
Hình 2-7: Ví dụ về Jenkinsfile.....................................................23
Hình 2-8: Ví dụ về màn hình giám sát........................................24
Hình 2-9: Sơ đồ về hệ thống giám sát toàn diện........................26
Hình 3-1: Sơ đồ hệ thống Devops..............................................33
Hình 3-2: Giao diện trang home của website.............................35
Hình 3-3: Giao diện trang store của website..............................36
Hình 3-4: Giao diện trang cart của website................................36
Hình 3-5: Giao diện màn Getting Started sau khi truy cập Jenkins
lần đầu tiên................................................................................37
Hình 3-6: Giao diện màn Customize Jenkins..............................38
Hình 3-7: Giao diện màn cài đặt các plugins được suggest của
Jenkins........................................................................................38
Hình 3-8: Giao diện trang dashboard của Jenkins......................39
Hình 3-9: CloudBees Docker Build and Publish plugin...............39
Hình 3-10: Plugin ssh-agent.......................................................40
iv