Chào các bạn, bạn đang thắc mắc CI/CD là cái gì trong lập trình ? Nó được ứng dụng như thế nào trong phần mềm ? Sử dụng nó có mang lại hiệu quả cao không? Và tại sao các công ty đều sử dụng nó. Hôm nay anh sẽ giới thiệu cho mọi người một tool tên là Jenkins mà các doanh nghiệp hay dùng để làm CICD
CI là viết tắt của từ Continue Integration nó có nghĩa là tự động tích hợp các modules các classes trong chương trình xem có chạy đúng chức năng hay không. Thông thường khi phát triển một phần mềm thì có rất nhiều modules tương tác với nhau để thực hiện một nhiệm vụ cụ thể. Nếu chạy riêng lẻ các module nó có thể chạy đúng nhưng khi tích hợp các module khác lại với nó thì có thể dẫn đến bugs. Chính vì vậy khi code xong một module mình phải chạy tích hợp để đảm bảo các chức năng chạy ok. Để làm được điều này nếu chạy bằng tay thông thường thì sẽ mất rất nhiều thời gian, chính vì vậy sử dụng tool để nó giúp mình làm đều này. Mỗi lần mình viết xong một đoạn code thì tool đó sẽ tự động chạy CI để tích hợp và mình có thể phát hiện ra bug nhanh và rất hiệu quả.
CD là viết tắt của Continue Deploy nó có nghĩa là tự động triển khai code của mình lên con server được chỉ định. Trong lập trình sau khi viết xong một chức năng mình sẽ deploy (triển khai) nó lên server để người dùng có thể sử dụng được. Nếu mình deploy bằng tay thì sẽ có những lúc sơ xuất dẫn đến chương trình chạy sai. Để tránh tình trạng deploy sản phẩm bằng tay do con người làm thì tool có thể giúp mình deploy chính xác. Nếu lần đầu đã đúng thì những lần tiếp theo vẫn chạy đúng vì nó được deploy theo cách mình đã lập trình sẵn. Còn nếu là con người thì có những lúc mình sẽ làm thiếu một số bước.
Cách đây 8 năm khi anh làm việc trong team phát triển sản phẩm cho thị trường siêu thị bên Mỹ. Thì đây là vòng đời từ lúc code tới việc test và triển khai sản phẩm không dùng CICD
Như các em thấy tất cả các khâu lập trình đều làm bằng tay , bằng trao đổi và anh gặp các vấn đề sau :
Nguyen asked Devop to deploy -> Repeat action | lack of notification |
Như vậy anh tốn quá nhiều thời gian cho các công việc mà lập đi lập lại nhiều lần. Có quá nhiều thông báo cho đội tester và đội triển khai sản phẩm. Dẫn đến năng suất thấp, chức năng có nhiều bugs
Chính vì các nhược điểm đã nêu ở trên nên sau này khi bắt đầu một dự án mới anh đều sử dụng tool để làm CICD. Tool thì có nhiều loại như TravisCI, Jenkins. Cái mà anh hay dùng ở công ty là Jenkins.
Vòng đời cứ tiếp tục diễn ra mỗi khi có một lập trình viên nào commit code lên github. Như vậy mình tích hợp các module ngay tức thì. Cùng một lúc mình có thể triển khai source code lên nhiều con server khác nhau. Sử dụng jenkins để làm CICD đã giúp nhóm anh tiết kiệm được 30% khối lượng công việc và thời gian phát triển sản phẩm mà lại cho năng suất cao.
Chính vì lợi ích này thì hầu như công ty nào cũng sử dụng tool để làm CICD. Vậy khi nhắc đến CICD thì các em nghĩ ngay đến việc tự động tích hợp và tự động deploy, nó giúp tiết kiệm thời gian và chi phí.