Blog
Internal Developer Portal

Explore the new Catalog Ingestion APIs for Harness IDP | Harness Blog

These capabilities allow you to update or ingest additional metadata in the Software Catalog for components and use it to customize your Catalog pages UI, build new Scorecard checks and provide dropdown pickers in the Workflows UI.

TL;DR

Harness IDP now enables dynamic metadata updates in the Software Catalog without manual YAML edits, facilitating real-time test coverage tracking and ServiceNow CMDB integration, enhancing developer productivity and operational efficiency.

Lately we have been working hard to support some advanced use-cases for our customers. I am glad to write about an exciting set of new capabilities in Harness IDP (Internal Developer Portal) across Software Catalog, Scorecards and Workflows. I will take you through a couple of use-cases and show how this can be useful for you too.

These capabilities allow you to update or ingest additional metadata in the Software Catalog for components and use it to customize your Catalog pages UI, build new Scorecard checks and provide dropdown pickers in the Workflows UI.

One of our main considerations when building this has been the ease of use - that this should not require manual and expensive YAML updates from developers. We have heard you loud and clear.

Now let us dive into these features by taking a couple of use-cases.

How a software component entity is added to the Harness IDP catalog using a catalog-info.yaml file
GIF demonstrating the Catalog ingestion feature and use-cases

Use Case - View and measure test coverage score for microservices

Assume you have a system which keeps track of test coverage scores for your microservices and other software components. This could be information that you may be getting from your testing tools or systems like Sonarqube. We do not care about the data source or whether you process the data yourself e.g. you might want to generate a mean score based on unit test coverage as well as end to end tests.

For our use-case, let’s assume you want to accomplish two goals -

  • Show on the Software Catalog the test coverage score for any given component e.g. payment-service
  • Build a new Scorecard check in your existing or a new Service Maturity scorecard

As you might be aware, every software component is ingested into the catalog using a catalog-info.yaml definition file. The challenge is that there are hundreds or thousands of microservices and the test coverage score is computed multiple times a day. So there is no way a developer or a platform engineer can keep all the YAMLs up to date.

This leads to the need of updating the component’s definition without updating its YAML definition file. As the Catalog in Harness IDP is powered by Backstage and Backstage does not have an API to update an entity, we had to create a new one!

Using the new Catalog Metadata Ingestion APIs, you can add new metadata fields like metadata.testCoverage for any or all software components in the Software Catalog. This is updated directly in the Catalog without updating its YAML definition file in git. Check out the docs to explore the endpoint in detail.

The entity data is now updated in Catalog, great! But how do we see it? Especially, how would developers find their test coverage score for their services, websites and libraries that they own?

This is where our new Entity Additional Info Card comes to the rescue. Without writing any custom plugin or JS/TS - you can update the Layout of the Catalog page from Admin -> Layout section, add this new Card and start displaying the test coverage score on the Catalog Overview page for the components. This is what it will look like -

Harness IDP Catalog Overview page showing the Additional Info Card with a Code Test Coverage Score of 62%

Brilliant! There’s just one last thing - we need to update our default “Service Maturity” scorecard as well and utilize test coverage score as a check. Let’s assume that the architects in your organization have decided that for backend components, the score should be more than 70% and for UI components, it should be more than 60%.

Scorecards support Catalog as a native data source, where you can query the entity definition to write your own check. In this case, we’ll use the JEXL expression data point and build a check for backend components (filtered using catalog’s tags) to compare the score with the desired number.

Create Check screen in Harness IDP Scorecards configuring a JEXL rule for test coverage greater than 70

And that’s it! The last missing piece is that you can now run the ingestion as per your preference and the data will keep on updating.

ProTip - You can use Harness Pipeline triggers and run the Catalog Ingestion as an hourly or daily cron job, using the Run step in IDP Stage.

This approach can be used for many other similar use-cases, for example tracking team leads and on-call members in catalog or tracking cost budget utilization per service, team or system. Now let’s take a look at another example.

Use Case - Integrating Harness IDP with ServiceNow CMDB

Many of our customers use the ServiceNow CMDB (Configuration Management Database System) to keep track of their software assets. Each application has a unique business application ID which is their unique identifier. It is used anytime developers have to make a new request to the central IT or DevOps teams.

Using the Catalog Ingestion APIs and Additional Info Card as described above, we can ingest and display the Business Application IDs in the IDP Software Catalog as well. However, when it comes to IDP Workflows, these IDs have a role to play there as well, for example when submitting an infrastructure provisioning request.

This is why we have launched a new Autocomplete Picker UI field which allows developers to pick from all available catalog entities and any of its metadata. In this case, we would like developers to pick from all values of metadata.serviceNowAppId. 

Custom Picker Demo form showing the EntityFieldPicker dropdown with system catalog entity options

This is known as EntityFieldPicker. Check out our documentation to learn more.

Thank you for reading! Checkout these additional resources on the features described above.

If you would like to get started with Harness IDP, start here.

