본문 바로가기
WIL(Weakly I Learned)

[WIL]20230724~20230730 - 인스타 그램 클론 코딩 회고

by tjsdn9803 2023. 7. 31.

지난 주는 인스타그램 클론코딩을 진행하였다. 

우선 조원들과 처음만나 주제를 정하고 스코프를 정하였다.
최소 기능으로 회원가입, 로그인, 게시글 생성, 조회, 수정, 삭제, 나의 프로필 조회, 나의 게시글 조회, 좋아요 기능을 구현하기로 하였다.

이번 조는 백엔드 4명, 프론트엔드 4명으로 이루어져서 본격적으로 프로젝트에 돌입하기 전에 컨벤션을 정하였다.

커밋 컨벤션

  • init: 리액트 만들고 초기 세팅 설정
  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정
  • style: 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
  • design: 사용자 UI 디자인, css
  • refactor: 코드 리펙토링
  • test: 테스트 코드, 리펙토링 테스트 코드 추가
  • chore: 빌드 업무 수정, 패키지 매니저 수정, 환경 설정
  • update: 원래 정상적으로 동작했지만 보완할 때
  • rename: 폴더 혹은 파일 이름 변경
  • remove: 파일 혹은 폴더 삭제
  • dir : 폴더 구조 구성, 변경

브랜치 컨벤션

  • main
  • develop
  • “feature/function-name” or “feature/page-name”

깃 컨벤션을 다음과 같이 미리 정해놓았다.

API 명세서

그 후 API명세서를 프론트와 함께 작성하였다. API명세서를 충분히 작성하였는데도 프로젝트를 진행하면서 수정할일이 종종있었다. 예를 들어 좋아요 유무를 isLike로 dto에 담아 응답하기로 하였는데 막상 실제 응답은 like로 응답되는 상황이 있었는데 이는 JSON의 boolean prefix때문이었다 그리고 API명세서를 짤때는 미처 생각치 못했던 값이라던가. 이와 같이 API명세와 달라지는 경우가 종종있어서 바로바로 프론트와 협의 하여 API명세서를 수정하였다. 

ERD 설계

ERD설계는 이번에 처음으로 제대로 작성해보았는데 ERD설계를 미리 작성하려다 보니 감이 잘 오지 않았다. 경험이 많이 쌓여야 잘할 수 있을거같다.

프로젝트 진행

프로젝트를 진행하면서 프론트 쪽 git이 꼬여서 시간이 지체되는 상황이 발생하여서 백엔드팀의 시간이 약간 뜨게 되는 일이 있었는데 이 때 매니저님의 조언에 따라 JaCoCo를 활용하여 테스트를 해보기로 하였다.

 

[TIL]20230725 - JaCoCo

프로젝트를 진행하던 중 프론트팀의 속도가 늦어져서 백엔드끼리 무엇을 할까 확인해보았다. 매니저님이 성능 개선, 테스트 코드 작성 을 제시해주셨고 우리는 테스트 코드 작성을 하기로 정하

tjsdn9803.tistory.com

그 이후 프론트와의 진도가 어느정도 맞춰져서 1차 최소 기능을 구현하고 해보기로 하였던 팔로우 기능을 해보기로 하였다.

다른 백엔드 팀원들은 테스트 코드를 작성하고 내가 나의 프로필 사진 수정, 다른 유저의 프로필 검색, 팔로잉, 내가 팔로잉 한사람 조회기능을 구현해보았다.

@Entity
@Builder
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class Follow extends BaseTime {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    private User fromUser;

    @ManyToOne(fetch = FetchType.LAZY)
    private User toUser;
    @Generated
    protected Follow(){}

    public User getToUser(){
        return this.toUser;
    }
}

다음과 같이 팔로우 엔티티를 구성하였다. 유저가 상대 유저에 팔로우 요청을 하게되면 fromUser에는 요청한 유저가 toUser에는 상대 유저가 들어가게 되며 ERD는 다음과 같이 구성된다.

비록 프론트쪽의 시간 문제로 구현은 되지 못하였지만 새롭게 구현해본 팔로우 기능이어서 생각을 많이 해본것 같다.

프로젝트를 마무리 하고 발표까지 마친 후 백엔드 매니저님은 구현한 기능들이 CRUD에 국한되어서 더 새로운 기능을 구현해보지 못한것은 아쉬운 점이지만 JaCoCo를 활용했다는것에 칭찬을 해주셨다.

나의 소감은 프론트와 속도 차이가 나서 많을 것을 구현못한것은 아쉬웠지만 처음으로 많은 인원이 한가지 프로젝트를 진행하는 경험을 해볼 수 있어서 좋았고 특히 컨벤션을 미리 짜는 경험을 한건 처음이라 이에 대한 중요성을 처음 느끼게 되었다.