Một trong những kiếm tiền từ phần mềm là làm ra sản phẩm (có thể là một trang web bán hàng, mobile app…) và đưa chúng đến tay người dùng (bán sản phẩm phần mềm, ứng dụng mobile, game …), nhận phản hồi từ phía người dùng, cải thiện sản phẩm, tăng tính năng, tăng trải nghiệm người dùng…, có thể gọi đó là những hoạt động khinh doanh.
Mục tiêu chính của bất kỳ dự án phần mềm nào là kiếm tiền thông qua việc tự động hóa quy trình kinh doanh. Bạn có thể phát hành phiên bản mới (vá lỗi, thêm tính năng… như đã nói ở trên) cho khách hàng càng nhanh thì điều đó càng tốt cho công ty của bạn. Nhưng làm thế nào để thực hiện quá trình phát hành một cách nhanh chóng ?
Bạn có thể làm điều đó theo cách thủ công. Ví dụ: có thể kết nối với server từ xa qua SSH. Sau đó, bạn có thể tải code mới về server, build và chạy nó bằng dòng lệnh. Mặc dù nó hoạt động nhưng nó không phải là một cách tiếp cận hiệu quả và có thể làm chậm đi quá trính release (đưa đến tay người dùng)
Quy trình phát triển phần mềm
Để hiểu về quy trình phát triển phàn mềm, bạn có thể hình dung nó như một dây chuyền lắp ráp xe oto.
sau khi thiết kế (Plan) các linh kiện sẻ được chế tạo (Code) và lắp ráp lại thành một chiếc oto hoàn chỉnh. Và trước khi các linh kiện có thể được lắp ráp với nhau thì chúng cũng phải trải qua quá trình kiểm tra chất lượng (Test). Quay trở lại quy trình phát triển phần mềm, sau khi lên kế hoạch (Plan) mỗi developer (lập trình viên) sẻ code phần việc được giao, sau khi code xong sẻ tiến hành kiểm tra code (test, review…) trước khi đẩy code lên server lưu trử, cũng như tránh làm hỏng phần code đang có trên server.
CI
Tất cả các yêu cầu có thể được xác nhận theo cách thủ công. Mặc dù cách tiếp cận này khá vô tổ chức. Hơn thế nữa, việc duy trì nó trở nên khó khăn hơn khi nhóm developer phát triển. CI đã được đưa ra để tự động hóa các đề xuất đã nêu.
Sau khi các developer code xong, họ sẻ đẩy lên server lưu trử (Git), mỗi developer sẻ có một nhánh riêng, server CI sẻ lắng nghe những yêu cầu đẩy code của developer, sau đó server CI sẻ kéo code về tử server lưu trử (Git) tiến hành kiểm tra code, sau đó báo về cho developer, tuỳ vào yêu cầu của dự án mà code có được merge (hợp nhất, tương tự như lắp ráp các linh kiện oto) vào master (nhánh chín, có hể hiểu nôm na là chiếc oto đang dần hoàn thiện) hay không.
CI tools
Thị trường cung cấp hàng chục giải pháp để tự động hóa các quy trình CI .
Jenkins: Một trong những công cụ CI/CD được yêu thích nhiều nhất trên thế giới. Nó đã trở nên rất phổ biến vì chính sách mã nguồn mở của nó. Vì vậy, bạn không phải trả tiền cho bất cứ điều gì.
GitHub action: Công cụ CI/CD được bao gồm trong GitHub và GitHub Enterprise.
GitLab CI: Nó khá giống với GitHub Actions.
Travis CI: Dịch vụ CI/CD cloud.
và còn nhiều Tools Ci/CD khác nữa, bạn có thể tìm hiểu thêm.