The possibility to have multiple executors that can communicate with eachother

I would like to ask if there is a possibility to have a workflow that has 2 jobs with different executor types, so that they communicate with each other like in a network.

Currently I have a workflow to execute some instrumentation tests for an android app. The tests themselves on an Linux xlarge VM take about 22 minutes. Those same tests take about 60 minutes on a large Linux VM.(25 minutes if I run in parallel = 10) To run those tests I need to have an emulator present during the time that the tests are executed.

An xlarge Linux VM is 100 credits per minute and a large is 20 credits per minute. (CircleCI Resource Classes - CircleCI)
So currently I can pay ~ 2200 c per run on an xlarge machine or 1200 c per run on a large while being 3 times slower. (5000c if I split it to 10 workers to have the same time as xlarge)

So in order to save some money since this is a repo that is frequently updated I wanted to have an emulator present in a large. or medium linux VM and then connect to it from a xlarge docker executor (40 credits per minute) to run the tests themselves.
The emulator cannot be run on a docker since the machine under it does not support kvm.

Is this possible?

Within a config,yml file you can define a number of executors and each job you define can be written to use any of the defined executors. So you can have a config where the workflow runs 2 jobs in parallel, each of which will run on its own defined executor.

The step of the 2 instances finding each other to communicate may be a little more complicated. CircleCI has pre-built tools for persisting data and caching data set, but I’ve not come across any tools for inter-job(VM) discovery and/or communications. I guess the starting point would be to script the VMs to register with a dynamic DNS service so that you have well-defined names that can be discovered once the VMs have started up.

Also if you are running this type of workload often it may be worth looking into self-hosted runners. As long as you have a good internet link you could throw a very good desktop at the problem.