One of the things I always consider when deploying aarch64 architectures inside a developer ecosystem is about how to deploy applications to the cloud.
We all build on Intel except some teammates that are using M1, M2 processors (ARM). So it creates some friction cause when you have to test developments locally but deploy to AArch64 it means you should have a layer of emulation based on QEMU or similar.
So I wonder how does people handle this. At least from what I can see we need:
- Be able to run x64 workloads in Aarch64 systems. Postgres, mysql, etc.
- So you have dependencies running.
- Have different compilations for different architectures in the pipeline, so we test on intel but we also tests on target. That means that repos must have doubled size artifacts (x84, aarch64)
- Larger pipelines to run test suites in both archs. (I did a patch for thrift that was working nice in intel 32, 64 but not in arm).
- Optimized jvm, if you run java.
- Emulation layer to be able to run the whole ecosystem in local for local dev or testing. QEMU? Or native images in case of performance issues.
So… Having all this in mind. What are best practices?