The difference between a centralized and a decentralized app is that a decentralized app, once deployed, cannot be shut down by anyone. If we use this definition, there is not a single application out there today that can considered to be truly decentralized. Ethereum claims to be a dApp(Decentralized App) platform but if we apply the earlier definition to any of the Ethereum apps, they cannot be considered fully decentrlized because of the mere fact that the backend logic and the actual server running these apps(that run on mobile devices or web browser) are controlled by a third party. So, if that said third party were to ever go out of business, even if the corresponding smart contract exists on the ethereum blockchain(which cannot be tampered with), the app on the mobile device, or the browser would not work anymore. So, if that’s the case, can there truly be 100% decentralized applications?
An example of a centralized app is Facebook app while an example of a partially decentralized, partially centralized app is Cryptokitties where the logic of the app is coded in the form of smart contracts in the Ethereum blockchain while the running of the apps is being done in a centralized server that is owned by the Cryptokitties authors/developers. An example of a decentralized app is an app that is built for elastOS Browser(Trinity). Such an app has the following features:
Short answer: Only if it makes sense for you and your users of the app you’re building and if you’re willing to sacrifice some speed in favor of more decentralization
Long answer: Centralized apps will always be superior to decentralized apps when it comes to speed. That is something you need to accept when trying to build a decentralized application. Maybe a compromise is to build a partially centralized, partially decentralized application so the user experience is not sacrificed as that is the most important part of any application.
No you should not do everything on the blockchain because blockchain is not designed to solve every problem. In fact, it’s not feasible to store large amounts of data as it’s very slow to store something like movies and music on the blockchain. Blockchain is really just a way to preserve data that can not be tampered with and to facilitate peer to peer payments and to build various applications using smart contracts. For everything else like storing large amounts of data, use Hive. For secure communication between users, use Carrier instead of the traditional internet protocols.