[6일차] 미니 프로젝트 회고

Woozy9ucci·2022년 10월 27일
0

이번 주에 처음으로 프론트와 협업을 진행했다.
간단한 미니 프로젝트로 CRUD 구현해서 통신해보는게 목표였다.
겪었던 어려운점들을 기억나는대로 적어보려한다.

  • api명세서 작성 및 ERD설계

    이 전까지 나만 알아보면 쉬운 api를 설계하였고 erd또한 진행하면서 자주 수정하는 방향으로 진행했었다. 그러나 막상 기획이 시작되고 서로의 방식을 모르는 상태로 api 명세서를 작성하려니 통일성도 없고 뭐가 필요한지, 뭐가 중요한지를 잘 몰랐었던 터라 설계자체가 까다로웠다.
    다음에 설계를 하게 된다면 머릿속에 구조를 먼저 그리고 일관된 형식과 필요한 정보 위주로 설계해야겠다는 생각이 들었다.

  • 예외처리

    위와 비슷한 경우로 프론트와 데이터 전송 테스트 시에 명확하게 오류를 알려줄 수 있는게 중요했었 던 것 같다. 우리도 나름 꼼꼼히 예외처리를 했다고 생각했지만 발생 필드를 정보가 노출되지 않는 선에서 명시해 준다던지, 발생할 수 있는 예외를 미리 생각하여 같은 종류 끼리 잘 정리를 해놓는 다던지 의 아쉬운 점이 있었다.

  • 로깅

    모든 테스트에서 로깅을 해놓았다면 어느부분에서 문제가 발생하는지 보다 쉽게 알 수 있었을 것 같다. slf4j ? 에 대해 좀더 알아보고 공부해 봐야겠다.(어떻게 사용되는 지)

  • cors

    cors에 대해 처음 알게되고 이해하게 되었다. 이번에는 통신이 되는게 우선인지라 모든 cross origin 을 허용하여 진행했는데 다음에는 필요에 의해서 원하는 origin과 method를 설정할 수 있도록 노력해봐야겠다. (어노테이션 두개 꼭 붙여야하는지와 cors().쪽에 객체 넣는거 확인해보자

  • 토큰 재발급 방식 및 로그아웃 기능 구현에 대한 고민

    access토큰이 만료되었을 때 다시한번 프론트에서 api요청을 보낼 수 있다면 재발급 기능을 남겨두는 것도 괜찮은 것 같다. 또한 재발급 시 리프레쉬 토큰을 어떻게 관리할 지, 로그아웃 시 어떻게 토큰을 삭제할 지 (아마 access에 대해서는 쿠키에서 삭제되도록 프론트에서 해주는 것이 맞는 것 같고) 에 대한 고민을 더 해봐야 할 것 같다.
    추가로 access 검증 시 유효기간 지났을 시만 재발급 해주는 기능도 까먹지말고 추가해보자

  • 권한 관리

    시큐리티에서 인증객체 넘길 때 권한도 설정하여 넘겨주고 권한에 대한 accessDenied 도 다루어 보았으면 좋았을 것 같다.

  • Oauth2

    실전에는 반드시 사용할 테니 꼭 다시한번 보자

  • 페이징 처리 or 무한 스크롤

    찾아 봤을 때는 Pageable 객체를 이용하고 프론트에서 값을 일정하게 증가하도록 넘겨주면 될 것 같았는데 꼭 구현해 보자

  • Https 에대한 이해 부족

    Http 에서 Https 변환하는 과정에서 애를 먹었다. 발표직전이라 시간이 없기도 했지만 Http 등에대해 조금더 공부하자 (영한님 HTTP 틈날 때 마다 보자)

  • 무중단 배포

    무중단 배포 꼭 구현하자 , 그 외에도 실시간 알림 등 다양한 기술들을 미리 생각해보자!!
    (지난 기수 최우수 실전)
    https://github.com/pnci1029/hanghae_8D_BE/blob/master/src/main/java/com/example/checkcheck/controller/ArticleController.java

  • EC2 배포 Rds, S3 등 aws

    이번에는 다른 팀원이 배포하고 관리하여 많이 익숙해질 시간이 없었다. 한번더 구조를 정리해볼 필요가 있겠다.
    S3는 구현해 놓은 코드 및 블로그 참고하여 구현하면 문제 없을 것 같다.

  • Gson 으로 Json 파싱

    폼데이터로 이미지를 받을 때 RequestParam으로 받아왔는데 항목별로 받아올 수 도있겠지만
    Json을 String으로 받아 파싱하여 Dto에 담을 수 있는 방법? 혹은 이전 기수에서는 그냥 Dto로 받았는지 확인해 볼 필요가 있겠다.

  • Git flow

    로컬 브랜치 관리 및 Main 브랜치 관리방식에 미숙하여 애로사항이 조금있었던 것 같다.
    또 터미널로만 했었는데 인텔리제이의 git 기능을 이용해보니 더 직관적으로 다양한 기능을
    이용할 수 있었다. 팀원들에게 많이 배웠다.
    그리고 중간에 꼭 머지하고 브랜치 삭제하고 다시시작하는 방식도 괜찮을 것 같다.

  • ResponseDto

    리턴을 해줄 경우 ResponseEntity나 ResponseDto를 통일적으로 사용하는 방법도 괜찮을 것 같다.

  • 포스트맨 변수설정 및 협업기능

    포스트맨 변수설정 및 각종 기능에 대하여 조금은 알 필요가 있을 것 같다.

  • Github readme

    윤서님의 성실함을 배우자

  • 자료구조 활용

    다음 클론 때 나 실전 때 자료구조를 활용하여 효율적인 사용을 할 수 있도록 고민해 봐야겠다.

  • 컬럼 이름

    이왕이면 컬럼이름도 직접 명시적으로 지정해주면 좋을 것 같다 (카멜케이스 알아서_로 변환해준다)

0개의 댓글