Lời nói đầu
Việc phát triển hiện đại sẽ không thể thiếu 1 công cụ quản lý version của source code như Git. Và ngày nay chúng ta đã có rất nhiều Git provider như GitHub, GitLab, BitBucket,... Trong bài này, chúng ta sẽ cùng so sánh GitHub, GitLab, BitBucket và AWS CodeCommit để biết ưu, nhược điểm của từng bên. Và cũng trả lời câu hỏi có provider nào là CẤM KỊ TRONG VIỆC QUẢN LÝ SECURITY không?
GitHub
Đây có lẽ là provider phổ biến nhất đối với các lập trình viên. GitHub support rất mạnh về Git ở giao diện dễ sử dụng, dễ đăng ký tài khoản, khả năng custom UI,... nhưng đáng kể nhất phải là GitHub Actions - 1 trong những tool CI-CD mạnh nhất và hiện ít có provider git nào có thể mạnh bằng. Các GitHub actions này không chỉ có sẵn các tool open source trên mạng mà bạn hoàn toàn có thể tự tạo 1 GitHub action riêng bằng cú pháp YAML. Với GitHub actions, ta có thể setup để deploy đa nền tảng như AWS, Google Cloud,...
Ngoài GitHub actions, chúng ta còn có 1 tính năng khác là Project - 1 công cụ quản lý ở dạng task list hoặc bảng Kanban giúp ta quản lý dự án(dù cái này còn thua Jira xa nhưng đây là cái mình sẽ đề cập ở phần BitBucket).
Tính năng cuối cùng mình muốn đề cập ở GitHub đó là GitHub page. Chỉ cần upload code frontend của bạn vào repository có tên .github.io
là bạn sẽ có ngay 1 page tĩnh có thể dùng làm nhiều việc khác nhau. Mình thì dùng nó để làm portfolio cá nhân https://blazingrockstorm.github.io
Ở phần nhược điểm thì GitHub hơi nổi tiếng quá về hướng open source. Nhưng không có nghĩa là các doanh nghiệp không lưu trữ code bằng GitHub. GitHub có cho phép tạo private repository như với tài khoản cá nhân thông thường thì chỉ tối đa được 5 cái. Còn nếu nhiều hơn tầm doanh nghiệp chúng ta có GitHub Enterprise có phép có nhiều private repository được bảo mật khá chắc chắn.
GitLab
Khác với GitHub, GitLab lại tạo default repository là private. Và GitLab cũng có 1 số CI-CD cũng khá tốt nhưng không mạnh bằng GitHub. Đây là 1 công cụ tạo private repository giá thành phải chăng hơn so với GitHub
BitBucket
BitBucket thì hồi mình dùng mang tính khá công nghiệp, nhưng mình khá thích 1 giao diện view branch của BitBucket
Giao diện khá tường minh mà GitHub không có. Cũng như GitLab, repository của BitBucket mặc định là private.
Cái BitBucket mạnh là hệ sinh thái của Atlassian như các công cụ quản lý dự án Jira và Trello, CI-CD tool Bamboo,... Nếu hoàn toàn nằm trong hệ sinh thái của BitBucket thì về công nghệ cũng là 1 điểm lợi.
AWS CodeCommit
AWS CodeCommit là nền tảng git riêng của AWS. Để dùng được AWS CodeCommit thì ta phải đăng ký tài khoản AWS. Đây là việc không phải dễ vì có vài tình huống thẻ credit bị lỗi không đăng ký được. Và nếu chỉ dùng mỗi CodeCommit để lưu code thì đăng ký AWS hơi dùng dao mổ trâu giết gà. AWS CodeCommit thì đảm bảo private repository, nhưng do là 1 platform chuyên về cloud và infra nên không có công cụ nào liên quan tới quản lý dự án hỗ trợ kèm. Về CI-CD thì với 1 việc chạy code refactoring ta sẽ phải viết AWSLambda từ đầu, với chạy unit test thì ta sẽ dùng 1 container chạy. Phần unit test sẽ nhanh hơn GitHub và GitLab nhưng phần refactoring code sẽ chậm hơn và mất nhiều công hơn do GitHub và GitLab có cho sử dụng lại 1 số GitHub Actions đã open source, còn AWS CodeCommit phải viết Lambda từ đầu. Điều đó có thể dẫn tới việc để chạy Rubocop cho 1 project Ruby on Rails, ta phải chạy 1 request AWSLambda khá là tốn kém.
Kết bài
Ta có thể thấy mỗi nền tảng có 1 ưu, nhược điểm khác nhau nhưng tất cả đều có thể cho các private repository để bảo mật về source code của dự án cũng như sản phẩm. Có điều tùy vào budget, các công cụ hỗ trợ khác, infra,... mà ta sẽ chọn ra git provider phù hợp. Như vậy, AWS CodeCommit có lợi thế security hơn các git provider khác, nhưng không có nghĩa chọn các provider còn lại, source sẽ bị mở tung ra. Nói cách khác, KHÔNG CÓ MỘT CẤM KỴ NÀO VỀ SECURITY VỚI CÁC GIT PROVIDER NHƯ GITHUB VỚI GITLAB CẢ.
Cảm ơn các bạn đã đọc bài.