Nowadays, computing infrastructures are usually deployed in fully controlled environments and managed in a centralized fashion. Leveraging on centralized infrastructures prevent the system to deal with scalability and performance issues, which are inherent to modern large-scale data-intensive applications. On the other hand, we envision fully decentralized computing infrastructures deployed at the edge of the network providing the required support for operating data-intensive systems. However, engineering such systems raises many challenges, as decentralization introduces uncertainty, which in turn may harm the dependability of the system. To this end, self-adaptation is a key approach to manage uncertainties at runtime and satisfy the requirements of decentralized data-intensive systems. This paper shows the research directions and current contributions towards this vision by (i) evaluating the impact of the distribution of computational entities, (ii) engineering decentralized computing through self-adaptation and, (iii) evaluating decentralized and self-adaptive applications.