Nghiên Cứu Giải Pháp DevSecOps Trong Hỗ Trợ Phát Triển Phần Mềm

Đồ án nghiên cứu tốt nghiệp nghiên cứu giải pháp devsecops hỗ trợ phát triển website mô hình microservice, thiết kế chi tiết, tính toán kỹ thuật theo tiêu chuẩn, đánh giá tính khả

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

đồ án tốt nghiệp

2023

76
4
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI, CÔNG NGHỆ VÀ GIẢI PHÁP SỬ DỤNG

1.1. Giới thiệu đề tài

1.2. Lí do chọn đề tài

1.3. Mục tiêu nghiên cứu đề tài

1.4. Đối tượng và phạm vi

1.5. Giải pháp sử dụng

1.5.1. Lịch sử phương pháp triển khai ứng dụng

1.5.2. Thời kì máy chủ vật lí

1.5.3. Máy ảo

1.5.4. Container và Docker

2. CHƯƠNG 2: THIẾT KẾ GIẢI PHÁP DEVSECOPS TRONG PHÁT TRIỂN PHẦN MỀM

2.1. Bài toán đặt ra

2.2. Phân tích bài toán và đưa ra kiến trúc tổng quan của giải pháp

2.3. Thành phần cấu trúc hệ thống theo công nghệ sử dụng

2.4. Luồng làm việc tổng quan của cả hệ thống

2.5. Tích hợp liên tục

2.6. Triển khai liên tục

2.7. Giám sát sau triển khai

2.8. Mô hình một microservice triển khai bằng Argo CD trên Kubernetes

2.9. Kiến trúc microservice giao tiếp khi áp dụng Istio

3. CHƯƠNG 3: ÁP DỤNG GIẢI PHÁP DEVSECOPS HỖ TRỢ PHÁT TRIỂN MỘT WEBSITE MÔ HÌNH MICROSERVICE

3.1. Chuẩn bị hệ thống áp dụng giải pháp DevSecOps

3.2. Cấu hình webhook trên Gitea

3.3. Cấu hình Jenkins để nhận được webhook từ Gitea

3.4. Cấu hình token SonarQube để Jenkins sử dụng

3.5. Cấu hình tài khoản Harbor để tích hợp với Jenkins và cụm K8s

3.6. Tạo ứng dụng Argo CD và cấu hình tự động đồng bộ

3.7. Cấu trúc của ứng dụng web Bookinfo

3.8. Bài toán thực tế

3.9. Sử dụng giải pháp DevSecOps để triển khai phiên bản cập nhật cho ứng dụng web Bookinfo

3.10. Quy trình tích hợp liên tục

3.11. Quy trình triển khai liên tục

3.12. Quy trình giám sát

3.13. Giải pháp DevSecOps và giải pháp truyền thống

3.14. Nếu thực hiện triển khai cập nhật ứng dụng web Bookinfo bằng giải pháp truyền thống

3.15. So sánh giải pháp DevSecOps và giải pháp truyền thống

3.16. Đánh giá việc sử dụng giải pháp DevSecOps trong phát triển phần mềm

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Giới thiệu về Giải Pháp DevSecOps Hỗ Trợ Phát Triển Phần Mềm

Giải pháp DevSecOps đang trở thành một phần không thể thiếu trong quy trình phát triển phần mềm hiện đại. DevSecOps kết hợp giữa phát triển (Dev), vận hành (Ops) và bảo mật (Sec) nhằm tạo ra một môi trường phát triển phần mềm an toàn và hiệu quả. Sự tích hợp này không chỉ giúp tăng cường bảo mật mà còn cải thiện quy trình phát triển, từ đó mang lại giá trị cao hơn cho doanh nghiệp.

1.1. Khái niệm và Lợi ích của DevSecOps

DevSecOps là một phương pháp tiếp cận tích hợp bảo mật vào quy trình phát triển phần mềm. Lợi ích chính bao gồm giảm thiểu rủi ro bảo mật, tăng cường khả năng phát hiện lỗi sớm và cải thiện sự hợp tác giữa các nhóm phát triển và bảo mật.

1.2. Tại sao DevSecOps Quan Trọng trong Thời Đại Số Hóa

Trong bối cảnh chuyển đổi số, DevSecOps giúp các doanh nghiệp nhanh chóng thích ứng với thay đổi và yêu cầu của thị trường. Việc tích hợp bảo mật từ đầu vào quy trình phát triển giúp giảm thiểu chi phí và thời gian khắc phục sự cố bảo mật.

