Over the past few decades, coding has been a viable solution to maintain a desired level of system's reliability by controlling errors or erasures in communication and storage channels. In this thesis, we explore the role of coding that enhances the key performance metrics enabling distributed systems. In the first part, we suggest a design of low-density parity-check (LDPC) codes for distributed storage applications exploiting trade-offs between reliability, repair bandwidth and storage overhead. We establish that the regular LDPC code yields a minimum repair bandwidth for a given code rate. It is further shown that LDPC codes can be designed such that a small loss of repair-bandwidth optimality may be traded for a large improvement in erasure-correction capability and thus the mean-time-to-data-loss (MTTDL). In the second part, we propose a framework wherein the NAND flash memory system is regarded as distributed storage. In this context, NAND elements such as pages and blocks are viewed as distributed nodes. We study potential enhancement of the read access speed in solid-state drives (SSDs) by coding. Our analysis provides a clear picture on the coding-overhead and read-access-time trade-offs given read failures and node failures. Node failures reflect various limitations on the memory element level such as page or block failures. Lastly, we propose a modeling of the clustered structure for distributed computing consisting of intra- and cross-cluster coding, reflecting the practical constraints of the imbalance in speed throughout the computing system. A strong motivation for this model is the need for reducing the high decoding burden of large-scale coded computation. It is seen that resorting to cross-cluster coding to a certain point---related to the overall code rate and the ratio between the speed of intra- and extra-cluster work---greatly enhances latency. Incorporating the decoding burden into the latency analysis, the proposed clustered structure is seen to have further latency advantage over the existing non-clustered coded computing.
부호는 통신이나 스토리지 채널에서 발생하는 데이터 오류 또는 소실을 제어하여 시스템 신뢰성을 높이기 위한 목적으로 쓰여 왔다. 본 학위논문에서는 분산 시스템으로 해석할 수 있는 세 가지 실용적인 환경에서 부호의 도입을 통해 분산 시스템의 성능을 좌우하는 중요한 지표들을 향상할 수 있음을 보였다. 먼저 분산 스토리지 시스템에 저밀도 패리티 체크 부호를 사용하여 데이터 신뢰성, 복구 대역폭과 저장 공간 사이의 균형을 취할 수 있는 설계를 제안하였다. 두 번째로, 낸드 플래시 메모리 시스템의 여러 데이터 심볼을 묶은 페이지 및 블록 등을 분산 스토리지 노드로 간주하고, 이 노드 단위로 최대 거리 분리 부호를 적용하여 플래시 셀의 읽기 접근 속도를 높일 수 있음을 제시하였다. 끝으로 부호화 클러스터 컴퓨팅 구조를 제안하고, 클러스터 내부 워커 단위 및 클러스터 단위의 최대 거리 분리 부호를 배치하였을 때 클러스터 파라미터 설계에 따라 전체 연산 시간을 줄일 수 있음을 증명하였다.