Software Engineering is hard.
As time has progressed, the number of languages, frameworks and packages available has grown to the point where it’s rare nowadays to find a project that is developed entirely in a single language or within a single ecosystem.
A typical project uses the best languages and frameworks for the job, and these frequently differ depending on what part of the project is being developed. And that stands to reason - after all those different languages in most cases exist precisely because they are better suited to some specific tasks rather than others.
When you then bring package management into play, things get more complicated again. If you are using several languages, you’ll have several package managers. That in turn means you’ll require several repositories (Public or Private) and therefore several places that you need to manage, several places that you’ll need to integrate with your build processes, and several places that you’ll have to ensure your team has reliable, performant access to.
It is a universal law of software development that there is more than enough to manage as it currently stands, so adding all that to the pile isn’t a great idea.
At Cloudsmith we believe there is a better way: multi-tenant repositories.
Multi-Tenant Repositories: What Are They?
So what is a Multi-Tenant Repository? Well, in short, it’s ONE PLACE to store and manage your software artifacts and packages - no matter what package formats you are working with.
Yes, that’s right Your Docker images can live right alongside your Python packages or your npm packages. You have one single location to manage.
Furthermore, this one location will play nicely with your native package management tooling. You can just do your usual `docker pull`, `pip install` or `npm install` - all from the one, single repository!
So whilst you have a single repository, and a single set of processes for managing, sharing and controlling your software assets, you lose absolutely nothing when it comes to functionality.
The benefits of multi-tenant repositories aren’t just limited to development environments either.
If you are distributing your software to your own customers, and you provide it in a number of different formats, wouldn’t it be nice (and convenient) to offer all those formats to your customers from a single unified location? Not only does it just work better, it looks better also!
You no longer have to worry about pushing/publishing to multiple different repositories, or keeping them in sync, wondering what was pushed to where - it’s all in the one place. The reduction in overhead here is not to be underestimated.
Now of course, if you want to create a repository for each format that you use then you absolutely can do that - there is nothing about Cloudsmith’s multi-tenant repositories that would prevent you from doing so, if that’s your style and you’re happy with it - or if you work in a single language/ecosystem. The point is that we give you the flexibility to “do it differently” (and just maybe, easier!)
At Cloudsmith, we really believe in automation. And in our experience what helps automation is simplification. Make processes simpler, make them less error-prone, more reliable and more robust: just make them easier to automate!
Multi-Tenant repositories are here to make your lives easier, not harder.
As I said, software engineering is hard enough already! 😊