A centralized DevOps platform is an inseparable part of modern software development. It helps companies achieve fast, cost-efficient and automated software production. The first step in building a centralized platform is to start enhancing the overall robustness of your in-house system.
System robustness is achieved by eliminating single points of failure in the system that would prevent successful transition. Often, the points of failure are related to people, technologies, tools or documentation. In this blogpost, I will guide you through the first step on how your company can start building a centralized platform like Eficode ROOT.
Why is ‘robustness’ step 1 in the process?
When I say robustness is the starting point of building a DevOps platform, what I’m mean is that there are some foundational elements you need to have place in your culture and processes in order to build a viable infrastructure for your platform. The aspects of this foundation we will run through here are comms channels, semi-automatic documentation, and extensive use of version control.
Adopt fast, inclusive communication channels
Traditional channels such as email are exclusive. A sender selects the group of recipients and those who are left out miss that information even though it may be relevant to them. In that sense, email necessarily creates siloes and makes the system less robust.
Without having this foundation of robustness in place, the rest of your efforts will be built on sand.
A robust system requires transparency and seamless communication. It’s ironic that many companies aiming for modern and fast software development are still using slow and outdated communication channels.
Inclusive communication channels, like Slack or Flowdock allow fast, real-time distribution of information and allow features that are not possible in traditional email chains. You can add all involved parties to channels, like team members, customers and partners. One of the most important features is that people can join and leave the channels when needed. Switching to inclusive communication channels ensures transparency within the company and keeps people up-to-date.
Document all project information
Information related to a project needs be documented and contained by the platform, as information belongs to the whole team. All critical project information should documented in the project management or ticketing system, such as Jira.
- project requirements
- quality criteria
- tasks descriptions
and project deliverables, such as
- application code and test code
- environment definitions and configurations.
These should be stored in the version control, whereas installable packages that come out of the pipeline in the end, should be stored in the binary storage.
If you follow these steps in documentation, all the critical information related to the project will be safely stored and easily available for the whole team.
The benefit here is that if all key information is in project management systems and version control, not much needs to be separately documented: only high-level targets, architectural diagrams, and suchlike. Most key information is documented organically during the processes themselves.
Hence why this is an important aspect of laying the foundation for your DevOps Platform!
By controlling all changes, you will always have up-to-date visibility to the system state. By doing this, in case of a failure, you will be able to trace possible problems efficiently and get rollbacks if you need to return to the previous stage.
In order to implement changes successfully, you shouldn’t do code any changes directly in the environments. In fact, no changes should be done in a way that bypasses version control, including changes to the application code, middleware and environment configurations.
Instead, do it through the version control and you will avoid the mess!
Functionalities you will eventually need
Finally, let’s take a look at software production line and functionalities that will help you to achieve efficient distribution of information, help you to control change and manage documentation.
From the tooling perspective, needed functionalities are:
- version control
- binary storage
- document management & team comms
- requirements & project management.
And that, my friends, is step 1 to building a DevOps Platform.
- Step 2 to building a DevOps Platform: Enable high throughput
If you need help to get started, the Eficode ROOT team is happy to help you out! We have over 10 years of experience with software production environments. Don’t hesitate to leave a message >