← Previous:
Next: →

Related Resources

Introducing Harness Internal Developer Portal - Beta release

Internal Developer Portal

Introducing Harness Internal Developer Portal - Beta release

June 8, 2023

Himanshu Mishra

+ more
Time to Read
Note: Harness Internal Developer Portal has graduated from Beta to Public Preview and then GA. Please see the more recent announcement.

Discovery

In October 2022, when we launched the Backstage-Harness integration for our customers - we started talking to customers who were building their Internal Developer Portal on their own. Months into their journey, many of them complained about the struggles a Platform Engineering team goes through when building an IDP ground up which also includes self managing the hosting and operations aspects. While the trend suggests that IDPs will be everywhere, we couldn’t ignore the challenges our customers were facing in this journey. A successful IDP requires an investment of 3-5 engineers to get an early Proof of Concept, even when using a popular open source project like Backstage. It takes significant effort to set up basic enterprise features like service onboarding pipeline, user and group management, access control, secrets management, audit trails, and more. With Harness IDP, these features are a core part of our platform and are shipped out of the box.

Today, we are proud to go Beta with a handful of customers who need an IDP but find it challenging, costly and time consuming to manage it themselves or find a good alternative. Our IDP is powered by Backstage, the de-facto platform for building developer portals. We want to thank the community for building the software and we are committed to upstream contributions as we move forward.

But let’s back up a second, what is an IDP really? What problems does it solve? And what features does Harness IDP have?

Problems companies are facing today

Let’s start with the problems. The pain starts on day 1 with developer onboarding where it takes too much time and too many tickets to have developers commit, build, test code while also learning the process to get their features to production. It doesn’t get any easier even for more experienced engineers. In today’s cloud-based, decentralized, microservices environments, it’s challenging to manually track all software dependencies and things that need to happen every time changes need to be rolled out from dev-to-test-to-prod. Most organizations use a complex collection of infrastructure (cloud VM, Kubernetes, databases and more), frameworks (code, API, serverless and more) and tools (CI/CD, security scanners, monitoring and more) across different layers of the software stack. This internal maze of technologies creates unnecessary overhead, duplicates effort and hurts developer productivity. As a result, developers end up doing nonessential work to manage the cognitive overhead. Developer productivity and happiness requires removing roadblocks, and tool complexity is one of those roadblocks.

Now let’s take a look at how we are planning to solve these problems using Harness IDP.

Streamlining new service onboarding

How much time does it take for a developer in your company to create a new service? We have heard various answers from days, weeks to months. Lack of automation and standards result in fragmentation of technology choices. Inter-team dependencies make it really difficult to innovate fast.

In Harness IDP, as a developer, you can create a new backend service, API, or a website by submitting a few details as configured by your platform engineering. On the other hand, as a platform engineer, you can orchestrate the onboarding of services by creating pipelines in the Harness Pipeline Studio.

Developers focus on what they do best, which is writing features, while platform engineers focus on creating software templates, automating processes, and enforcing standards.

A catalog of all software components

Imagine a world where you wake up in the morning, get to a single page which can tell you everything you need to know about your running software - its builds, deployments, alerts, errors, etc. And if you want to use a service owned by another team, you get to see its dependencies, documentation, API reference, owner information and much more!

Technical Documentation and Search

With Harness IDP, all your technical documentation written in markdown is made available right alongside the software homepage in the catalog. The docs-like-code (https://www.docslikecode.com) approach ensures that docs are treated just like code, they live alongside the code and are updated in the same Pull Request by engineers. It also helps other developers find the documentation without going anywhere.

And with the Search functionality available not only on documentation, but across all the software components you have registered, you can quickly find what you need. This is so much better than “rumor-driven-development” isn’t it? Usually that involves asking a question on the #engineering-help channel and waiting for the handful few to notice and answer.

Extensibility through plugins

The number one reason Backstage is the best developer portal platform out there is its plugin architecture. There are hundreds of plugins available in the marketplace which integrate Backstage with third party providers and enhance the portal. We have built our own plugins and integrated with a curated list of Backstage plugins which you can enable and use.

Sign up for Beta

Harness IDP is currently available to a limited set of customers. We want to work closely with our customers and evolve in more use-cases suited for a Developer Portal. To get started, send an email to idp-interest@harness.io for a demo and we’ll get you started. To learn more, checkout the documentation at developer hub.

Request a demo

Checkout Harness Internal Developer Portal

Learn more: Developer Portal Scalability Best Practices, Internal Developer Platform vs Internal Developer Portal, Effective governance strategies for internal developer portals

Get Started

Get Started with Harness AI

Try the full platform free. No module restrictions, no credit card.

Himanshu Mishra
Staff Product Manager
Himanshu Mishra is a Staff Product Manager at Harness, they lead the growth and strategic development of the Internal Developer Portal (IDP), a platform designed to optimize developer workflows.
himanshu-mishra
Himanshu Mishra