새롭게 팀을 짜고 프로젝트를 진행한지 어느덧 4~5주가 지났다.
나름 기획 부분이 어느정도 확정된 선에서 개발팀을 꾸렸다고 생각했었는데, 개발을 진행하면서 계속해서 기획의 부족함을 느꼈다.
그래서 새롭게 디자이너분도 모시고, 나도 계속해서 기획에 시간을 투자하고 있는거같다. 스타일키 서비스의 시그니처는 바로 "패션 성향 테스트"이다. 간단한 테스트를 통해 나의 패션 성향을 파악하고, 그 결과를 통해 나의 대표 스타일포인트를 알게 된다.
Mbti 테스트랑 비슷하다. 패션 유형을 8가지로 나눴고, 질문을 통해 사용자의 성향을 파악하여 이 8가지의 종류 중에 나와 가장 비슷한 유형을 배정해주면 된다.
그런데 중요한 것은 이 서비스의 주 사용층 중에 바로 패션에 관심이 어느정도 있고, 자신에게 어울리는 스타일이 뭔지 잘 알고 있는 사람들도 포함된다. 즉, 테스트 자체의 질이 낮거나 본인이 납득되지 않는 결과가 나오면 서비스 자체에 대한 신뢰도는 보장받지 못할것이다.
이처럼 테스트 자체에 대해 흥미와 신뢰도 모두 잡기 위해 구성을 굉장히 오래 고민중이다. 더불어 어떤 기준으로 결과를 선정해야되는지 많은 고민이 있었다.
이 서비스는 관리자페이지와 서비스페이지 두 가지 모두 개발을 계획했다. 관리자페이지는 지속적으로 코디룩과 아이템을 시즌별로 업로드 하고, 회원을 관리하기 위한 용도로 제작을 결심했다.
먼저 관리자페이지는 패션 콘텐츠인 코디룩, 아이템, 브랜드 목록을 관리하는 기능이 필요했다. 코디룩과 아이템은 강한 연관관계를 가지고 있다. 코디룩 안에 아이템이 포함되고, 아이템은 브랜드와 카테고리와 연관관계를 가지고 있다. 이처럼 코디룩을 생성할 때 연관된 모든 데이터를 한꺼번에 등록할 수 있도록 간단한 CRUD 기능에서 더 많은 부분까지 신경 쓰며 구현했다. 이 부분은 프론트 작업이 아직 완성되지 않아 나 혼자 postman으로 api 요청을 보내고 응답을 확인하며 테스트 해봤다. 일단 이전에 1차적으로 기능 구현 위주로 개발을 끝냈고, 이번에 다시 전체적으로 리팩토링 작업을 진행했다.
시간이 지나고 나서 보는 내 코드는 정말로.. 쓰레기 같았다. 그때는 보지 못했던 부분까지 보이니 얼마나 내가 낮은 수준이었는지 확인할 수 있었다. 다른 의미로 그만큼 개발 실력과 여러 부분까지 볼 수 있는 안목이 길러졌다고 생각하고, 다시 리팩토링을 했다.
리팩토링 과정에서 가장 크게 수정된 부분은 다음과 같다.
1. Optional을 활용하여 null 객체 처리 및 코드 안정성을 강화
2. Swagger를 적용하여 API를 문서화 작업 진행
3. Request, Response DTO 형식 통일
4. 코디룩과 아이템을 함께 생성할 수 있도록 수정
5. 스타일포인트 아이디 별 코디룩 목록 조회 추가, 코디룩 별 아이템 목록 조회 추가
이와 관련된 PR들
Feature: 브랜드, 스타일포인트, 카테고리 관련 기능 추가
Feature: 관리자페이지 패션 콘텐츠 관리 기능 추가
Feature: 스타일포인트 서비스페이지 조회 API 기능 추가
ResponseEntity<Map<String, Object>>
이러식으로 값을 하나씩 넣어줬었다. 이는 귀찮고 변경에 취약한 단점을 가지므로 보통 잘 사용하지 않는 방식이었다. 나는 몰랐다... 암튼 이러한 피드백과 깨달음을 얻고 모든 API에 Request, Response dto 각각 추가해서 구조를 리팩토링했다.내가 맡은 패션 콘텐츠 부분 개발은 이정도이다. 나머지 회원 부분 (소셜 로그인), 테스트 부분도 절반 넘게 진행 중이다.
먼저 이제까지 개발한 코드를 모두 단위 테스트 할 것이다. 항상 TDD를 목표했었는데, 비록 이상적인 TDD를 만족하긴 힘들어도 중간 중간 기능을 테스트하며 다음 개발을 이어나갈 것이다. 이를 위해 테스트 코드를 자체에 대한 학습이 필요할 것 같다. 항상 그냥 chat gpt를 사용해서 대충 테스트 코드를 작성했었는데, 이번에는 제대로 Junit 프레임워크를 공부해보며 독립적으로 테스트를 진행하는 방법을 알아봐야겠다.
최근 본 아이템, 코디룩과 아이템 즐겨찾기 기능 등을 개발할 계획이다. 테스트 쪽은 먼저 질문이 완성되면 담당하시는 팀원분이 개발해주실거고, 소셜로그인 쪽도 앞으로 프론트와 연동만 하면 마무리 될 것 같다. 그리고 코디룩과 아이템의 페이징 처리도 필요할 것 같다.
배포를 위해 AWS ec2 서버 환경 설정과, ci/cd를 위해 github actions 부분을 공부해야한다.
코디룩 제작을 위해 필요한 데이터를 찾고, 디자인에 필요한 이미지를 제작해야 한다.
프로젝트 완성을 위해 팀을 이끌어가는 입장으로서, 책임감을 가지고 더욱 더 신경 써서 임하고자 한다!! 무엇보다 기능을 개발할 때 가장 즐겁지만, 기획을 하는 과정에서도 너무나도 즐겁다. 이번 회의에서는 나중에 사용자들이 어느정도 모이면 커뮤니티 기능을 추가해서 서비스를 확장해보자고 내 본심(?)을 말했다.😁 다행이 긍정적인 반응이었다.. 빨리 기능을 완성하고 서비스화 하고 싶다.
내 옆에 든든한 팀원들이 있으니 의지도 되고,, 많은 도움을 받는거같다. 😊
꼭 모두가 만족하는 결과물이 나왔으면 좋겠다!! 🙏