1. A computer program product comprising one or more computer-readable hardware storage devices having thereon computer-executable instructions that are structured such that, when executed by one or more processors of a computing system, cause the computing system to perform a method for first portion of an application to communicate with a second portion of the application, the method comprising: splitting an application into a first portion and a second portion; assigning the first portion of the application to a first hardware entity and assigning the second portion of the application to a second hardware entity, wherein the first hardware entity accesses the first portion of the application without accessing the second portion of the application and wherein the second hardware entity accesses the second portion of the application without accessing the first portion of the application; an act of monitoring data flow between the first portion of the application and a second portion of the application, the first portion of the application interfacing with the first hardware entity without interfacing with the second hardware entity, and the second portion of the application interfacing with a second hardware entity without interfacing with the first hardware entity; and an act of recording data flow from the first portion of the application to the second portion of the application in a manner that the second portion of the application can replay the recorded data flow.