II. Những Thách Thức trong Phát Triển Phần Mềm An Toàn

Mặc dù DevSecOps mang lại nhiều lợi ích, nhưng vẫn tồn tại nhiều thách thức trong việc triển khai. Các vấn đề như thiếu hụt kỹ năng, sự phức tạp trong quy trình và sự kháng cự từ các nhóm phát triển có thể cản trở việc áp dụng DevSecOps.

2.1. Thiếu Kỹ Năng và Kiến Thức về Bảo Mật

Nhiều đội ngũ phát triển phần mềm thiếu kiến thức về bảo mật, dẫn đến việc không thể tích hợp hiệu quả các biện pháp bảo mật vào quy trình phát triển.

2.2. Khó Khăn trong Việc Tích Hợp Quy Trình

Việc tích hợp bảo mật vào quy trình phát triển hiện tại có thể gặp khó khăn do sự phức tạp và sự khác biệt trong các công cụ và quy trình làm việc của từng nhóm.

III. Phương Pháp Triển Khai Giải Pháp DevSecOps Hiệu Quả

Để triển khai DevSecOps hiệu quả, cần có một phương pháp rõ ràng và cụ thể. Các bước như tự động hóa quy trình bảo mật, tích hợp liên tục và triển khai liên tục là rất quan trọng.

3.1. Tự Động Hóa Bảo Mật trong Quy Trình CI CD

Tự động hóa bảo mật giúp phát hiện và khắc phục các lỗ hổng bảo mật ngay từ giai đoạn phát triển, giảm thiểu rủi ro cho sản phẩm cuối cùng.

3.2. Tích Hợp Bảo Mật vào CI CD

Việc tích hợp bảo mật vào quy trình CI/CD giúp đảm bảo rằng mọi thay đổi đều được kiểm tra và xác thực trước khi triển khai, từ đó nâng cao độ an toàn cho ứng dụng.

IV. Ứng Dụng Thực Tiễn của Giải Pháp DevSecOps

Nhiều doanh nghiệp đã áp dụng DevSecOps thành công để cải thiện quy trình phát triển phần mềm. Các ứng dụng thực tiễn cho thấy rằng việc tích hợp bảo mật không chỉ giúp bảo vệ dữ liệu mà còn tăng cường sự tin tưởng từ khách hàng.

4.1. Ví Dụ Thành Công từ Doanh Nghiệp

Nhiều công ty công nghệ lớn đã áp dụng DevSecOps và ghi nhận sự cải thiện rõ rệt trong việc phát hiện và khắc phục lỗi bảo mật, từ đó nâng cao chất lượng sản phẩm.

4.2. Kết Quả Nghiên Cứu về DevSecOps

Các nghiên cứu cho thấy rằng việc áp dụng DevSecOps giúp giảm thiểu thời gian phát triển và tăng cường khả năng bảo mật cho sản phẩm, mang lại lợi ích kinh tế lớn cho doanh nghiệp.

V. Kết Luận và Tương Lai của DevSecOps

DevSecOps đang trở thành một xu hướng quan trọng trong phát triển phần mềm. Tương lai của DevSecOps hứa hẹn sẽ tiếp tục phát triển với sự gia tăng của các công nghệ mới và nhu cầu bảo mật ngày càng cao.

5.1. Xu Hướng Phát Triển DevSecOps

Sự phát triển của công nghệ như trí tuệ nhân tạo và máy học sẽ tiếp tục thúc đẩy sự phát triển của DevSecOps, giúp tự động hóa nhiều quy trình bảo mật hơn.

5.2. Tầm Quan Trọng của DevSecOps trong Tương Lai

DevSecOps sẽ đóng vai trò quan trọng trong việc bảo vệ dữ liệu và ứng dụng trong bối cảnh ngày càng nhiều mối đe dọa an ninh mạng xuất hiện.

10/07/2025
Đồ án tốt nghiệp nghiên cứu giải pháp devsecops hỗ trợ phát triển website mô hình microservice

Trích đoạn nội dung tài liệu

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI, CÔNG NGHỆ VÀ GIẢI PHÁP SỬ DỤNG 1. Giới thiệu đề tài 1. Lí do chọn đề tài Trong vài thập kỉ gần đây, quy trình phát triển phần mềm đã thay đổi một cách chóng mặt, và đặc biệt với cuộc cách mạng gần nhất: dịch chuyển khỏi việc triển khai thủ công, hướng tới tư duy DevOps và tự động hoá (CI/CD). Sự dịch chuyển này không những đã tăng năng suất và độ hiệu quả trong vòng đời phát triển phần mềm, mà còn nâng cao sự hợp tác giữ các đội phát triển, vận hành và đảm bảo chất lượng.

