A distributed application is software that does not reside on a single computer, centralized server, decentralized server, or set of clustered servers. The application is distributed among nodes on the network. Each instance of the application on each node executes the same code and gets the same results based on the current state of the data and the input data sent to it. In other words, the distributed application's nodes are deterministic in nature.