From 9c24132fe9b775ec40781545dc8e3468c3c8915e Mon Sep 17 00:00:00 2001 From: Maria Elisabeth Schreiber Date: Fri, 16 Feb 2024 13:47:36 -0700 Subject: [PATCH] docs: document premium vs enterprise router features (#4677) Many features that were previously denoted "Enterprise only" are also now included in the Dedicated plan. This PR calls those out and adds an explanation of "GraphOS Router" found on the often linked pricing page. This PR is dependent on component changes in https://github.com/apollographql/docs/pull/777 and should be merged shortly after it. --- **Checklist** Complete the checklist (and note appropriate exceptions) before the PR is marked ready-for-review. - [ ] Changes are compatible[^1] - [ ] Documentation[^2] completed - [ ] Performance impact assessed and acceptable - Tests added and passing[^3] - [ ] Unit Tests - [ ] Integration Tests - [ ] Manual Tests **Exceptions** *Note any exceptions here* **Notes** [^1]: It may be appropriate to bring upcoming changes to the attention of other (impacted) groups. Please endeavour to do this before seeking PR approval. The mechanism for doing this will vary considerably, so use your judgement as to how and when to do this. [^2]: Configuration is an important part of many changes. Where applicable please try to document configuration examples. [^3]: Tick whichever testing boxes are applicable. If you are adding Manual Tests, please document the manual testing (extensively) in the Exceptions. --------- Co-authored-by: Edward Huang --- docs/source/configuration/authn-jwt.mdx | 2 +- docs/source/configuration/authorization.mdx | 2 +- .../configuration/distributed-caching.mdx | 2 +- docs/source/configuration/operation-limits.mdx | 2 +- docs/source/configuration/persisted-queries.mdx | 2 +- .../telemetry/exporters/metrics/overview.mdx | 2 +- .../telemetry/instrumentation/conditions.mdx | 2 +- .../telemetry/instrumentation/events.mdx | 2 +- .../telemetry/instrumentation/instruments.mdx | 2 +- .../telemetry/instrumentation/spans.mdx | 6 +++--- .../source/configuration/telemetry/overview.mdx | 6 +++--- docs/source/customizations/coprocessor.mdx | 2 +- docs/source/enterprise-features.mdx | 17 ++++++----------- .../subscription-support.mdx | 8 ++++---- 14 files changed, 26 insertions(+), 31 deletions(-) diff --git a/docs/source/configuration/authn-jwt.mdx b/docs/source/configuration/authn-jwt.mdx index c0ca0644fe..626d2be233 100644 --- a/docs/source/configuration/authn-jwt.mdx +++ b/docs/source/configuration/authn-jwt.mdx @@ -3,7 +3,7 @@ title: JWT Authentication in the Apollo Router description: Restrict access to credentialed users and systems --- - + Authentication is crucial to prevent illegitimate access and protect sensitive data in your graph. The Apollo Router supports request authentication and key rotation via the [JSON Web Token](https://www.rfc-editor.org/rfc/rfc7519) (**JWT**) and [JSON Web Key](https://www.rfc-editor.org/rfc/rfc7517) (**JWK**) standards. This support is compatible with popular identity providers (**IdPs**) like Okta and Auth0. diff --git a/docs/source/configuration/authorization.mdx b/docs/source/configuration/authorization.mdx index 0e73f467b3..190d2aa8d2 100644 --- a/docs/source/configuration/authorization.mdx +++ b/docs/source/configuration/authorization.mdx @@ -3,7 +3,7 @@ title: Authorization in the Apollo Router description: Strengthen service security with a centralized governance layer --- - + APIs provide access to business-critical data. Unrestricted access can result in data breaches, monetary losses, or potential denial of service. Even for internal services, checks can be essential to limit data to authorized parties. diff --git a/docs/source/configuration/distributed-caching.mdx b/docs/source/configuration/distributed-caching.mdx index c5e8a69d70..c81d425ea8 100644 --- a/docs/source/configuration/distributed-caching.mdx +++ b/docs/source/configuration/distributed-caching.mdx @@ -4,7 +4,7 @@ subtitle: Redis-backed caching for query plans and APQ description: Distributed caching for Apollo Router with GraphOS Enterprise. Configure a Redis-backed cache for query plans and automatic persisted queries (APQ). --- - + If you have multiple Apollo Router instances, those instances can share a Redis-backed cache for their query plans and automatic persisted queries (APQ). This means that if _any_ of your router instances caches a particular value, _all_ of your instances can look up that value to significantly improve responsiveness. For more details on query plans and APQ, see the article on [in-memory caching](./in-memory-caching). diff --git a/docs/source/configuration/operation-limits.mdx b/docs/source/configuration/operation-limits.mdx index 07bc435932..4641fe1ba0 100644 --- a/docs/source/configuration/operation-limits.mdx +++ b/docs/source/configuration/operation-limits.mdx @@ -3,7 +3,7 @@ title: Enforcing operation limits in the Apollo Router description: With GraphOS Enterprise --- - + You can define **operation limits** in your router's configuration to reject potentially malicious requests. An operation that exceeds _any_ specified limit is rejected (unless you run your router in [`warn_only` mode](#warn_only-mode)). diff --git a/docs/source/configuration/persisted-queries.mdx b/docs/source/configuration/persisted-queries.mdx index f6892412f0..2566ffbbc2 100644 --- a/docs/source/configuration/persisted-queries.mdx +++ b/docs/source/configuration/persisted-queries.mdx @@ -4,7 +4,7 @@ description: Secure your graph while minimizing request latency minVersion: 1.25.0 --- - + diff --git a/docs/source/configuration/telemetry/exporters/metrics/overview.mdx b/docs/source/configuration/telemetry/exporters/metrics/overview.mdx index 943f45f0fa..b9bd7e006c 100644 --- a/docs/source/configuration/telemetry/exporters/metrics/overview.mdx +++ b/docs/source/configuration/telemetry/exporters/metrics/overview.mdx @@ -180,7 +180,7 @@ telemetry: -OpenTelemetry includes many [standard attributes](https://opentelemetry.io/docs/specs/semconv/attributes-registry/) that you can use these via custom [instruments](../instrumentation/instruments). +OpenTelemetry includes many [standard attributes](https://opentelemetry.io/docs/specs/semconv/attributes-registry/) that you can use via custom [instruments](../instrumentation/instruments). diff --git a/docs/source/configuration/telemetry/instrumentation/conditions.mdx b/docs/source/configuration/telemetry/instrumentation/conditions.mdx index e07e8791c1..59d4f4a997 100644 --- a/docs/source/configuration/telemetry/instrumentation/conditions.mdx +++ b/docs/source/configuration/telemetry/instrumentation/conditions.mdx @@ -4,7 +4,7 @@ subtitle: Set conditions for when events or instruments are triggered description: Set conditions for when events or instruments are triggered in the Apollo Router --- - + You can set conditions for when an [instrument](./instruments) should be mutated or an [event](./events) should be triggered. diff --git a/docs/source/configuration/telemetry/instrumentation/events.mdx b/docs/source/configuration/telemetry/instrumentation/events.mdx index 70b7a3d0e4..71380f816b 100644 --- a/docs/source/configuration/telemetry/instrumentation/events.mdx +++ b/docs/source/configuration/telemetry/instrumentation/events.mdx @@ -61,7 +61,7 @@ telemetry: ### Custom events - + For each service you can also configure custom events. diff --git a/docs/source/configuration/telemetry/instrumentation/instruments.mdx b/docs/source/configuration/telemetry/instrumentation/instruments.mdx index 875032d582..cfd3cbce8f 100644 --- a/docs/source/configuration/telemetry/instrumentation/instruments.mdx +++ b/docs/source/configuration/telemetry/instrumentation/instruments.mdx @@ -59,7 +59,7 @@ See the [attributes](#attributes) configuration for more information. ### Custom instruments - + You can define custom instruments on the router, supergraph and subgraph services in the router pipeline. diff --git a/docs/source/configuration/telemetry/instrumentation/spans.mdx b/docs/source/configuration/telemetry/instrumentation/spans.mdx index 417d9c3382..41fc4c399b 100644 --- a/docs/source/configuration/telemetry/instrumentation/spans.mdx +++ b/docs/source/configuration/telemetry/instrumentation/spans.mdx @@ -37,11 +37,11 @@ Spans may have attributes attached to them from the Apollo Router pipeline. Thes Attributes may be drawn from [standard attributes](./standard-attributes) or [selectors](./selectors). - + -Granular customization of attributes on spans is an Enterprise Feature that requires a [GraphOS Enterprise plan](/graphos/enterprise/). +Granular customization of attributes on spans requires a GraphOS [Dedicated or Enterprise plan](https://www.apollographql.com/pricing#observability). - + The attributes that are available depend on the service of the pipeline. diff --git a/docs/source/configuration/telemetry/overview.mdx b/docs/source/configuration/telemetry/overview.mdx index 61b072be65..821f4e707c 100644 --- a/docs/source/configuration/telemetry/overview.mdx +++ b/docs/source/configuration/telemetry/overview.mdx @@ -141,8 +141,8 @@ Example attributes include: You can use [standard attributes](./instrumentation/standard-attributes) or [selectors](./instrumentation/selectors) as span attributes. - + -[Custom attributes for spans](./instrumentation/spans/#attributes) is an Enterprise Feature that requires a [GraphOS Enterprise plan](/graphos/enterprise/). +[Custom attributes for spans](./instrumentation/spans/#attributes) require a GraphOS [Dedicated or Enterprise plan](https://www.apollographql.com/pricing#observability). - + diff --git a/docs/source/customizations/coprocessor.mdx b/docs/source/customizations/coprocessor.mdx index 12c4c1dd49..056894d763 100644 --- a/docs/source/customizations/coprocessor.mdx +++ b/docs/source/customizations/coprocessor.mdx @@ -5,7 +5,7 @@ description: Customize your router's behavior in any language import CoprocTypicalConfig from '../../shared/coproc-typical-config.mdx'; - + With **external coprocessing**, you can hook into the Apollo Router's request-handling lifecycle by writing standalone code in any language and framework. This code (i.e., your **coprocessor**) can run anywhere on your network that's accessible to the router over HTTP. diff --git a/docs/source/enterprise-features.mdx b/docs/source/enterprise-features.mdx index a29e199b75..797d093822 100644 --- a/docs/source/enterprise-features.mdx +++ b/docs/source/enterprise-features.mdx @@ -3,28 +3,23 @@ title: Enterprise features for the Apollo Router description: Available with GraphOS Enterprise --- -The Apollo Router provides expanded performance, security, and customization features for organizations with a [GraphOS Enterprise plan](https://www.apollographql.com/pricing/). +Since the Apollo Router is [source-available](https://www.apollographql.com/blog/evaluating-apollo-router-understanding-free-and-open-vs-commercial-features), you can use its codebase without connecting it to GraphOS. GraphOS organizations with the Enterprise plan can [connect a self-hosted router to GraphOS](/graphos/quickstart/self-hosted#6-connect-the-router-to-graphos) for an expanded feature set. + +A router connected to GraphOS, whether cloud- or self-hosted, is called a **GraphOS router**. It has access to specific GraphOS features depending on the connected GraphOS organization's plan. Refer to the [pricing page](https://www.apollographql.com/pricing#graphos-router) to compare GraphOS router features across plan types. -Try out these Enterprise features for free with an [Enterprise trial](/graphos/org/plans/#enterprise-trials). +Try out Enterprise GraphOS router features for free with an [Enterprise trial](/graphos/org/plans/#enterprise-trials). ## List of features -- **Real-time updates** via [GraphQL subscriptions](./executing-operations/subscription-support/) -- **Authentication of inbound requests** via [JSON Web Token (JWT)](./configuration/authn-jwt/) -- [**Authorization** of specific fields and types](./configuration/authorization) through the [`@requiresScopes`](./configuration/authorization#requiresscopes), [`@authenticated`](./configuration/authorization#authenticated), and [`@policy`](./configuration/authorization#policy) directives -- Redis-backed [**distributed caching** of query plans and persisted queries](./configuration/distributed-caching/) and [**subgraph entity caching**](./configuration/entity-caching/) -- **Custom request handling** in any language via [external coprocessing](./customizations/coprocessor/) -- **Mitigation of potentially malicious requests** via [operation limits](./configuration/operation-limits) and [safelisting with persisted queries](./configuration/persisted-queries) -- **Custom instrumentation and telemetry**, including [custom attributes for spans](./configuration/telemetry/instrumentation/spans/#attributes). -- An [**offline Enterprise license**](#offline-enterprise-license) enables running the router with Enterprise features when disconnected from the internet. + -Articles specifically about Enterprise features are marked with a **❖** icon in the left navigation. +Articles about Enterprise features are marked with a **❖** icon in the left navigation. diff --git a/docs/source/executing-operations/subscription-support.mdx b/docs/source/executing-operations/subscription-support.mdx index e427768274..8b53a7ebc0 100644 --- a/docs/source/executing-operations/subscription-support.mdx +++ b/docs/source/executing-operations/subscription-support.mdx @@ -3,13 +3,13 @@ title: GraphQL subscriptions with a self-hosted router description: Real-time data with GraphOS Enterprise --- -
+ -⚠️ **For self-hosted routers, subscription support is an [Enterprise feature](../enterprise-features/).** +**For self-hosted routers, subscription support is an [Enterprise feature](../enterprise-features/).** -Subscription support is also available for cloud routers with a GraphOS Serverless plan. [See the docs.](/graphos/operations/subscriptions) +Subscription support is also available for cloud routers with a GraphOS Serverless or Dedicated plan. [See the docs.](/graphos/operations/subscriptions) -
+
With [GraphOS Enterprise](/graphos/enterprise/), self-hosted instances of the Apollo Router provide support for GraphQL subscription operations: