Submarine server is supposed to manage the job's lifecycle. Submarine client can submit a job to submarine server by using grpc, which is suitable for bi-direction communications.
A new configuration, named submarine.server.remote.execution.enabled, is added. If it is true,
submarine client will submit a job to submarine server instead of running a job by itself.