Skip to content

Service Engineers

As a service engineer, you manage the Viaduct service itself: integrating it into your organization's web-serving stack, configuring how tenant modules are composed, extending the schema with shared types and directives, integrating with your organization's standard dependency-injection framework, and setting up monitoring and alerting. You bridge the gap between individual tenant teams and the underlying platform, ensuring the GraphQL API performs reliably at scale. This section documents how to perform these functions. If you're looking for material on how to write application logic using the Viaduct framework, turn to the Developers section instead.

What's in this section

  • Server Integration — Embed Viaduct into an HTTP framework, message consumer, or other entry point.
  • Schema Extensions — Define application-wide custom directives and shared types available to all tenants.
  • Dependency Injection — Wire a DI framework (e.g., Guice, Koin, Spring) into Viaduct so resolver classes can declare constructor dependencies.
  • Observability — Configure metrics, error reporting, and monitoring.
  • Multi-tenancy — Compose multiple independently-developed tenant modules into a single unified schema.
  • Scope Schemas — Declare the scope IDs and scoped schemas an application can build in scopes.yaml.
  • Feature Flags — Configure Viaduct feature flags.

The service API is shared by Kotlin and Java applications. Select your language in the examples; Java integration uses CompletableFuture for operation execution and Java adapters for coroutine-based SPIs. Build-script examples use Gradle's Kotlin DSL even when tenant code is Java.

When reading this material, click through to the linked API documentation for more details on individual classes.