Representative interview topic

Product manager interview: Should a SaaS offer OpenTelemetry declarative configuration import?

ProductHard
Offer.cc Editorial TeamPublished Updated

Question

The OpenTelemetry declarative configuration specification is stable. Users ask your observability SaaS to upload YAML and generate Collector configuration. How do you decide whether to launch it?

Prompt and scope

You own an observability SaaS for mid-sized engineering teams. Customers already maintain OpenTelemetry configuration files and want to upload declarative YAML to generate collection, processing, and export configuration. The JSON schema, YAML representation, and parsing/instantiation mechanisms are stable. Decide whether to offer import and design the first version.

What the interviewer is testing

The interviewer wants you to separate “the specification is stable” from “the product is worth building,” and to identify user value, configuration safety, vendor lock-in, and support cost. A strong answer names the target user, minimum scope, rejection rules, success metrics, canary, and explicit non-goals.

Questions to clarify first

  • Are target users already operating Collectors, or are they new to YAML?
  • Does import deploy to a SaaS-managed Collector or export to a customer-managed environment?
  • May a file contain credentials, network endpoints, processor scripts, or custom plugins?
  • Is the largest problem onboarding, migration effort, debugging time, or ongoing operations?

30-second answer

“I would first validate that customers need to bring existing configuration into a managed environment, rather than building upload because the specification is stable. The first version would support a restricted schema subset, validate version, permissions, credentials, and resources, and produce a reviewable diff with export and rollback. I would canary with existing Collector users, measuring import success, time to first valid signal, rollback within 24 hours, support tickets, and cost. If the value is mainly migration, I would build a validator and guided flow before executing arbitrary YAML.”

Step-by-step solution

1. Define the user problem

Interview platform teams moving to a managed Collector and separate “cannot write configuration” from “cannot migrate existing configuration.” Collect configuration size, component types, private plugins, credential handling, and recovery data. Import has initial value only when the migration group saves meaningful time.

2. Choose a minimum scope

Start with receivers, processors, exporters, and service settings covered by the official schema, with an explicit version and component allowlist. Reject unknown plugins, arbitrary scripts, embedded long-lived credentials, and unsupported extensions. Offer templates and human review for complex files rather than promising universal success.

3. Set the security boundary

Parse uploads in an isolated environment with no outbound network during parsing. Bind credentials by reference to a secret manager, redact them in the UI, and audit uploader, approver, and activation time. Check permissions, endpoints, resource limits, and data residency before generating configuration so import cannot become an exfiltration or execution path.

4. Make the preview explainable

Normalize YAML into a model and show component changes, sampling, redaction, routing, and exporters. Explain every unsupported field and allow the generated result to be downloaded. Preview and deployment must use the same parser version; otherwise a preview can pass while deployment fails.

5. Set success metrics

Core metrics are time to first valid telemetry signal after import, first-pass success rate, and rollback within 24 hours. Guardrails include parse failures, data loss, support tickets, export cost, and policy rejections. Segment by customer size instead of relying on an overall import average.

6. Canary and rollback

Invite customers already using official Collector configuration. Enable import without overwriting the live version; after approval, create a new version. On deployment failure, retain the previous version and support one-click rollback and export. Add component types and managed execution only after the canary is stable.

Model answer

I would not equate a stable specification with product demand. First validate whether existing Collector users lose time or retention during migration, then build an import MVP around a restricted schema. Parse in isolation, reference secrets instead of embedding them, and reject unknown plugins and scripts. Show normalized diffs, policy rejection reasons, and downloadable output. Early customers create a new version rather than overwrite production; measure time to first signal, first-pass rate, 24-hour rollback, tickets, and export cost. Expand components and managed execution only after the evidence supports it.

Common mistakes

  • Supporting everything because the specification is stable → support and security scope explode → start with an allowlist.
  • Allowing arbitrary plugins and scripts → upload becomes an execution path → isolate parsing and reject unknown capabilities.
  • Overwriting production automatically → one failure has a large blast radius → version, review diffs, and provide rollback.
  • Counting imports only → users still receive no data → measure first valid signal and rollback rate.
  • Putting credentials in YAML → leakage risk rises → use secret references, redaction, and audit.

Follow-up questions and responses

What if an enterprise demands custom plugins?

First verify whether the plugin can run safely inside the managed boundary. Offer a private agent or export mode, but do not add arbitrary code execution to the shared path for one customer.

Why build export before automatic deployment?

Export validates parsing, diffs, and user value with a smaller failure radius. Automatic deployment adds permission, network, resource, and rollback risk; open it after trust and guardrails mature.

How should schema upgrades work?

Record the schema version, validate by version, and provide migration guidance. Release a new version with preview and compatibility reports; never silently change sampling or export semantics.

When should you stop building the feature?

Stop expanding if target users still prefer GitOps, import does not shorten onboarding, or security review and support cost exceed retention value. Invest instead in validation, documentation, or export tooling.

Public sources

Related questions