Luận Văn Thạc Sĩ: Xây Dựng Kiến Trúc Triển Khai Liên Tục Cho Các Hệ Thống Dựa Trên Vi Dịch Vụ

Luận văn thạc sĩ VNU UET trình bày kiến trúc triển khai liên tục cho hệ thống vi dịch vụ, góp phần nâng cao hiệu quả trong lĩnh vực công nghệ thông tin.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Luận Văn Thạc Sĩ

2018

83
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CAM ĐOAN

LỜI CẢM ƠN

1. CHƯƠNG 1: KIẾN THỨC CƠ BẢN

1.1. Tính toán đám mây

1.1.1. Giới thiệu về tính toán đám mây

1.2. Sự phổ biến của ứng dụng dựa vào đám mây

1.3. Tích hợp, chuyển giao và triển khai liên tục

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

1.3.2. Chuyển giao liên tục

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

1.4. Kiến trúc hệ thống

1.4.1. Kiến trúc một khối

1.4.2. Kiến trúc hướng dịch vụ

1.4.3. Kiến trúc vi dịch vụ

1.4.4. Các mô hình triển khai

1.4.4.1. Mô hình triển khai tùy biến
1.4.4.2. Mô hình không tùy biến kết hợp với Reverse Proxy
1.4.4.3. Mô hình không tùy biến với ứng dụng vi dịch vụ

1.5. Khái niệm Container

2. CHƯƠNG 2: YÊU CẦU CỦA HỆ THỐNG TRIỂN KHAI LIÊN TỤC

2.1. Yêu cầu về điều phối container

2.1.1. Khám phá dịch vụ

2.2. Bộ lập lịch

2.3. Điều phối container

2.4. Yêu cầu cho các nhà phát triển

2.4.1. Khả năng tự triển khai

2.4.2. Nhận được các thông tin về kết quả build

2.5. Yêu cầu về vận hành

2.5.1. Quản lý cấu hình

2.5.2. Thu thập và lưu trữ log

2.5.3. Giám sát và thông báo lỗi

2.5.4. Triển khai không bị gián đoạn và có khả năng đảo ngược phiên bản

2.5.5. Thiết kế mạng triển khai

3. CHƯƠNG 3: THIẾT KẾ HỆ THỐNG TRIỂN KHAI LIÊN TỤC

3.1. Luồng triển khai cơ bản

3.2. Phân tích và lựa chọn công nghệ

3.2.1. Hệ thống quản lý mã nguồn

3.2.2. Máy chủ CI và máy chủ triển khai

3.3. Công nghệ container

3.4. Nền tảng điều phối container

3.7. Hệ thống thu thập và quản lý log

3.8. Công nghệ giám sát hệ thống và cảnh báo

3.9. Giải pháp quản lý cấu hình

3.10. Luồng triển khai liên tục hoàn thiện

4. CHƯƠNG 4: CÀI ĐẶT VÀ ĐÁNH GIÁ

4.1. Hệ thống vi dịch vụ mẫu

4.2. Cách thức tổ chức mã nguồn và quá trình build ảnh docker

4.3. Cài đặt môi trường sản phẩm

4.4. Đánh giá kết quả

KẾT LUẬN

TÀI LIỆU THAM KHẢO

PHỤ LỤC

Tóm tắt

I. Tổng Quan Về Kiến Trúc Triển Khai Liên Tục Cho Hệ Thống Vi Dịch Vụ

Kiến trúc triển khai liên tục cho hệ thống vi dịch vụ là một khái niệm quan trọng trong phát triển phần mềm hiện đại. Nó cho phép các tổ chức phát triển và phát hành phần mềm một cách nhanh chóng và hiệu quả. Việc áp dụng kiến trúc này giúp giảm thiểu thời gian và chi phí, đồng thời nâng cao chất lượng sản phẩm. Kiến trúc này không chỉ đơn thuần là một phương pháp mà còn là một triết lý trong phát triển phần mềm, nhấn mạnh vào việc tự động hóa và tích hợp liên tục.

1.1. Khái Niệm Về Kiến Trúc Triển Khai Liên Tục

