It is needless to say that DevOps is now the hype around everywhere. Organizations buying and selling DevOps projects, services and tools just as what happened when Agile was the hype. What I have seen though is that organizations - especially ones that don’t have software production as their core competency - are still struggling with more preliminary problems such as harmonization and consolidation of development environments.
One of the building blocks of harmonized development environment is good source code hosting tools that support the needs of the development organization. In the worst case scenario, the source code hosting is scattered across the organization, with every development team having its own tools and practices. In this post, I’m going to present the underlying problem of scattered source code hosting, and the challenges and disadvantages they engender. I will then present our vision of a consolidated platform and how it changes the picture things.
An organization with scattered source code hosting practices looks somewhat like the picture below:
Each project has set up its own version control system in order to support development locally. At a glance, this would seem appropriate. Especially in smaller companies, there might not be time for setting up a proper infrastructure for development because most of the time goes to developing the actual product or service. In the long run, however, this kind of ecosystem accumulates infrastructure debt. Infrastructure debt is picked to describe similar to technical debt or management debt but from development infrastructure point of view.
I have observed and found at least the following disadvantages that ensue from scattered source code practices and tools:
- Growing need for hardware infrastructure
- Scattered user and access management
- No backups
- Overlooked security
- Server maintenance
The larger the organization and more scattered the tools and practices, the more infrastructure debt accumulates. In order to solve and remove infrastructure debt, a consolidated source code hosting platform is needed. The picture below shows how a source code hosting platform, such as Deveo changes the picture.
Each project and developer are using the centralized and unified system to do development. Administration and maintenance of the infrastructure are consolidated to one place. The benefits of a centralized system are at least the following:
- Single hardware infrastructure
- Delegated user and access management
- Reliable backups
- Hardened security
- Centralized management and fault tolerance
Each of the benefits corresponds to a disadvantage presented in the scattered model. I will compare each of the cons with the pros given by a consolidated platform.
1. Scattered hardware vs. Single hardware instance
When creating new projects in scattered infrastructure, a more hardware is needed for each project. Be that hardware virtual or physical, it consumes more resources, and thus money. Let's say company A hosts all their source code on the same physical server but within separate virtual machine images each running their own apache for access management purposes. Company B, however, hosts all their code in centralized code management platform, where only single virtual machine at best case is needed to host everything.
2. Scattered vs. Delegated user and access management
When a company has multiple projects, it usually means more people need access to different set of projects, people switch from project to another and 3rd party stakeholders also want access to the code. This creates quite a raffle in the scattered infrastructure as each project has its custom authentication and authorization set up. Examples of self-setup authentication and authorization I have seen vary from hard-coded username-password combinations to .htaccess files to pass-through LDAP authentication based on LDAP groups. Regardless of the configuration a bottleneck of one person needing to change the configurations exist. When using delegated user and access management, provided by most consolidated solutions the person in charge of the project can empower team members to handle access rights.
3. No backups vs. Reliable backups
When setting up a new infrastructure for a project in haste, we sometimes forget things that are essential in the long run. Backups are one of them. It is common to get a shrug as an answer when asking how backups are being handled in a given project. By using consolidated environment backups are handled automatically meaning that it doesn't matter whether you are in a haste to set up a project, they just work.
4. Overlooked vs. hardened security
The same principle that applies to backups also applies to security. In fast-paced product development, we tend to either forget to update our software with latest security patches and harden the infrastructure, or we simply don't have the time. And why would we need to care about such thing? Development organizations should concentrate on bringing business value rather than setting up and configuring infrastructure. The single consolidated environment provides a mean to solve security related concerns once rather than needing to maintain and monitor multiple systems.
5. Server maintenance vs. Centralized management and fault tolerance
The more servers we have to maintain with different configurations means the more points of error we have, and what if one of our configurations break or the server blanks out? When providing only one infrastructure, it eases the maintenance tremendously. However what needs to be taken care of, is to ensure that the consolidated platform can be scaled and made high available.
Setting up and managing projects and source code hosting with centralized and consolidated infrastructure is faster and cheaper. The explicit savings come from infrastructure, setup and maintenance costs. Implicit savings come from reduced overhead of setting up and managing individual projects and their credentials. I think where it all culminates to is what is our role in the organization. If we are software developers, we should aim to concentrate on bringing value with our core competency - developing first class software, not by doing unproductive work such as setting up and configuring development infrastructure.
Deveo is a source code hosting platform that is on a mission to help you consolidate scattered development infrastructure to one centralized platform. See how.