Sự thay đổi này sinh ra không phải ngẫu nhiên, mà là do chính thị trường công nghệ đi với sự phát triển mạnh của các công nghệ triển khai ứng dụng và sự hỗ trợ, đầu tư cực kì mạnh tay của các ông lớn trong ngành công nghệ như Google, Amazon, Microsoft. Các dịch vụ ngày một phức tạp, việc thay đổi kiến trúc là điều không thể tránh khỏi, cũng như việc phát triển cực mạnh mẽ của cloud. Hay yêu cầu của khách hàng cũng ngày một tăng cao, yêu cầu việc phát triển phầm mềm ngày càng phải linh hoạt hơn, ổn định hơn, và đặc biệt sản phẩm phải đến với khách hàng nhanh hơn và liên tục hơn. Trong những năm gần đây, chuyển đổi số trong doanh nghiệp trở thành một điều tất yếu, các doanh nghiệp, tổ chức trong mọi lĩnh vực hiện đã và đang khai thác các chiến lược chuyển đổi số, từ các tổ chức tư nhân đến nhà nước.

Chuyển đổi số là số hóa toàn bộ cả một tổ chức. Chuyển đổi số là thay đổi quy trình mới, mô hình tổ chức mới, phương thức cung cấp dịch vụ, tư duy mới cho nhân viên và việc khai thác các công cụ hỗ trợ mới. DevOps và DevSecOps cũng chính là một phần trong chuỗi những thay đổi rất nhiều các doanh nghiệp đã bắt đầu áp dụng để tiến tới chuyển đổi số hoàn toàn. Trải nghiệm người dùng ngày càng trở thành trung tâm, và khi đưa lại những trải nghiệm tốt nhất cho khách hàng thì sẽ đưa lại những lợi thế cạnh tranh khi mà thị trường sản phẩm công nghệ thông tin ngày càng bão hoà.

DevOps không phải sinh ra để rút ngắn quy trình hay thời gian phát triển, mà là để thời gian từ mã nguồn đến sản phẩm trở thành ngắn nhất, hay tức là đưa sản phẩm đến tay người dùng nhanh nhất có thể. Hơn nữa, việc một sản phẩm đến được tay khách hàng, tất yếu sẽ sinh ra đóng góp, ý kiến và phản ảnh từ khách hàng, từ đó cho phép đổi mới và cải tiến liên tục sản phẩm. Một sản phẩm được cập nhật liên tục, đúng với mong muốn, yêu cầu và có các tính năng mong đợi của khách hàng chắc chắn sẽ có lợi thế cực lớn so với các đối thủ. DevSecOps đóng một vai trò nòng cốt, song hành với việc thay đổi tư duy phát triển sản phẩm để có thể tiến tới chuyển đổi số.

Vì vậy nên em đã lựa chọn đề tài “Nghiên cứu giải pháp DevSecOps trong hỗ trợ phát triển phần mềm”. Thông qua đề tài em muốn chứng minh được những lợi ích vô cùng to lớn và thiết thực mà DevSecOps và Lê Quý Hoàng - B19DCCN276 1 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC ÁP DỤNG GIẢI PHÁP DEVSECOPS HỖ TRỢ PHÁT TRIỂN MỘT WEBSITE MÔ HÌNH MICROSERVICE tự động hoá có thể mang lại trong phát triển phần mềm, và đưa ra được một giải pháp tổng thể và thực tiễn để có thể áp dụng trong thực tế. Mục tiêu nghiên cứu đề tài - Nghiên cứu về lý thuyết của DevOps, và mở rộng ra DevSecOps trong hỗ trợ quy trình phát triển phần mềm. - Đặt ra một giải pháp mang tính tổng thể theo tư duy DevSecOps để giải quyết bài toàn tự động hoá trong phát triển phàn mềm.

- Áp dụng giải pháp DevSecOps vào trong việc phát triển một ứng dụng web mô hình microservice. Đối tượng và phạm vi Các đội nhóm và doanh nghiệp phát triển sản phẩm, đặc biệt các đội nhóm đã và đang chuyển dịch, áp dụng Agile trong phát triển phần mềm. Giải pháp sử dụng 1. Lịch sử phương pháp triển khai ứng dụng Ứng dụng là một phần đã giúp việc phổ biến hoá máy tính đến đại chúng, một trang web, một dịch vụ xử lí ảnh, một ứng dịnh tính toán trên mạng, tất cả đều là ứng dụng.