Kiến trúc triển khai liên tục là một phương pháp cho phép các nhóm phát triển phần mềm tự động hóa quy trình phát triển, từ việc viết mã đến triển khai sản phẩm. Điều này giúp giảm thiểu lỗi và tăng tốc độ phát hành.

1.2. Lợi Ích Của Kiến Trúc Triển Khai Liên Tục

Việc áp dụng kiến trúc triển khai liên tục mang lại nhiều lợi ích như tăng cường khả năng phản hồi từ người dùng, giảm thiểu rủi ro trong quá trình phát triển và cải thiện chất lượng sản phẩm cuối cùng.

II. Vấn Đề Và Thách Thức Trong Triển Khai Liên Tục

Mặc dù kiến trúc triển khai liên tục mang lại nhiều lợi ích, nhưng cũng tồn tại nhiều thách thức trong quá trình triển khai. Các vấn đề như quản lý cấu hình, giám sát dịch vụ và xử lý lỗi là những yếu tố cần được xem xét kỹ lưỡng.

2.1. Quản Lý Cấu Hình Trong Triển Khai Liên Tục

Quản lý cấu hình là một trong những thách thức lớn nhất trong triển khai liên tục. Việc đảm bảo rằng tất cả các dịch vụ đều sử dụng cấu hình chính xác là rất quan trọng để tránh lỗi trong quá trình triển khai.

2.2. Giám Sát Và Xử Lý Lỗi

Giám sát các dịch vụ vi dịch vụ là cần thiết để phát hiện và xử lý lỗi kịp thời. Việc thiết lập hệ thống giám sát hiệu quả giúp đảm bảo rằng các dịch vụ hoạt động ổn định và đáng tin cậy.

III. Phương Pháp Triển Khai Liên Tục Hiệu Quả

Để triển khai liên tục hiệu quả, cần áp dụng một số phương pháp và công nghệ hiện đại. Việc sử dụng công nghệ container và các công cụ tự động hóa là rất quan trọng trong quy trình này.

3.1. Sử Dụng Công Nghệ Container

Công nghệ container cho phép đóng gói ứng dụng và các phụ thuộc của nó vào một môi trường độc lập, giúp việc triển khai trở nên dễ dàng và nhất quán hơn.

3.2. Tự Động Hóa Quy Trình Triển Khai

Tự động hóa quy trình triển khai giúp giảm thiểu sai sót do con người và tăng tốc độ phát hành sản phẩm. Các công cụ như Jenkins, GitLab CI/CD có thể được sử dụng để tự động hóa quy trình này.

IV. Ứng Dụng Thực Tiễn Của Kiến Trúc Triển Khai Liên Tục

Kiến trúc triển khai liên tục đã được áp dụng rộng rãi trong nhiều lĩnh vực khác nhau, từ phát triển phần mềm đến quản lý dịch vụ. Các tổ chức đã ghi nhận sự cải thiện đáng kể trong quy trình phát triển và chất lượng sản phẩm.

4.1. Ví Dụ Về Ứng Dụng Kiến Trúc Triển Khai Liên Tục

Nhiều công ty công nghệ lớn như Google và Amazon đã áp dụng kiến trúc này để tối ưu hóa quy trình phát triển và cung cấp dịch vụ cho khách hàng.

4.2. Kết Quả Nghiên Cứu Về Triển Khai Liên Tục

Nghiên cứu cho thấy rằng các tổ chức áp dụng triển khai liên tục có khả năng phát hành sản phẩm nhanh hơn và với chất lượng cao hơn so với các tổ chức không áp dụng.

V. Kết Luận Về Kiến Trúc Triển Khai Liên Tục

Kiến trúc triển khai liên tục cho hệ thống vi dịch vụ là một xu hướng tất yếu trong phát triển phần mềm hiện đại. Việc áp dụng kiến trúc này không chỉ giúp cải thiện quy trình phát triển mà còn nâng cao chất lượng sản phẩm. Tương lai của phát triển phần mềm sẽ tiếp tục hướng tới việc tối ưu hóa quy trình này.

5.1. Tương Lai Của Kiến Trúc Triển Khai Liên Tục

Với sự phát triển không ngừng của công nghệ, kiến trúc triển khai liên tục sẽ ngày càng trở nên phổ biến và cần thiết trong mọi lĩnh vực phát triển phần mềm.

