땃쥐네

[토이프로젝트] 게시판 시스템(board-system) 26. 프로젝트 중단(完) 본문

Project

[토이프로젝트] 게시판 시스템(board-system) 26. 프로젝트 중단(完)

ttasjwi 2025. 1. 10. 14:28

 

안녕하세요. 혹시 이 블로그를 보시고 있는 분이 있으실지는 모르겠습니다.

결론부터 말씀드리면 현재 진행 중이였던 게시판 프로젝트는 중단하기로 했습니다.

 

처음 이 프로젝트를 만든 계기는 제가 이곳저곳에서 배운 기술들을

한 프로젝트에 전부 때려박아서 기능 사용 경험을 늘려보자는 취지였습니다.

 

나만의 애플리케이션 아키텍처 설계, 무중단 배포, Spring Security, Jpa, Redis, 코틀린, Spring MVC, 그 외 기타 등등을 전부 한 프로젝트에 떄려박아서, 배웠던 기술들을 죽어있는 이론으로 만들지 말고 실제 사용 경험으로 만들자는 취지였죠.

 

 

하지만 프로젝트를 진행하다보니 초기 단계에 넣었던, 멀티모듈화 및 아키텍처 설계 부분이 프로젝트 진행이 장기화될 수록 저에게 큰 부담이 되었습니다.

 

간단한 API 하나를 구현하기 위해 최소 3개의 모듈에 기능을 작성하고, 테스트를 하기 위해 픽스쳐를 작성하고, ... 하는데 이 작성 자체의 부담이 저에게 크게 다가왔습니다.

 

그냥 단순하게 게시판 개념 하나 만드는 기능인데, 이 기능을 만들기 위해 작성한 코드가 3300줄입니다.

 

도메인 계층 구현 및 픽스쳐 작성 및 테스트

애플리케이션 계층 구현 및 픽스쳐 작성 및 테스트

데이터베이스 접근기술 적용 및 테스트

표현계층 구현 및 픽스쳐 작성 및 테스트

...

 

이런 속도로 기능 하나를 구현하는데에 들어가는 비용이 너무 많아졌습니다.

 

 

처음 시작의 생각은 거창했습니다만... 

초기 시작단계부터 아키텍처를 100층짜리 빌딩 만드는 것을 염두한 설계가 실패 원인이 아니였을까 합니다.

 

당장 사람 몇 명 들어가서 사용할 수 있는 슈퍼마켓을 만들어서, 빠르게 기능 돌아가는 것을 확인하고 점점 성장시켜나가는 것이 좋을텐데

제가 한 방식은 처음부터 백화점 만들기를 시도한게 아니였을까 싶네요.

 

시작부터 백화점을 염두로 한 설계를 하다보니,

백화점을 구성하는 기둥 하나 만드느라 하루 내내 시간을 투자하고 이를 반복하다보니 내가 잘 하고 있는 건지 회의감도 들고 목표가 눈에 잘 보이지도 않고 생산성이 떨어지는 문제가 생기더군요.

 

지금의 방식을 유지하면서 잘 프로젝트를 개발하면 좋겠지만, 시간은 무한하지도 않을 것 같습니다. 인력도 부족하고, 프로젝트 방향성도 당장 확실하지 않습니다.

 

결국 위의 그림처럼, 당초 목표했던 거창한 계획을 진행하다가 프로젝트 방향성이 확실치 않게 되어가고 흐지부지 되어가는게 눈앞에 그려집니다.

 

이것저것 다 하는 것 취지는 좋은데...

 

그리고 개발을 위한 실습 관점에서 놓고보면 이렇게 한 프로젝트에 모든 기술을 적용해서 전부 실습하는 것은, 취지는 좋겠지만 당초 목표로 한 학습 대상이 불분명하고 서로 꼬이고 꼬이게 되어서 본래 목표했던 취지가 불분명해지는 것도 생길 수밖에 없었습니다.

 

당장 쿼리 최적화, JPA 사용 경험, QueryDsl 사용 경험을 늘려보자고 계획했던 프로젝트가 있다고 칩시다.

그런데 이런 목표에 Spring Security 기술 적용, 메시지/국제화 기능 적용 등의 목적을 추가하고 멀티모듈화 등의 목적을 덧붙여나가고, 테스트코드 커버리지를 100%로 유지하자는 취지로 프로젝트를 구현해나가면 어떻게 될까요?

 

당초 처음에 계획했던 JPA 사용 경험과 QueryDsl 사용 경험에 대한 목적은 불분명해지고 다른 것들을 구현하거나 테스트코드 작성하는데 시간을 허비하게 되어 JPA, QueryDSL 사용경험을 늘리는 일에는 시간을 투자하지 못 하게 되는 일도 생깁니다.

 

실제 제 토이 프로젝트는 테스트코드 작성에 대부분의 시간을 허비하는 결과를 낳았고 당초 목표로 했던 여러가지 기술 사용의 기회가 많이 줄어들었습니다.

 

사공이 많으면 배가 산으로 간다. 목적이 너무 많은 학습 프로젝트도 산으로 간다.

 

제가 이번 프로젝트에서 느낀 경험은

학습을 위한 프로젝트에 여러 기술을 다 적용해보자는 취지로 접근하면 목적이 불분명해지는 결과를 낳는다는 점이였습니다.

 

차라리 매우 작은 기간단위로 진행할 소형 프로젝트를 여러개 만들면서 각 프로젝트마다 목적 기술의 범위를 정해두고 그 기술에 집중해서, 최소한의 기능만 구현해보고 기술 사용을 한 번씩 경험해보는 것이 오히려 낫지 않을까 하는 생각이 들었습니다.

 

따라서 이후 진행할 프로젝트들은 목적 범위를 작게 잡고, 딱 그 목적 범위에 한해서만 기능을 구현하는 방식으로 매번 다른 기술 사용을 적용해볼 생각입니다. 지금까지 글을 읽어주셔서 감사합니다.

 

Comments