What is our primary use case?
The positive impact of AWS CodeCommit on my organization was significant, especially transitioning from Subversion (SVN), which was an outdated technology for repositories. It was a very hectic process to pull or push code in SVN due to too many rules.
Before using AWS CodeCommit, I utilized GitHub and SVN for these use cases.
What is most valuable?
The most valuable features of AWS CodeCommit include the least privilege access from IAM, where permissions are granted only for the specific repository the developer is working on, which allows for hundreds of repositories with controlled access per project. Additionally, we can connect a domain to the repositories for easier access via a web browser, and the integration with CodePipeline, CodeBuild, and CodeDeploy allows for seamless pulling from the repository, building and deploying products. Furthermore, there are connections to GitHub for those who use external repositories, and notification rules for commits and deployments keep the team informed through emails or Microsoft Teams, making it very helpful for any organization.
The branch management and pull requests structure helped improve collaboration among my team by establishing an organized hierarchy where the tech lead, as the main interactant with developers, has the full admin policy for PR approvals. Developers test in the dev environment and raise a PR which the tech lead can approve if the code is acceptable, merging it into the main or current branch for release. Before going to the main branch, the developer branch has a testing phase where it's vetted by the QA team according to company rules. Once QA approval is received, the tech lead merges the code into the main branch for release, whether it's small, mini, or major.
What needs improvement?
Understanding AWS CodeCommit was a hectic job for developers at first, while it was easier for the DevOps team. Even with access, they faced questions and difficulties navigating the service, indicating a need for better documentation. It would be beneficial if users knew how to navigate the documentation to get assistance. Furthermore, AWS CodeCommit has been discontinued, so those who created repositories before its discontinuation retain full access, while those who lost access should be assisted by AWS in connecting to GitHub or alternative solutions for easier migration. Although AWS services integrate more seamlessly, connecting third-party tools to AWS CodeCommit can be challenging, emphasizing the need for improved integration processes.
The distinct issue I wanted to improve while working with AWS CodeCommit related to the migration process. Moving from legacy repository services like SVN to AWS should ideally include a reliable migration plan to attract users rather than forcing them to seek other services. The migration was quite hectic initially, taking around two weeks. Easier integration and migration tools would have addressed these challenges and eliminated the issues with AWS CodeCommit.
For how long have I used the solution?
I have been working with AWS CodeCommit for about one and a half years now.
Which solution did I use previously and why did I switch?
The decision to switch from previous solutions like SVN and GitHub was made by our DevOps lead. Understanding the issues with SVN, which was old and likely to close, the transition was needed due to the cumbersome process of pushing and pulling code that involved many steps. While SVN required substantial setup and multiple commands to manage a simple task, AWS CodeCommit utilizes cloud technology, making it significantly easier to handle everything from authentication to repository management in a more streamlined fashion.
What other advice do I have?
I have been exploring AWS WAF, VPC subnets, and Lambda lately.
I worked with AWS CodeCommit about six months ago, or maybe more.
The integration of AWS Identity and Access Management and AWS CodeCommit for managing access control was initially quite hard as I had to navigate various groups including developers, QA teams, admin teams, and the main AWS admin controller while also developing with Terraform. Once I established IAM groups, it became viable to manage permissions based on user groups rather than attaching policies to individual users, simplifying access control as users only receive permissions associated with their respective group like dev, QA, or tech leads, which streamlined the organizational structure while also focusing on specific repository access.
On a scale of 1-10, I rate AWS CodeCommit a 9.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Amazon Web Services (AWS)
Disclosure: My company does not have a business relationship with this vendor other than being a customer.