5.2. Những Xu Hướng Mới Trong Triển Khai Liên Tục

Các xu hướng mới như trí tuệ nhân tạo và học máy sẽ được tích hợp vào quy trình triển khai liên tục, giúp tối ưu hóa hơn nữa quy trình phát triển phần mềm.

22/07/2025
Luận văn thạc sĩ vnu uet xây dựng kiến trúc triển khai liên tục cho các hệ thống dựa trên vi dịch vụ luận văn ths máy tính 84801

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

CHƯƠNG 1: KIẾN THỨC CƠ BẢN Cùng với sự xuất hiện và phổ biến của phương pháp phát triển phần mềm linh hoạt, các ý tưởng mới liên tục xuất hiện để tận dụng tối đa lợi ích mà phương pháp này mang lại. Trong đó, nổi bật nhất là ý tưởng về việc tích hợp, chuyển giao và triển khai liên tục: phần mềm sẽ được dịch (build), đóng gói và phát hành ngay khi có sự thay đổi trên hệ thống quản lý mã. Tuy nhiên, ý tưởng này không thể thực hiện được tại thời điểm mà nó được đề xuất do nhiều giới hạn về công nghệ và cơ sở hạ tầng. Với sự xuất hiện của tính toán đám mây, sự tiến hóa trong kiến trúc phần mềm (từ kiến trúc một khối tới kiến trúc vi dịch vụ) hay ý tưởng về đóng gói ứng dụng trong container, việc xây dựng một hệ thống triển khai liên tục đã trở nên khả thi hơn.

Để giúp làm rõ hơn những nội dung trong các chương tiếp theo, chương này sẽ giới thiệu các khái niệm cơ bản nêu trên một cách chi tiết.1 Tính toán đám mây 1.1 Giới thiệu về tính toán đám mây Tính toán đám mây là sự cung cấp, phân phối sức mạnh tính toán, hệ thống lưu trữ, ứng dụng hoặc các nguồn tài nguyên công nghệ thông tin khác thông qua nền tảng đám mây, sử dụng kênh truyền internet và giá cả được tính toán dựa vào khối lượng sử dụng [2]. Sử dụng tính toán đám mây, một công ty hay tổ chức không cần đầu tư nhiều chi phí ban đầu vào việc chuẩn bị các thiết bị phần cứng, hay dành nhiều thời gian để quản lý chúng. Thay vào đó, công ty/tổ chức chỉ cần cung cấp đúng yêu cầu về chủng loại và kích thước nguồn tài nguyên tính toán cho nhà cung cấp dịch vụ, mọi thứ sẽ được cung ứng gần như ngay lập tức. Một đặc điểm quan trọng của đám mây đó là các dịch vụ gần như trong suốt với người dùng, nghĩa là người dùng gần như không cần quan tâm làm thế nào mà dịch vụ đó được cung ứng mà chỉ cần tập trung vào việc làm thế nào để sử dụng chúng.

Với giao diện người dùng đơn giản, hầu hết các dịch vụ đám mây đòi hỏi rất ít kiến thức về quản trị. Tính toán đám mây được chia thành ba mô hình cơ bản [3]: • Cơ sở hạ tầng như một dịch vụ (Infrastructure as a service - IaaS): cung cấp cho người dùng các tài nguyên tính toán ở cấp độ thấp nhất, bao gồm: máy chủ, mạng, hệ thống lưu trữ, trung tâm dữ liệu,. và giá cả tính theo khối lượng sử dụng. Đối với người sử dụng, đặc biệt là các doanh nghiệp, lợi ích mà IaaS mang lại là rất lớn, điển hình là việc không cần đầu tư phần cứng, cơ sở hạ tầng 4 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com có thể thay đổi linh động tùy vào nhu cầu sử dụng và việc có nhiều dịch vụ linh hoạt, sáng tạo đi kèm.

