Supporting a growing software team is a daunting challenge, and Git is often at the heart of that task. Ensuring developers can effectively collaborate requires user provisioning, tool permissions, and enough horsepower to support all of the load. If you support a distributed team, the factors become more complex. How do you ensure developers have a consistent experience across geographies and help productivity flourish?
The question you’re probably asking yourself right now is, “What should I expect when I’m anticipating Bitbucket growth?” With Bitbucket Data Center, we’ve seen small teams scale to new heights, and we want to share those scaling insights with you.
Merging more users into your team
It all begins with a new user. Or dozens of new users. You can prepare for team growth by looking at existing employee headcounts and projected future growth (like 5 new engineering hires next quarter). Are there any teams within your company that are interested in moving onto your Bitbucket instance?
Keep in mind that new users signal more Git operations, more test builds, and tooling needs. Scaling Bitbucket Data Center horizontally with more nodes or vertically with hardware, like more CPUs, can avoid annoying bottlenecks that new user loads introduce.
Growth project-ing and organizing
Just like with Jira, projects are a great way to manage team spaces within Bitbucket. A single project can have dozens of repositories, helping unfamiliar engineers delineate between who owns a particular service or supports the latest orchestration tooling. By organizing repositories through projects, teams can easily align to a specific goal, product, or process.
✅ Tip: Audit your existing projects to ensure they match development team needs.
Enough repository branches to make a forest
Repositories lie at the heart of every Git interaction, whether you’re learning Git for the first time or pushing your 100th commit this month. For each new service, app re-write, or architectural change, it all begins with a repo.
Managing a team’s day-to-day Git usage can be another beast entirely and growing repository counts signal an equal growth in CI/CD resource consumption. Developers clone and fetch daily, but the bulk of clone and fetch requests come from tools like Bamboo and Jenkins. A multi-stage build represents dozens of CPU-intensive operations as it repeatedly clones and fetches the target repo.
Have you seen a spike in the number of repos created and is that affecting CI/CD performance? Are developers having to wait longer for tests to run? By offloading those heavy CI/CD requests from your primary instance to a smart mirror, developers can use your primary instance uninterrupted.
✅ Tip: Pointing your CI/CD tool to a smart mirror will offload CPU-intensive git clone operations.
Repos grow in a number of ways, not just in quantity. Over a repository’s lifetime, the total storage size will only increase. That’s just the nature of Git – each commit and revision are carefully recorded (even if you accidentally committed that binary file).
For distributed teams, larger repo sizes exacerbate clone and fetch times. Adding a smart mirror reduces latency and eases network congestion, helping cut down those hours-long clones.
You’ve got to push before you can pull request
Digging further into the depths of Git growth, we finally arrive at pull requests. Software teams and their productivity march to the steady drumbeat of opening, revising, and merging pull requests. Higher pull request counts are a healthy sign of team growth. They can come in all shapes (like smaller changesets) and help developers catch issues before they ever happen. They are a convergence of code collaboration, code quality, and mentorship between teammates.
In the age of DevOps, automating tasks associated with pull requests can help the whole team move faster (and open more pull requests). When Bitbucket is linked with Jira Software, pull requests can be automatically associated with their Jira issue or trigger updates to an issue’s status.
Each pull request should be accompanied by comments. That’s half the point! Pull request encourage team members to discuss things like expectations, better document code, or decide on an architectural direction – from algorithms to code coupling. To make your repositories and pull requests “newbie”-friendly, ensure that code style and standards are documented. Running a linter, like Rubocop, through your CI/CD tool, helps enforce these standards.
Git add apps
Whew, that’s a lot of Git. Bitbucket offers a platform for your day-to-day code collaboration needs and helps you scale, whether it be users, projects, data, or geographies. Not only that, but we also integrate with a myriad of other developer tools. Each organization and team has unique needs, but here are a few of our most popular Bitbucket Server and Data Center apps:
- Web Post Hooks for Bitbucket Server
- Archive Plugin for Bitbucket Server
- Auto Unapprove for Bitbucket Server
- Bitbucket Server Protect Unmerged Hook
- Reviewer Suggester for Bitbucket Server
Keep in mind that once you add apps, it may be difficult to take them away from your users. Rolling out new apps to your software teams can help their adoption across your organization and reduce requests for new tools with overlapping functionality.
Scaling Git and beyond
Whether you’re outgrowing your Bitbucket Server instance or preparing for future growth, we want to ensure you and your software teams flourish. Interested in learning more about how Bitbucket Data Center helps tackle Git scaling challenges? Our whitepaper takes a look at achieving performance at scale via smart mirrors (and more) and critical planning like disaster recovery.