Skip to content

Commit

Permalink
release: v0.1.0-alpha.0 (#115)
Browse files Browse the repository at this point in the history
Co-authored-by: Jesse Rosenberger <git@jro.cc>
  • Loading branch information
o0Ignition0o and abernix authored Nov 10, 2021
1 parent d45e422 commit c2e92f1
Show file tree
Hide file tree
Showing 5 changed files with 151 additions and 4 deletions.
96 changes: 96 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,102 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
## 🛠 Maintenance
## 📚 Documentation -->

# [v0.1.0-alpha.0] 2021-11-10

## :rocket::waxing_crescent_moon: Initial public alpha release

> An alpha or beta release is in volatile, active development. The release might not be feature-complete, and breaking API changes are possible between individual versions.
See our [release stages] for more information.

[release stages]: https://www.apollographql.com/docs/resources/release-stages/

## :sparkles: Features

- **Federation 2 alpha**

The Apollo Router supports the new alpha features of [Apollo Federation 2], including its improved shared ownership model and enhanced type merging. As new Federation 2 features are released, we will update the Router to bring in that new functionality.

[Apollo Federation 2]: https://www.apollographql.com/blog/announcement/backend/announcing-federation-2/

- **Supergraph support**

The Apollo Router supports supergraphs that are published to the Apollo Registry, or those that are composed locally. Both options are enabled by using [Rover] to produce (`rover supergraph compose`) or fetch (`rover supergraph fetch`) the supergraph to a file. This file is passed to the Apollo Router using the `--supergraph` flag.

See the Rover documentation on [supergraphs] for more information!

[Rover]: https://www.apollographql.com/rover/
[supergraphs]: https://www.apollographql.com/docs/rover/supergraphs/

- **Query planning and execution**

The Apollo Router supports Federation 2 query planning using the same implementation we use in Apollo Gateway for maximum compatibility. In the future, we would like to migrate the query planner to Rust. Query plans are cached in the Apollo Router for improved performance.

- **Performance**

We've created benchmarks demonstrating the performance advantages of a Rust-based Apollo Router. Early results show a substantial performance improvement over our Node.js based Apollo Gateway, with the possibility of improving performance further for future releases.

Additionally, we are making benchmarking an integrated part of our CI/CD pipeline to allow us to monitor the changes over time. We hope to bring awareness of this into the public purview as we have new learnings.

See our [blog post] for more.

<!-- TODO -->
[blog post]: https://www.apollographql.com/blog/

- **Apollo Sandbox Explorer**

[Apollo Sandbox Explorer] is a powerful web-based IDE for creating, running, and managing GraphQL operations. Visiting your Apollo Router endpoint will take you into the Apollo Sandbox Explorer, preconfigured to operate against your graph.

[Apollo Sandbox Explorer]: https://www.apollographql.com/docs/studio/explorer/

- **Introspection support**

Introspection support makes it possible to immediately explore the graph that's running on your Apollo Router using the Apollo Sandbox Explorer. Introspection is currently enabled by default on the Apollo Router. In the future, we'll support toggling this behavior.

- **OpenTelemetry tracing**

For enabling observability with existing infrastructure and monitoring performance, we've added support using [OpenTelemetry] tracing. A number of configuration options can be seen in the [configuration][configuration 1] documentation under the `opentelemetry` property which allows enabling Jaeger or [OTLP].

In the event that you'd like to send data to other tracing platforms, the [OpenTelemetry Collector] can be run an agent and can funnel tracing (and eventually, metrics) to a number of destinations which are implemented as [exporters].

[configuration 1]: https://www.apollographql.com/docs/router/configuration/#configuration-file
[OpenTelemetry]: https://opentelemetry.io/
[OTLP]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md
[OpenTelemetry Collector]: https://github.com/open-telemetry/opentelemetry-collector
[exporters]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter

- **CORS customizations**

For a seamless getting started story, the Apollo Router has CORS support enabled by default with `Access-Control-Allow-Origin` set to `*`, allowing access to it from any browser environment.

This configuration can be adjusted using the [CORS configuration] in the documentation.

[CORS configuration]: https://www.apollographql.com/docs/router/configuration/#handling-cors

- **Subgraph routing URL overrides**

Routing URLs are encoded in the supergraph, so specifying them explicitly isn't always necessary.

In the event that you have dynamic subgraph URLs, or just want to quickly test something out locally, you can override subgraph URLs in the configuration.

Changes to the configuration will be hot-reloaded by the running Apollo Router.

## 📚 Documentation

The beginnings of the [Apollo Router's documentation] is now available in the Apollo documentation. We look forward to continually improving it!

- **Quickstart tutorial**

The [quickstart tutorial] offers a quick way to try out the Apollo Router using a pre-deployed set of subgraphs we have running in the cloud. No need to spin up local subgraphs! You can of course run the Apollo Router with your own subgraphs too by providing a supergraph.

- **Configuration options**

On our [configuration][configuration 2] page we have a set of descriptions for some common configuration options (e.g., supergraph and CORS) as well as a [full configuration] file example of the currently supported options.

[quickstart tutorial]: https://www.apollographql.com/docs/router/quickstart/
[configuration 2]: https://www.apollographql.com/docs/router/configuration/
[full configuration]: https://www.apollographql.com/docs/router/configuration/#configuration-file

# [v0.1.0-prealpha.5] 2021-11-09

## :rocket: Features
Expand Down
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

51 changes: 51 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
## 🗺️🔭 Roadmap

We'll be working to open issues and surface designs about these things and more, as the planning progresses. Follow this file for more details as they become available and we'll link the items below to issues as we create them. We look forward to your participation in those discsussions!

- **Apollo Studio integrations**

We'll be building out stories for Apollo Studio, including:

- Tracing
- Metrics reporting
- Schema reporting

We'd like to make the Apollo Router as much as part of the Studio story as Apollo Gateway is today.

- **Newer Federation 2 features**

As new Apollo Federation 2 features are released, we'll integrate those updates into the Router. In most cases, this will be just as simple as updating the Apollo Router's dependencies.

- **More customizations**

We're excited about a number of opportunities for customizing behavior, including exploring options for:

- Header manipulation
- Request context propagation
- Dynamic routing
- Authorization
- Auditing

We hope to provide first-class experiences for many of the things which required a more-than-ideal amount of configuration.

- **Specification compliance**

We're still working on making the Apollo Router fully GraphQL specification compliant. This will be a continued effort and is also embodied in the Apollo Router's design principles.

Until we finish this work, there may be responses returned to the clients which are not fully specification compliant, including artifacts of Federation query plan execution. (e.g., the inclusion of additional metadata).

- **OpenTelemetry/Prometheus metrics**

These will compliment the existing OpenTelemetry traces which we already support. It will help to paint a clearer picture of how the Apollo Router is performing and allow you to set alerts in your favorite alerting software.

- **Structured logging**

The logs that are produced from the Apollo Router should integrate well with existing log facilities. We'll be adding configuration to enable this (e.g., JSON-formatted logging).

- **Continued performance tuning**

The Apollo Router is already fast, but we'll be looking for more ways to make it faster. We'll be setting up CI/CD performance measurements to track regressions before they end up in user's deployments and to understand the cost of new features we introduce.

- **Hardening**

The Router will need new functionality to remain performant. This will include exploring options for rate-limiting, payload size checking, reacting to back-pressure, etc.
2 changes: 1 addition & 1 deletion crates/apollo-router-core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "apollo-router-core"
version = "0.1.0-prealpha.5"
version = "0.1.0-alpha.0"
authors = ["Apollo Graph, Inc. <packages@apollographql.com>"]
edition = "2018"
license-file = "./LICENSE"
Expand Down
2 changes: 1 addition & 1 deletion crates/apollo-router/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "apollo-router"
version = "0.1.0-prealpha.5"
version = "0.1.0-alpha.0"
authors = ["Apollo Graph, Inc. <packages@apollographql.com>"]
edition = "2018"
license-file = "./LICENSE"
Expand Down

0 comments on commit c2e92f1

Please sign in to comment.