Vậy ứng dụng chạy ở đâu? Hầu hết, nhất là các ứng dụng, dịch vụ online là chạy ở trên các máy chủ. a) Thời kì máy chủ vật lí Thời kì sơ khai nhất, gần như chỉ có thể chạy một ứng dụng trên một máy chủ, đây là giới hạn đặc tính kĩ thuật của thời kì này. Chính vì những hạn chế đó, mỗi khi doanh nghiệp cần có thêm, hoặc triển khai, mở rộng thêm các dịch vụ mới thì sẽ cần thêm một máy chủ mới. Tuy nhiên, yêu cầu về hiệu năng của các ứng dụng hầu như không được làm rõ với những ứng dụng mới đó, nên việc chọn mua máy chủ mới phần lớn phụ thuộc vào suy đoán.

Từ vấn đề trên, sinh ra một các giải quyết đơn giản nhất: mua máy chủ phải to, phải mạnh, tốn nhiều tiền. Lí do giải thích đơn giản là vì yêu cầu kĩ thuật hiệu năng không rõ ràng, các doanh nghiệp không bao giờ muốn ứng dụng sẽ chạy chậm chỉ vì phần cứng quá yếu, từ đó có thể mất khách hàng. Kết cục là các máy chủ thường không bao giờ chạy hết hiệu năng tối đa, là một sự lãng phí tiền của rất lớn. b) Máy ảo Lê Quý Hoàng - B19DCCN276 2 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC ÁP DỤNG GIẢI PHÁP DEVSECOPS HỖ TRỢ PHÁT TRIỂN MỘT WEBSITE MÔ HÌNH MICROSERVICE Hình 1.1 Cấu trúc của máy ảo Những năm cuối của thế kỉ 20, máy ảo ra đời một cách rộng rãi.

Máy ảo ngay lập tức thay đổi các ứng dụng chạy trên máy chủ, cho phép nhiều ứng dụng có thể chạy trên một máy chủ duy nhất. Từ đó cũng làm việc mua máy chủ mới cho ứng dụng mới biến mất, thay vào đó là sử dụng chính tài nguyên của những máy chủ sẵn có một các hiệu quả hơn. Tuy nhiên, máy ảo không phải là một giải pháp hoàn hảo. Mỗi máy ảo đều phải có một hệ điều hành hoàn chỉnh riêng biệt cho chính nó là một điểm trừ lớn.

Hệ điều hành sẽ tiêu tốn tài nguyên của máy chủ, gây lãng phí khi những tài nguyên đó có thể để sử dụng để chạy nhiều ứng dụng hơn. Ngoài ra, mỗi hệ điều hành đều cần theo dõi và cập nhật, sửa lỗi. Và trong một số trường hợp, hệ điều hành sẽ yêu cầu bản quyền. Tất cả các điều trên đều gây lãng phí thời gian và tài nguyên.

Lê Quý Hoàng - B19DCCN276 3 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC ÁP DỤNG GIẢI PHÁP DEVSECOPS HỖ TRỢ PHÁT TRIỂN MỘT WEBSITE MÔ HÌNH MICROSERVICE Chưa kể thêm mô hình máy ảo có một số điểm trừ khác như máy ảo thường khởi động chậm và tính di động không cao, một khi đã sử dụng một dạng máy ảo (hypervisor hoặc các nền tảng cloud) thì khá khó để có thể chuyển dịch sang một hypervisor hoặc một nhà cung cấp khác. c) Container và Docker Các tập đoàn lớn trong mảng dịch vụ web, ví dụ như Google, đã sử dụng container để giải quyết các điểm yếu của máy ảo từ khá lâu. Cơ bản thì một container có thể nói là ngang hàng với một máy ảo. Điểm khác biệt rõ ràng nhất là container không cần có một hệ điều hành đầy đủ của riêng nó như máy ảo, mà thay vào đó là sẽ chia sẻ hệ điều hành với cả máy chủ (máy cho phép các container chạy trên nó).

Điểm khác biệt này cũng giúp một lượng lớn tài nguyên như RAM, CPU và bộ nhớ dược giải phóng. Ngoài ra còn giúp giảm được chi phí để mua bản quyền hệ điều hành, hay công sức để bảo trì, cập nhật, vá lỗi hệ điều hành. Kết quả là giúp tiếp kiệm thời gian, tài nguyên và tiền bạc. Container cũng có khả năng khởi động nhanh hơn và có tính di động rất cao.

