27. Continuous Integration

Continuous Integration

Continuous Integration

Continuous integration là một thông lệ được các nhà phát triển phần mềm sử dụng để thường xuyên kết hợp mã mới và thay đổi vào kho lưu trữ mã [code repository] dự án của họ. Điều này giúp giảm thiểu các vấn đề tích hợp do nhiều người thực hiện các thay đổi không tương thích với cùng một cơ sở mã. Thông thường nếu chúng ta thực hiện các check in mã càng thường xuyên, số lượng mã cần thay đổi càng nhỏ để cho phép bản dựng [builds] (hoặc phiên bản version) mới của phần mềm biên dịch thành công. Vì vậy, Continuous integration là một trong những công cụ chúng ta có thể sử dụng để tìm và giải quyết các vấn đề càng sớm càng tốt.

Continuous integration sử dụng các công cụ tự động để tự động bắt đầu quá trình tích hợp bất cứ khi nào mã mới được kiểm tra hoặc theo các khoảng thời gian. Ngoài việc kiểm tra xem có bất kỳ mã mới và thay đổi nào biên dịch chính xác hay không, team sẽ sử dụng các unit test tự động để đảm bảo hệ thống vẫn hoạt động như dự định sau khi mã mới được tích hợp.

Hãy cùng xem xét kỹ hơn các thành phần của một hệ thống Continuous integration.

Hệ thống kiểm soát mã nguồn [Source code control system]: Đây là phần mềm thực hiện kiểm soát phiên bản trên tất cả các tệp đại diện cho sản phẩm đang được phát triển

Công cụ build [Build tools, Compile tools]: Mã nguồn cần được biên dịch trước khi chạy thử nghiệm. Hầu hết các môi trường phát triển tích hợp (IDE) đóng vai trò là công cụ xây dựng để biên dịch mã.

Công cụ kiểm thử [Test tools]: Là một phần của quy trình xây dựng, các unit test được chạy để đảm bảo rằng các chức năng cơ bản hoạt động theo kế hoạch. Các công cụ unit test thực hiện các kiểm tra nhỏ, atomic test, được viết trong các công cụ này để kiểm tra mã nguồn tránh được các thay đổi ngoài dự kiến trong hành vi.

Trình lập lịch biểu hoặc trình kích hoạt [Scheduler, Trigger]: Các bản dựng [builds] có thể được khởi chạy theo lịch biểu thông thường (chẳng hạn như mỗi giờ) hoặc mỗi khi code được check in, tức là khi hệ thống phát hiện thay đổi mã nguồn.

Thông báo [Notifications]: Nếu một bản dựng bị lỗi, team cần được thông báo để họ có thể sửa bản dựng càng sớm càng tốt. Các thông báo này có thể được gửi qua e-mail hoặc tin nhắn tức thời.

Mặc dù Continuous integration là một thực hành phát triển phần mềm, nhưng cùng một khái niệm này có thể được áp dụng cho các dự án công việc tri thức khác, nơi mà nhiều người đang phát triển các phần riêng biệt của dự án và sau đó kết hợp các phần của họ lại với nhau để tạo ra một sản phẩm có giá trị.

Ưu và nhược điểm của Continuous Integration

Continuous integration rất quan trọng đối với các dự án agile vì nó cung cấp các lợi ích sau:

  • Team nhận được cảnh báo sớm về mã bị hỏng, xung đột hoặc không tương thích.
  • Các vấn đề tích hợp được khắc phục sớm khi chúng mới xảy ra, thay vì đợi đến gần ngày phát hành. Điều này làm giảm đáng kể chi phí thay đổi và tránh được công việc phát sinh vào phút cuối trước khi phát hành.
  • Team nhận được phản hồi ngay lập tức về các tác động trên toàn hệ thống của mã họ đang viết.
  • Thực hành này đảm bảo chạy các unit test để kiểm tra mã thường xuyên, cảnh báo team về các vấn đề sớm không để muộn quá. Nếu một lỗi được tìm thấy, mã có thể được hoàn nguyên về trạng thái không có lỗi trước đó phục vụ cho mục đích thử nghiệm, demo hoặc phát hành.

Những nhược điểm hoặc chi phí phát sinh của việc sử dụng Continuous integration là:

  • Thời gian thiết lập cần thiết để thiết lập máy chủ xây dựng và định cấu hình phần mềm Continuous integration; điều này thường được thực hiện trong Iteration 0 (trước khi công việc phát triển bắt đầu vào dự án).
  • Chi phí mua một máy để hoạt động như một máy chủ xây dựng, vì đây thường là một máy chuyên dụng.
  • Thời gian cần thiết để xây dựng một bộ kiểm thử toàn diện để tự động chạy bất cứ khi nào mã được check in.

Mặc dù có thêm chi phí, Continuous integration được thiết lập như một best practice tiêu chuẩn cho các dự án phát triển phần mềm và hầu hết các team agile sử dụng phương pháp này. Lợi ích của công nghệ này so với các thực hành cũ hơn, chẳng hạn như “thử nghiệm các bản build và làm smoke test hàng ngày” là rất đáng kể. Với Continuous integration, nhiều phép test được thực hiện mỗi ngày và thời gian phát hiện một vấn đề phát sinh sẽ nhanh hơn. Thực hành này là một ví dụ điển hình về cách các team agile có thể rút ngắn thời gian giữa khi xảy ra lỗi, phát hiện lỗi và giải quyết lỗi.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

error: