Most of the Internet applications we use every day are centralized, they are owned by a particular company or person that provision and maintain the source code to execute on a computer, server or maybe even a cluster.
Centralized applications are the majority of applications that engineers are used to building and users are used to using.
Data resides on a centrally owned database controlled by a company. You ultimately have to trust that this company is doing things correctly and in your interest.
Distributed means computation is spread across multiple nodes instead of just one. Decentralized means no node is instructing any other node as to what to do.
The code runs on a peer-to-peer network of nodes and no single node has control over the dApp. Depending on the functionality of the dApp, different data structures can be used to store the application data. Bitcoin uses a blockchain decentralized ledger of transactions.
Applications in which computation is distributed across components, communicate and coordinate their actions by passing messages. The components interact with each other in order to achieve a common goal.
Some distributed applications examples are:
- Cloud Instances
- Google, Facebook, Netflix, etc