• Nền tảng như một dịch vụ (Platform as a service - PaaS): cung cấp môi trường được xây dựng trên nền tảng đám mây với tất cả mọi thứ cần thiết để phát triển và chuyển giao những ứng dụng trên nền web (cloud). Người dùng không cần gánh chi phí cũng như quan tâm tới các công việc phức tạp liên quan tới việc mua, quản lý thành phần phần cứng, phần mềm, cung ứng hay hosting như cách truyền thống. Lợi ích của PaaS đối với người dùng trước hết là ở việc phát triển và đưa phần mềm ra thị trường nhanh hơn so với trước đây, việc triển khai phần mềm mới lên đám mây chỉ mất vài phút. Ngoài ra, Paas giúp giảm thiểu sự phức tạp của việc quản lý phần giữa (middleware).

• Phần mềm như một dịch vụ(Software as a service - SaaS): là các ứng dụng trên nền tảng đám mây, chạy trên những máy tính "nằm trong đám mây", được sở hữu và vận hành bởi nhà cung cấp nền tảng đám mây, kết nối tới người dùng qua internet và trình duyệt. Với SaaS, người dùng có thể nhanh chóng đăng kí và bắt đầu sử dụng phần mềm mà gần như không phải làm bất cứ việc gì liên quan tới phát triển; các ứng dụng và dữ liệu có thể được truy cập từ bất cứ máy tính nào có kết nối Internet. Người dùng cũng không cần lo lắng về việc mất mát dữ liệu do dữ liệu đã được lưu trữ trong đám mây. Hơn thế, các dịch vụ có khả năng scale linh hoạt theo nhu cầu sử dụng, do vậy hiệu năng luôn được đảm bảo.2 Sự phổ biến của ứng dụng dựa vào đám mây Việc chuyển đổi sang đám mây là sự phát triển tự nhiên đối với việc cung ứng các dịch vụ công nghệ thông tin.

Nền tảng đám mây cung cấp một môi trường với các tài nguyên đa dạng, từ tính toán, lưu trữ cho tới mạng, có khả năng co dãn, linh động theo nhu cầu sử dụng. Ngày càng nhiều công ty, tổ chức chuyển dần sang phát triển phần mềm, ứng dụng cho nền tảng đám mây thay vì cách phát triển truyền thống, bởi: • Tốc độ: Ngày nay tốc độ có yếu tố quan trọng quyết định sự tồn tại của một công ty, tổ chức. Các tính năng mới khi được hoàn thành cần được triển khai ngay để thu hút người sử dụng, giành lấy thị phần. Những công ty lớn như Google, Facebook, Amazon, Uber, Grab,.

triển khai tính năng mới, hay đơn giản chỉ là bản vá, bản nâng cấp hàng chục tới hàng trăm lần mỗi ngày. Điều này giúp họ thu hút người dùng trước khi đối thủ kịp phản ứng, nhanh chóng sửa lỗi trước khi có vấn đề phát sinh. Đặc điểm co dãn và khả năng kết nối của đám mây giúp việc triển khai liên tục này trở nên khả thi. 5 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com • Khả năng cô lập lỗi: Kiến trúc sử dụng cho các ứng dụng dựa vào đám mây giúp cho việc cô lập lỗi trở nên dễ dàng hơn.

Đối với các phần mềm truyền thống, kiến thúc thường được sử dụng là một khối, tuy nhiên đối với nền tảng đám mây, kiến trúc phổ biến nhất hiện nay là vi dịch vụ. Với vi dịch vụ, khi lỗi xảy ra, chỉ những thành phần có lỗi bị ảnh hưởng. Chúng có thể được tắt đi và thay thế mà không gây ảnh hưởng tới cả hệ thống tổng thể. Cụ thể về kiến trúc này sẽ được giới thiệu trong các phần sau.

