Abstract : In this thesis, we consider the use of codes in both distributed dissemination systems and self-healing distributed storage systems. Codes have been widely used to build reliable systems out of unreliable and randomly behaving components. Consequently, codes are very useful in distributed systems and outperform non code-based approaches. Yet, in practice, codes are often left aside for various reasons, including because of increased side costs such as the decoding complexity in dissemination systems, and the repair cost in self-healing distributed storage. Overall, we consider the reduction of side costs as a way to make codes more appealing. We propose to adapt a push-based epidemic dissemination protocol to best leverage low complexity fountain codes. Second, we build new low complexity network codes by extending low complexity fountain codes. Finally, we consider the use of network codes as a way to achieve optimal tradeoffs between storage and repair costs.