Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Hubber Codespace Improves Inner-Loop Testing at GitHub

Hubber Codespace Improves Inner-Loop Testing at GitHub

GitHub's Developer Experience (DX) team recently unveiled a new tool aimed at streamlining the inner-loop development process within its distributed service ecosystem. Named "Hubber Codespace" (HCS), the solution addresses some challenges posed by integration testing in a modular team structure where different services are developed and operated independently.

Integration testing in a distributed or microservice system such as GitHub quickly becomes complex. As GitHub evolved from a smaller organization to a larger one with hundreds of teams, the traditional approach of iterating within a mono-repo became impractical, with a proliferation of microservices being created. Managing dependencies across all these different services, each with differing requirements and versions, presented a challenge in performing representative testing. To tackle this issue, the DX team embarked on a mission to provide teams with a fast and reliable development cycle that worked around the constraints of a mono-repo setup.

The genesis of this new tool stemmed from a fundamental shift in perspective: rather than bringing developers to the ecosystem, why not bring the ecosystem to the developers? This approach led to the development of HCS, a Docker Compose project designed to locally stand up the entire GitHub ecosystem. By enabling developers to test their code within an integrated environment, HCS facilitates a deeper understanding of how a developer's changes interact with the broader system, increasing the developer's confidence in their deployments.

The DX team evaluated several options as an appropriate orchestrator for HCS, including Minikube and an internal SSH tunnelling tool (Codespace-Compose). Ultimately, Docker Compose emerged as the preferred choice due to its simplicity, robustness, and minimal maintenance overhead. To further enhance the user experience, a user-friendly CLI was developed in Golang, offering seamless integration with HCS and abstracting away the complexities of Docker-Compose commands.

One key challenge HCS addresses is ensuring developers have access to an up-to-date version of the GitHub ecosystem. To achieve this, HCS collects the latest mono-repo release and SHAs for other microservices as part of an automated release process. This ensures that HCS is aligned with the latest GitHub codebase changes, so developers are not working with out-of-date code.

The adoption of HCS has garnered positive feedback from partner teams, with many lauding its impact on their development process. By simplifying integration testing and providing a consistent development environment, HCS has empowered teams to confidently validate their changes, eliminating the need for manual steps and reducing deployment friction.

In conclusion, introducing Hubber Codespace is a significant milestone in GitHub's ongoing efforts to enhance the developer experience. GitHub empowers developers to build, test, and deploy code with increased efficiency and reliability by using containerization and innovative tooling. This gives them the confidence that their changes have been tested appropriately in GitHub's complex collection of mono-repo and microservices.

About the Author

Rate this Article