목록으로

Programming Notes

새로운 시작, pop-cloud 프로젝트의 첫걸음

안녕하세요! 상반기에 진행했던 졸업 작품 프로젝트, mju-market을 통해 정말 많은 경험을 쌓았지만, 한편으로는 아쉬움도 남았습니다. 학교 관련 주제였기에, 개인적으로 더 애정을 쏟고 싶은 분야는 아니었거든요. 그래서 이번에는 정말 제가 하고 싶고, 꾸준히 유지보수할 수...

안녕하세요! 상반기에 진행했던 졸업 작품 프로젝트, mju-market을 통해 정말 많은 경험을 쌓았지만, 한편으로는 아쉬움도 남았습니다. 학교 관련 주제였기에, 개인적으로 더 애정을 쏟고 싶은 분야는 아니었거든요. 그래서 이번에는 정말 제가 하고 싶고, 꾸준히 유지보수할 수 있는 프로젝트를 만들어보고 싶다는 열망이 컸습니다. 오랜 고민 끝에, 친구와 함께 팝업스토어 및 개인 전시회를 다루는 서비스, "pop-cloud"를 시작하게 되었습니다. 이미 팝업스토어 관련 서비스들이 존재하지만, 저희는 기존 서비스의 부족한 점을 개선하고 차별화된 가치를 제공하는 것을 목표로 삼았습니다. 특히 사용자들이 SNS를 통해 흩어진 정보를 일일이 찾아야 하는 불편함을 해소하고, 개인 전시회 정보까지 아우르는 플랫폼을 구축하고자 합니다.

멀티 모듈 구조, 견고한 토대를 쌓다

프로젝트 초기 단계에서 가장 중요하게 생각한 것은 바로 "견고한 토대"를 만드는 것이었습니다. 앞으로 기능이 확장될 것을 고려하여 멀티 모듈 구조를 선택했고, 각 모듈 간의 의존성을 낮춰 유지보수성을 높이는 데 집중했습니다.

  • 모듈 구조 설계: 핵심 로직을 담는 core 모듈, API 서버 역할을 하는 api 모듈, 데이터베이스와 연동되는 data 모듈 등으로 분리했습니다. 이렇게 모듈을 분리함으로써 각 모듈의 책임과 역할을 명확하게 구분하고, 특정 기능의 변경이 다른 모듈에 미치는 영향을 최소화할 수 있습니다.
  • 공통 설정 관리: 각 모듈에서 공통적으로 사용되는 설정 (예: 데이터베이스 연결 정보, API 키 등)은 별도의 설정 파일 또는 환경 변수를 통해 관리하도록 구성했습니다. 이를 통해 설정 변경 시 모든 모듈을 수정할 필요 없이, 설정 파일만 수정하면 되므로 유지보수성이 크게 향상됩니다.
  • 빌드 및 배포 자동화: Gradle을 이용하여 빌드 과정을 자동화하고, Docker를 통해 컨테이너 환경을 구축하여 배포 과정을 간소화했습니다. 자동화된 빌드 및 배포 과정을 통해 개발 생산성을 높이고, 휴먼 에러 발생 가능성을 줄일 수 있습니다.
  • 테스트 환경 구축: 각 모듈별로 단위 테스트 및 통합 테스트를 작성하여 코드의 안정성을 확보했습니다. 테스트 코드를 통해 예상치 못한 버그를 사전에 발견하고, 코드 변경 시에도 기존 기능이 정상적으로 작동하는지 확인할 수 있습니다.

예를 들어, api 모듈에서는 다음과 같은 코드를 통해 core 모듈의 기능을 사용할 수 있습니다.

// ApiModule.java
import com.popcloud.core.service.ExhibitionService;

@RestController
public class ApiModule {

    @Autowired
    private ExhibitionService exhibitionService;

    @GetMapping("/exhibitions")
    public List<Exhibition> getExhibitions() {
        return exhibitionService.getAllExhibitions();
    }
}

위 코드에서 api 모듈은 core 모듈의 ExhibitionService를 주입받아 사용합니다. 만약 ExhibitionService의 구현체가 변경되더라도, api 모듈은 인터페이스를 통해 접근하므로 코드 변경 없이 그대로 사용할 수 있습니다.

팝업스토어 정보, 새로운 연결을 꿈꾸며

멀티 모듈 구조를 통해 프로젝트의 기반을 다진 만큼, 앞으로는 팝업스토어와 개인 전시회 정보를 효과적으로 제공하고 사용자 간의 연결을 강화하는 데 집중할 계획입니다. 사용자 경험을 최우선으로 고려하여, 쉽고 직관적인 인터페이스를 제공하고, 팝업스토어 운영자와 사용자 모두에게 유용한 기능을 개발하는 데 힘쓸 것입니다. 꾸준한 유지보수를 통해 사용자들의 피드백을 반영하고, 더 나은 서비스를 제공할 수 있도록 노력하겠습니다. 앞으로 pop-cloud 프로젝트의 성장 과정을 블로그를 통해 꾸준히 공유하며, 여러분의 많은 관심과 응원 부탁드립니다!