[WIL] 클론코딩 프로젝트 회고

thingzoo·2023년 7월 27일
post-thumbnail

클론코딩 프로젝트
2023.07.21~30. newneek 클론코딩

개발하면서 어려웠던 점

  • 이번에도 협업이 가장 어려웠다!
  • 엔티티나 API 명세서를 따르지 않고 내용을 수정했을 경우 팀원에게 서로 알려줘야하는데 그러지 않아서 병합충돌이 많이 발생했다.
  • 응답 처리 방식, 프로젝트 폴더 구조, 코드 스타일 등을 처음에 확실하게 정리하고 협업을 했어야하는데 그렇지 않아서 나중에 리팩토링을 해야했다.

트러블 슈팅

Github Action으로 CI/CD

참고자료1
참고자료2

  • github action을 통한 자동 배포: github action으로 빌드 후 이미지를 docker에 저장, 저장한 이미지를 AWS EC2 서버에 올리는 방법을 사용.. 15번 만에 성공적으로 배포를 하긴 했으나 서버에서 mysql 권한 거부 에러가 뜨면서 실행되지 않음...ㅠ

발생에러1

Error: Gradle script '/home/runner/work/back-end/back-end/gradlew' is not executable.

해결방법

- name: Run chmod to make gradlew executable
  run: chmod +x ./gradlew

발생에러2

ec2에서 도커 이미지를 실행시키니 스프링에서 뜨는 에러...ㅠ

java.sql.SQLException: Access denied for user 'admin'@'172.31.46.103' (using password: YES)

시도

권한도 줘봤으나 그대로 였다...ㅠ

GRANT ALL PRIVILEGES ON *.*TO 'user_id'@'%' IDENTIFIED BY 'user_password' with GRANT OPTION;

refresh 토큰 추가: redis 적용

참고자료1
참고자료2
참고자료3

  • redis 적용해 리프레쉬 토큰 저장: 도커를 사용해 설치, 로컬 & 서버 모두 적용 성공, 저장/업데이트/삭제 성공

필터 예외 처리

참고자료

  • 필터 예외 처리: JwtFilter들에서 발생하는 Custom Exception을 Catch하고 처리할 JwtExcetpionHandlerFilter를 구현하였고, JwtExcetpionHandlerFilter에서는 ObjectMapper를 통해 OutputStream에 ApiResponsedto 객체를 적용하여 통일된 양식으로 Response가 전달될 수 있도록 구현함

회고

  • access 토큰 재발급을 api로 처리해보기
  • 테스트 해보기

기술매니저님 피드백

  • BE
    • 실전프로젝트에서는 CI/CD 해보기
    • redis를 왜쓰는지 생각해보기
    • 실전프로젝트에서는 Oauth 꼭해보기
    • 수정될때, 이전값과 수정된 값을 모두 반환해주는 것도 고려해줘야함
    • DB에는 null은 안들어가는게 좋음!!!
    • 프로젝트 구조(패키징)
      • 패키징은 병렬적으로 하는 게 좋음
      • mypage는 entity이름이 아니라서 이질적임
      • member내에서 mypage를 서비스 분리만 해줘도 될듯
  • 공통
    • git commit, issue, PR, wiki 잘 써보기
      • 트러블슈팅이나 기술적 의사결정 등은 위키에 적는것도 좋아보임
    • 서비스 소개, API, ERD, 아키텍처, 트러블슈팅
    • 기획단계에서 노션에서, 배포후에는 swagger로
    • 포트폴리오로는 보여주는 부분으로는 리드미 좋음
    • 협업툴: 슬랙, 노션 → 가장 많이 씀
profile
공부한 내용은 바로바로 기록하자!

0개의 댓글