Việc chuyển và chạy container từ laptop cá nhân, lên cloud, hay vào trong máy ảo, hoặc chạy trên một máy chủ trực tiếp đều rất dễ dàng. Container hiện đại bắt nguồn từ thế giới Linux và là một sản phẩm được sinh ra từ sự góp sức khổng lồ từ rất nhiều người trông cộng đồng mã nguồn mở trong một thời gian dài. Ví dụ như Google đã có rất nhiều công sức trong việc viết các phần liên quan đến công nghệ container cho Linux kernel, nếu không có những thành phần này, container hiện như như có hiện nay có thể không tồn tại. Những công nghệ chính đã cho phép sự phát triển cực kì mạnh mẽ của container trong những năm gần đây có thể kể đến như kernel namespace, control group, union filesystem và Docker.

Tuy nhiên, trước khi có Docker, container vẫn là một công nghệ rất phực tạp và ngoài tầm với của phần lớn tổ chức. Nhờ có Docker, container đã trở thành một công nghệ được phổ rộng hoá, cho phép đại chúng sử dụng một cách dễ dàng. Và từ sự phổ rộng hoá của Docker nói riêng và container nói chung, đã sinh ra nhu cầu cần thay đổi từ máy ảo sang container trong quy trình phát triển và triển khai ứng dụng của doanh nghiệp. Cùng với cách mà ứng dụng được phát triển cũng đang dần dịch chuyển theo một hướng mới.

Tuy nhiên container không phải sinh ra để thay thế hoặc cạnh tranh với máy ảo, thay vào đó là một sự cộng hưởng và cùng hỗ trợ với nhau để sinh ra một hệ thống phát triển và vận hành phần mềm phù hợp với thời kì hiện đại. Lê Quý Hoàng - B19DCCN276 4 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC ÁP DỤNG GIẢI PHÁP DEVSECOPS HỖ TRỢ PHÁT TRIỂN MỘT WEBSITE MÔ HÌNH MICROSERVICE Hình 1.2 So sánh mô hình của container và máy ảo Container là một đơn vị phần mềm độc lập, chứa tất cả các thành phần cần thiết để chạy một ứng dụng hoặc một website, một container bao gồm mã nguồn, các thư viện phụ thuộc, hệ điều hành độc lập và tài nguyên hệ thống ảo hóa. Container giúp đóng gói và triển khai ứng dụng một cách đáng tin cậy và dễ dàng hơn, cũng như tăng tính di động, linh hoạt của ứng dụng cho phép các nhà phát triển có thể triển khai ứng dụng của mình trên nhiều nền tảng, môi trường khác nhau một cách đơn giản và nhanh chóng. Mỗi container được xem như một môi trường độc lập với các container khác trên cùng một máy chủ.

Các container được ảo hóa ở mức hệ điều hành và dùng chung nhân hệ điều hành với máy chủ chạy các container này.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu "Giải Pháp DevSecOps Hỗ Trợ Phát Triển Phần Mềm" cung cấp cái nhìn sâu sắc về cách thức tích hợp bảo mật vào quy trình phát triển phần mềm thông qua phương pháp DevSecOps. Bài viết nhấn mạnh tầm quan trọng của việc tự động hóa kiểm thử và bảo mật ngay từ giai đoạn đầu của phát triển, giúp giảm thiểu rủi ro và tăng cường chất lượng sản phẩm. Độc giả sẽ nhận thấy rằng việc áp dụng DevSecOps không chỉ cải thiện hiệu suất làm việc mà còn tạo ra một môi trường phát triển an toàn hơn.

Để mở rộng kiến thức về các khía cạnh liên quan đến phát triển phần mềm, bạn có thể tham khảo thêm tài liệu Đảm bảo chất lượng và kiểm thử phần mềm tìm hiểu và sử dụng phần mềm kiểm thử tự động Katalon Studio, nơi cung cấp hướng dẫn chi tiết về kiểm thử tự động, một phần quan trọng trong quy trình DevSecOps. Ngoài ra, tài liệu Kiểm thử website tính tiền điện hộ cá nhân e energy sẽ giúp bạn hiểu rõ hơn về quy trình kiểm thử phần mềm thực tế. Cuối cùng, tài liệu Công nghệ phần mềm 1 sẽ cung cấp cái nhìn tổng quan về các mô hình và phương pháp phát triển phần mềm, hỗ trợ bạn trong việc áp dụng DevSecOps hiệu quả hơn.