Tích hợp Liên tục (Continous Integration – CI)
I. Định nghĩa
- CI ( Continuous Integration) là phương pháp phát triển phần mềm đòi hỏi các thành viên trong nhóm tích hợp công việc thường xuyên.
- Các thành viên đều phải theo dõi và phát triển công việc liên tục, việc này sẽ được một nhóm khác kiểm tra tự động, sẽ tiến hành test để phát hiện lỗi một cách nhanh nhất.
1. Continuous Deployment
- Được biết đến với mối quan hệ mật thiết với CI. Continuous Deployment giúp việc deploy ứng dụng có thể dược diễn ra trong bất cứ thời điểm nào và sau đó thậm chí là tự động release một phiên bản mới trên môi trường test hoặc production nếu như bản build (các mã lệnh của bạn gửi lên server) vượt qua được tất cả các test case.
- Nếu xảy ra lỗi trong quá trình build thì lập trình viên có thể dễ dàng xác định được lỗi diễn ra ở đâu qua đó fix dễ dàng hơn.
2. Continuous Delivery
- Continuous Delivery là tập quán của việc đảm bảo mã lệnh của từng lập trình viên tham gia vào dự án có thể deploy ở bất kỳ lúc nào. Cùng với đó nó có thể sẽ không đảm bảo ứng dụng có thể được deploy một cách an toàn trên môi trường production vì thông thường sẽ có các sự khác biệt trong cách cấu hình ứng dụng giữa môi trường production và test.
II. Nói đến tích hợp liên tục với phát triển theo hướng kiểm thử phù hợp thì không thể không nhắc đến Agile(Agile Software Development)
- Phương thức phát triển phần mềm Agile là một tập hợp các phương thức phát triển lặp và tăng dần trong đó các yêu cầu và giải pháp được phát triển thông qua sự liên kết cộng tác giữa các nhóm tự quản và liên chức năng.
III. Jenkins
1. Định nghĩa.
- Là một ứng dụng web application mã nguồn mở đóng vai trò máy chủ build và test của hệ thống CI
- Được viết bằng java nên có thể kết hợp được với hầ hết các công cụ khác của hệ thống CI với nhiều nền tảng khác nhau
- Tiền thân là Hubson được viết bởi Kosuke Kawaguchi tại Sun. Khi Oracle mua lại Sun năm 2010, một bộ phận phát triển Hubson được tách ra phá triển riêng được tên là Jenkins.
2. Ưu điểm:
- Dễ dàng cài đặt và sử dụng
- đa nền tảng
- hỗ trợ nhiều công nghệ phát triển phần mềm
- được sử dụng rộng rãi
- dễ mở rộng
- FREE
- Dễ dàng liên kết với các công cụ khác của hệ thống tích hợp liên tục thông qua các plug in
- Tất cả hầu như là tự động
- Nhanh hơn, dễ hơn, an toàn hơn, thông minh hơn.
IV. Khó khăn khi áp dụng CI.
- Cần thời gian thiết lập hệ thống ban đầu.
- Đòi hỏi quản lý dự án, người lập trình, người kiểm định phải am hiểu mô hình phát triển phần mềm Agile, hệ thống tích hợp CI, cách sử dụng các công cụ hỗ trợ cho Agile và CI.
- Chi phí thiết bị phần cứng.
V. Tại sao cần CI???
- Giảm thiểu rủi do lỗi được phát hiện sớm.
- Giảm thiểu sự lặp lại cho các quá trình.
- Tạo phần mềm có giá trị sử dụng sớm nhất có thể và sẵn sáng triển khai mọi lúc.
- Cung cấp cái nhìn xuyên suốt tổng quan và cụ thể cho từng giai đoạn
- Nâng cao kỹ năng đội ngũ nhân viên
- Cải thiện chất lượng phần mềm.
- Các thành viên đều phải theo dõi và phát triển công việc liên tục, việc này sẽ được một nhóm khác kiểm tra tự động, sẽ tiến hành test để phát hiện lỗi một cách nhanh nhất.
Hình ảnh minh họa hệ thống tích hợp liên tục.
1. Continuous Deployment
- Được biết đến với mối quan hệ mật thiết với CI. Continuous Deployment giúp việc deploy ứng dụng có thể dược diễn ra trong bất cứ thời điểm nào và sau đó thậm chí là tự động release một phiên bản mới trên môi trường test hoặc production nếu như bản build (các mã lệnh của bạn gửi lên server) vượt qua được tất cả các test case.
- Nếu xảy ra lỗi trong quá trình build thì lập trình viên có thể dễ dàng xác định được lỗi diễn ra ở đâu qua đó fix dễ dàng hơn.
2. Continuous Delivery
- Continuous Delivery là tập quán của việc đảm bảo mã lệnh của từng lập trình viên tham gia vào dự án có thể deploy ở bất kỳ lúc nào. Cùng với đó nó có thể sẽ không đảm bảo ứng dụng có thể được deploy một cách an toàn trên môi trường production vì thông thường sẽ có các sự khác biệt trong cách cấu hình ứng dụng giữa môi trường production và test.
II. Nói đến tích hợp liên tục với phát triển theo hướng kiểm thử phù hợp thì không thể không nhắc đến Agile(Agile Software Development)
- Phương thức phát triển phần mềm Agile là một tập hợp các phương thức phát triển lặp và tăng dần trong đó các yêu cầu và giải pháp được phát triển thông qua sự liên kết cộng tác giữa các nhóm tự quản và liên chức năng.
III. Jenkins
1. Định nghĩa.
- Là một ứng dụng web application mã nguồn mở đóng vai trò máy chủ build và test của hệ thống CI
- Được viết bằng java nên có thể kết hợp được với hầ hết các công cụ khác của hệ thống CI với nhiều nền tảng khác nhau
- Tiền thân là Hubson được viết bởi Kosuke Kawaguchi tại Sun. Khi Oracle mua lại Sun năm 2010, một bộ phận phát triển Hubson được tách ra phá triển riêng được tên là Jenkins.
2. Ưu điểm:
- Dễ dàng cài đặt và sử dụng
- đa nền tảng
- hỗ trợ nhiều công nghệ phát triển phần mềm
- được sử dụng rộng rãi
- dễ mở rộng
- FREE
- Dễ dàng liên kết với các công cụ khác của hệ thống tích hợp liên tục thông qua các plug in
- Tất cả hầu như là tự động
- Nhanh hơn, dễ hơn, an toàn hơn, thông minh hơn.
IV. Khó khăn khi áp dụng CI.
- Cần thời gian thiết lập hệ thống ban đầu.
- Đòi hỏi quản lý dự án, người lập trình, người kiểm định phải am hiểu mô hình phát triển phần mềm Agile, hệ thống tích hợp CI, cách sử dụng các công cụ hỗ trợ cho Agile và CI.
- Chi phí thiết bị phần cứng.
V. Tại sao cần CI???
- Giảm thiểu rủi do lỗi được phát hiện sớm.
- Giảm thiểu sự lặp lại cho các quá trình.
- Tạo phần mềm có giá trị sử dụng sớm nhất có thể và sẵn sáng triển khai mọi lúc.
- Cung cấp cái nhìn xuyên suốt tổng quan và cụ thể cho từng giai đoạn
- Nâng cao kỹ năng đội ngũ nhân viên
- Cải thiện chất lượng phần mềm.
Comments
Post a Comment