• Khả năng co dãn (scale): Khi ứng dụng giành được thị phần nhất định, số lượng người dùng có thể sẽ tăng lên nhanh chóng. Trước khi xuất hiện nền tảng đám mây, các công ty thường phải nâng cấp phần cứng cho máy chủ bằng việc nâng cao sức mạnh máy (scale-up), do việc mở rộng năng lực theo chiều ngang (scale-out) đòi hỏi quá trình mua máy, cài đặt, tích hợp mất quá nhiều thời gian và phần mềm truyền thống không được thiết kế phù hợp cho việc scale-out. Kể cả khi việc scale-out có thể được thực hiện thì cũng không hiệu quả. Với sự xuất hiện của những nền tảng đám mây như Amazon Web Services (AWS), Google Cloud Platform (GCP) hay Microsoft Azure, cùng với việc xuất hiện các công nghệ, kiến trúc mới cho nền tảng đám mây, việc mở rộng theo chiều ngang (scale-out) có thể được thực hiện chỉ trong vòng vài phút.2 Tích hợp, chuyển giao và triển khai liên tục 1.1 Tích hợp liên tục Tích hợp liên tục là quá trình tự động hóa việc dịch (build) và kiểm thử mã mỗi khi các thành viên trong đội cập nhật mã lên hệ thống quản lý phiên bản (tích hợp liên tục đòi hỏi những nhà phát triển phải tích hợp mã vào một kho chứa mã duy nhất).

Tích hợp liên tục khuyến khích các nhà phát triển chia sẻ mã và các bài kiểm thử đơn vị (unit test) bằng việc hợp nhất những thay đổi trên máy lên kho quản lý mã chung ngay khi hoàn thiện một tác vụ nhỏ nào [4]. Từ yêu cầu hợp nhất, các máy chủ sẽ kích hoạt luồng (pipeline): lấy mã mới về máy chủ CI, chạy quá trình dịch, kiểm thử, … Nếu có lỗi xảy ra ở bất cứ phần nào trong luồng, sửa lỗi là việc được ưu tiên hàng đầu. Tích hợp liên tục ngày càng trở nên phổ biến hơn bởi những nhà phát triển phần mềm thường sẽ làm việc một cách độc lập, và cuối cùng họ sẽ cần tích hợp mã với những thành viên khác trong đội, hoặc rộng hơn là các đội khác trong công ty. Việc chờ đợi nhiều ngày để tích hợp mã sẽ gây ra nhiều lỗi hợp nhất (merge conflict) khó giải quyết.

Luồng (pipeline) tích hợp được khởi động mỗi khi có mã được đẩy lên kho chứa mã chung giúp giảm thiểu đáng kể vấn đề trên. 6 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Với mỗi công ty, tổ chức, pipeline tích hợp được xác định tùy thuộc vào công cụ sử dụng, ngôn ngữ lập trình cũng như rất nhiều yếu tố khác, tuy nhiên luồng thực hiên cơ bản bao gồm các bước sau [5]: 1. Đẩy mã lên kho chứa mã chung 2. Phân tích tĩnh 3.

Kiểm thử trước khi triển khai 4. Đóng gói và triển khai lên môi trường kiểm thử 5. Kiểm thử sau khi triển khai 1.2 Chuyển giao liên tục Về cơ bản, một luồng chuyển giao liên tục bao gồm các bước giống như luồng tích hợp liên tục đã liệt kê ở phần trước đó. Điểm khác biệt lớn nhất đó là: bước "5.

Kiểm thử sau khi triển khai" trong tích hợp liên tục thường đòi hỏi việc can thiệp bằng tay. Các bản dịch không vượt qua được các bài kiểm tra ở bước này sẽ bị loại. Còn trong Chuyển giao liên tục, sẽ có các cơ chế để tự động hóa bước này. Kết quả cuối cùng là một bản dịch mà luôn sẵn sàng để triển khai trên môi trường sản phẩm thực tế.1: Các bước cơ bản trong tích hợp liên tục [5] 7 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.3 Triển khai liên tục Triển khai liên tục là mục tiêu cuối cùng trong chuỗi tự động hóa này.

Bản dịch cuối cùng sau bước chuyển giao liên tục là bản dịch luôn sẵn sàng để triển khai vào môi trường thực tế, tuy nhiên việc triển khai hay không và chọn phiên bản nào để triển khai lại phụ thuộc vào quyết định của đội vận hành. Trong triển khai liên tục, bất cứ bản dịch nào vượt qua được tất cả các bài kiểm thử đều sẽ được triển khai tự động lên môi trường sản phẩm thực tế. Không có sự can thiệp của con người trong qúa trình này.3 Kiến trúc hệ thống Trong những năm gần đây, kiến trúc phần mềm web đã phát triển với một tốc độ nhanh chóng.

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