Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decide Runtime Targets #65

Closed
abernix opened this issue Aug 2, 2021 · 5 comments
Closed

Decide Runtime Targets #65

abernix opened this issue Aug 2, 2021 · 5 comments

Comments

@abernix
Copy link
Member

abernix commented Aug 2, 2021

We want the Router to be able to run "Anywhere" but we need to start with a practical list of targets that we can ship and be cognizant of the constraints that some "nice to haves" would put on us.

Candidates

As a conversation starter, I suggest we have only Tier 1 target architectures as candidates. Lifting that list from the linked page, it's:

target notes
aarch64-unknown-linux-gnu ARM64 Linux (kernel 4.2, glibc 2.17+) [^missing-stack-probes]
i686-pc-windows-gnu 32-bit MinGW (Windows 7+)
i686-pc-windows-msvc 32-bit MSVC (Windows 7+)
i686-unknown-linux-gnu 32-bit Linux (kernel 2.6.32+, glibc 2.11+)
x86_64-apple-darwin 64-bit macOS (10.7+, Lion+)
x86_64-pc-windows-gnu 64-bit MinGW (Windows 7+)
x86_64-pc-windows-msvc 64-bit MSVC (Windows 7+)
x86_64-unknown-linux-gnu 64-bit Linux (kernel 2.6.32+, glibc 2.11+)

Note that this list does not include aarch64-unknown-linux-musl. That omission doesn't by itself preclude us from running on Alpine, though we are further constrained in this regard by our dependence on V8 for the query planner. This is only intended to be a constraint until the point that we can re-write the query planner in Rust natively, or until the rusty-v8 project can run more easily on MUSL. See this issue. It's surmountable, but it's probably more work than it's worth for experimental phases.

In Scope

TBD

Out of Scope

TBD

@abernix
Copy link
Member Author

abernix commented Aug 2, 2021

strawdog: let's not bother trying to support 32-bit.

other strawdogs?

@abernix
Copy link
Member Author

abernix commented Aug 2, 2021

The very general desire is that we be able to run on Kubernetes and AWS-Lambda-like environments, but that's of course caught up in the implementation details of the Docker images that are running within it and the binary that we're trying to run on it!

Kubernetes seems pretty well understood, but we should try to identify the technical requirements of running on AWS Lambda!

@o0Ignition0o o0Ignition0o transferred this issue from another repository Nov 4, 2021
@abernix abernix added 2021-12 and removed 2021-11 labels Dec 3, 2021
@abernix abernix removed the 2021-12 label Jan 6, 2022
@savnik
Copy link

savnik commented Jan 28, 2022

Kubernetes seems pretty well understood, but we should try to identify the technical requirements of running on AWS Lambda!

I think supporting the "cheaper" lambda architecture for ARM is preferred as the router will spend most of it's time waiting for other services to respond rather than doing anything computational heavy.

@hobbsh
Copy link
Contributor

hobbsh commented Jul 8, 2022

Any idea what the roadmap looks like for this? It's a huge blocker for us and I'm sure a lot of others for running the router locally (natively) on M1 Mac.

@abernix
Copy link
Member Author

abernix commented Jul 26, 2022

I'm going to close this issue, which was originally meant to track which architectures we wanted to support. If you're looking to track the ARM support stuff, then I'd recommend following #1192.

@abernix abernix closed this as completed Jul 26, 2022
tinnou pushed a commit to Netflix-Skunkworks/router that referenced this issue Oct 16, 2023
In apollographql#58 I added a snapshots generation phase to our harmonizer packages.

However I created a bug because the snapshot generation phase would happen when the harmonizer-0 and harmonizer-2 packages are generated.

This means downstream users who would rely on published harmonizer crates would get snapshots generated by an other computer / architecture.

This triggered a bug that would fail any harmonizer call when relying on the published crate.

This commit adds a build.rs script to the published crates, so that snapshots are created when downstream binaries are built.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants