Internal Developer Platforms – Part 6: Spotify Backstage Functionality

Table of Contents:

Tags:

We already discussed in the earlier parts of this blog post series that in the context of software development, developers face a myriad of tasks that can be overwhelming. An Internal Developer Platform (IDP) or an Internal Developer Portal can aid developers in addressing these tasks more efficiently, thereby reducing their cognitive workload. 

Let’s discuss the challenges developers may encounter during software development and show how a platform like Backstage can support developers in overcoming these challenges in the following. We will discuss problems that can be solved with Backstage out-of-the box.

Management of software applications

New developer during the onboarding process in a company are often lacking an adequate system for managing and accessing existing software applications. This inadequacy makes it difficult for the newcomer to grasp the company’s IT infrastructure, find and understand the software available, and know who is responsible for what within the development process. Such challenges include not knowing who oversees certain software, who contributes to its development, or what framework versions are used. Additionally, new developers might be unaware of dependencies that the company’s applications have on other systems like databases or interfaces, leading to potential complexities due to the lack of documentation. As development progresses, further inquiries may arise, such as the existence of software pipelines for specific applications or the details of the software deployment process. While experienced developers could offer assistance, this would result in productivity losses by diverting valuable resources. In summary, the absence of a dedicated tool can significantly delay a developer’s ability to begin contributing productively to software creation.

Working with documentation

Besides, new developers may face challenges, particularly with software documentation during the onboarding process. Without a dedicated software system, accessing information about existing software becomes difficult. Even if information about what specific software does is available within the company, locating this information is not straightforward for new developers. Documentation may be scattered across various platforms such as Google Docs, Readme files, Confluence, or GitHub Pages. Centralized document management and access might either be non-existent or only possible through cumbersome and inefficient methods, like navigating through disorganized collections of links. Moreover, even if the right documentation is found, there’s no guarantee that the information is up-to-date or accurate. Additionally, details about the document’s author or the software version it pertains to might be missing. If a developer discovers an error in the documentation and wishes to report it, identifying and notifying the author can be challenging. Other developers might not be aware of the potential error or could report it again, leading to a non-transparent and inefficient reporting process that negatively impacts productivity. A centralized repository for documentation could potentially solve these issues.

Create software components in a standardized way

Often, the creation of components is not standardized. When building an application with the Angular framework, for example, a developer must first manually generate skeleton code via the command line, requiring knowledge of Angular’s `ng` tool to establish the app’s basic structure. This step is followed by creating a new GitHub repository, pushing the application to it, and setting up software pipelines, all of which demand additional knowledge and time. The developer must also ensure adherence to predefined schemas, standards, and best practices during application development.

Similarly, creating infrastructure components, possibly through GitOps processes, requires understanding GitOps principles and specific details about the component’s definition, including its structure, required parameters, valid values, target Git repository, and operational infrastructure. Manual attention is needed to comply with predefined standards and rules in this scenario too.

For both scenarios, there’s a possibility that the developer may need to modify or delete components post-creation. A tool that consolidates these tasks, automates them, and standardizes the processes would not only relieve mental burden but also save time and reduce the likelihood of errors, allowing developers to quickly return to productive development work.

Integration of external systems

There is a diversity of services available to developers in software development, covering areas like orchestration, databases, Git, deployment, networks, and analytics. These services are typically accessed via the command line or their respective websites, requiring developers to navigate multiple platforms to perform desired actions. The text suggests a significant improvement in efficiency and usability could be achieved by centralizing access to these services on a single platform, allowing developers to perform all necessary actions in one place. For example, obtaining a quick overview of the status of CI pipelines without having to visit GitHub directly. Such a centralized platform should also be flexible enough to incorporate additional services or custom tools to meet the unique needs encountered in software development. Implementing these optimizations could enhance the overall quality of life for developers by simplifying the operation and management of the software landscape, and by increasing productivity in the software development process.

Summary and Outlook

So, it is easy to see, that there are plenty of scenarios where Backstage can really bring benefits out-of-the-box without needing to apply too much customizations.

In the next blog posts, we will have some deep dive into Backstage. In particular, we will introduce the following Backstage core functionalities:

  • Backstage Search
  • Backstage Catalogue
  • Backstage Tech Docs
  • Backstage Software Templates
  • Backstage Plug-ins