회고

클론 코딩 중간 회고

Tommy__Kim 2023. 9. 18. 01:04

선정 도메인 

Kream  도메인을 선정. 

 

처음에 팀원들과 고려한 도메인은 쿠팡이다. 

 

하지만 쿠팡의 경우 너무 많은 기능이 포함되어 있는 반면 (로켓 배송, 로켓 프레시...) 

 

각각 주문에 대해서는 상대적으로 비슷한 기능들이 들어가는 것 같아 보였다. 

 

팀원들과 협의 끝에 조금 어렵더라도 복잡한 로직을 가진 도메인인 크림을 클론 코딩하기로 결정. 

 

잘한 점 

[Git-flow 제정 및 branch rule 제정] 

 

팀원들과 협업을 하기 때문에 보다 충돌이 덜 날 수있게끔, 그리고 해당 프로젝트의 경우 EC2에 배포를 하기로 결정. 

 

이를 충족 시키기 위해 Git-flow 방식을 채택.

 

팀원들이 Git-flow에 대한 지식이 별로 없는 상태였고, 필자도 약하게 알고 있는 상태였기에 직접 임시 repo에서 연습 후 적용.

 

branch마다 rule을 제정했다. 

  • main, dev
    • 모두 삭제 불가, 로컬에서 push 불가, 코드리뷰 approve 회원 수 2( 팀원 3명)
  • feature/*
    • 코드리뷰 approve 회원 수 2( 팀원 3명)

branch 마다 rule을 제정함으로써 코드리뷰를 거치지 않고 개발을 할 수 없도록 제재를 했다. 

 

[충분한 코드 리뷰]

 

branch rule을 제정해 놓은 덕에 코드 리뷰가 강제되도록 해 놓았다. 

 

각자 짠 코드에 대해서 자기의 생각 혹은 잘못된 코드에 대해서 조언을 자유롭게 할 수 있는 분위기를 조성했다. 

 

그 결과 각자 코드를 어떻게 짜는 지 알 수 있었고, 다르게 코드를 짜는 스타일에 대해서는 서로 합의점을 도출 해 비슷한 형태로 코드를 짤 수 있었다. 

 

[도메인 분석]

 

해당 프로젝트의 경우 도메인이 어려웠기에 한달 프로젝트임에도 불구하고 도메인 분석에만  4일이라는 시간을 사용했다. 

 

각자 해당 앱을 써보고, 크림의 서비스 로직에 대해 충분한 이해를 갖추고 개발을 시작해 보다 명확하게 개발을 시작할 수 있었다. 

못한 점 

[도메인의 주 기능 분할]

 

팀원들 모두 크림에서 주되게 배워갈 수 있는 로직은 입찰 로직이라 생각했다.

 

그렇기에 입찰 로직에 대해 최대한 많은 사람이 배워 갈 수 있음 하는 바람에 잘못된 도메인 분할을 했다. 

 

처음에 어떤 도메인을 맡을 지 분할 할 때 판매자, 구매자, 관리자 로 구분을 했다. 

 

개발을 하는데 판매자, 관리자는 서로 겹치는 일들이 많아 한명이 개발이 끝날 때 까지 기다려야 하는 문제가 발생했다. 

 

또한 역할을 판매자, 구매자로 분리하는 바람에 하나의 테이블을 사용할 수 있음에도 테이블을 분리했다.

 

<< 멘토님의 첨언이 아직도 뇌리에 깊게 박혀있다. >>

 

개발이 편하자고, 협업이 편하자고 기본을 무시하는 것은 잘못된 방향이라고 생각합니다.

 

해당 첨언을 듣고 난 후 팀원들과 4시간의 회의 끝에 이때까지 해왔던 프로젝트를 뒤집어 엎기로 결정했다. 

 

[ 과도한 branch rule 제정 ] 

 

처음에는 feature branch 관련해서도 모든 코드리뷰를 받도록, 로컬에서 push를 할 수 없도록 제재 해 두었다. 

 

각자의 개인 개발 branch인 feature branch에 코드리뷰를 받도록 해두어 개발의 속도가 더뎌지는 부분도 있었다. 

 

해당 부분은 팀원들과 얘기를 하며 각자의 feature 기능에 대해 4개가 개발이 된다면 pul request를 올려 코드리뷰를 받도록 변경했다. 

 

[ 각자 개발에 앞서 공통 기능 미구현]

모든 팀원들이 user 객체는 공통으로 사용을 했고, 로그 설정, 테스트 설정의 경우에도 공통화가 되어야 하는 부분이다. 

 

공통적으로 개발이 되어야 하는 부분들을 각자 사용을 하다보니 충돌이 많기도 했고, 공통 기능에 대해 각자 생각한 부분이 달라 기능이

 

다르게 구현되어 각자의 개발 사항들을 한군데 합쳤을 때 간혹 몇몇 기능들이 제대로 수행되지 않는 문제들이 발생했었다. 

 

앞으로는 공통 사항에 대해 먼저 구현을 한 후에, 각자 기능 개발을 할 수 있도록 합의를 했다.

 

앞으로?

현재 프로젝트를 갈아 엎은 입장으로써, 서로의 도메인이 간섭당하지 않도록 역할을 분배 했다.

 

갈아 엎은 부분에 대해서는 아쉽긴 하지만, 그로 인해서 많이 깨달았고 앞으로는 역할을 어떻게 분배해야 하는지 배울 수 있던 시간이었다.

 

2주라는 시간을 없앤 만큼 빠르게 달려나가야겠다.