I am writing a node application which has two major tasks. Lets say task A (which reads from a caching layer and responds to requests) and B (which is the manipulation server responding to requests not being handled by task A). In the future I know that task A would be the more commonly used task while task B would be limited to new requests (almost 10% of the total load).
Given this situation (and also the different nature of task A (network intensive) and B(CPU intensive)), I thought of deploying task A and task B on different set of servers so that the two could be scaled up or down irrespective of the other.
Is this approach correct for the described scenario? If yes, then what are the general practices to communicate between different tiers of task A and B. Assuming that all requests need to be immediately fulfilled (ruling out deferred execution using queues).