NAND flash memory-based solid-state drives (SSDs) are widely adopted as the modern storage media owing to their improved performance compared with conventional hard disk drives (HDDs). However, the one shortcoming of the SSD is the expansive price per capacity, and it is the main obstacle to the transition to SSD-based storage systems from HDD-based ones. In the dissertation, therefore, we suggest two directions to achieve a cost-effective SSD. First, NAND flash-based SSDs have a limited lifetime mainly based on their written data pattern. Therefore, we propose an encoding technique to optimize the data pattern in terms of lifetime maximization. Second, in cloud storage environments, it is more cost-beneficial to share an SSD with more virtual machines (VMs). Therefore, we minimize the performance degradation of VMs to accommodate the maximum number of VMs can be placed in an SSD.