프로젝트 기록

    [당근마켓 API 서버 Project] Form, OAuth2 로그인 통합 구현

    기록 이유 맨 처음 로그인 구현했을 때 어떻게 구현했는지 따로 기록을 남겨뒀는데, 블로그로 옮기기 위해 작성하게 되었다. 기록 시작 🙂 어떻게 구현했나 ? 나는 Spring Security 를 활용해 Form Login 과 OAuth2 로그인을 진행했다. 이전 토이 프로젝트에서는 Spring Security 를 사용해보지 않아서 이번 프로젝트에서는 꼭 적용해보겠다 다짐했고 실천을 위해 어느정도 학습 후 커스텀하게 인증 로직을 구현할 수 있었다. 먼저 Form Login 구현부터 차근차근 살펴보자. 0-1) Login 관련 디렉토리 구조 0-2) UserDetails , OAuth2User 타입 구현체 Form Login 과 OAuth2 Login 을 통합 관리하기 위해 UserDetails, OAuth2..

    [당근마켓 API 서버 Project] 지금까지 구현 내역과 앞으로 구현 계획

    기록 이유 블로그를 쉰지 3달 정도가 됐는데, 지금까지 Notion 에 얼추 정리했던 내용을 바탕으로 블로그 포스팅을 하면서 프로젝트를 이어나가기 위해 기록하게 됐다. 사전 과제하고 이것저것 하느라 정신이 없었는데, 다시 마음을 다 잡고 시작해보자.. 기록 시작 🙂 프로젝트 디렉토리 구조 도메인을 기준으로 Global, Category, Likes, Login, Member, Product 디렉토리 내 Controller, Domain, Service 디렉토리가 위치해 있는 상태. 각 클래스 네이밍을 신경쓰면서 작업을 진행했는데 다시 보니 조잡하게 네이밍한 클래스도 많이 보이고, 뭉칠 수 있는 클래스들은 더 뭉쳐서 깔끔하게 리팩토링 할 예정. 📦 src ┣ 📂 main ┃ ┣ 📂 generated ┃ ┃..

    [Issue Tracker Project] Switch - Case Refactoring

    기록 이유 이슈 내의 Milestone, Label, Assignee 를 수정하는 updateIssueRelated() 메서드에 Switch - Case 문 떡칠을 리팩토링하고 팀원인 검봉에게 공유하는 것을 깜빡하지 않기 위해 기록하게 되었다 🙂 기록 시작 ~ 리팩토링이 필요한 로직 클라이언트에서 요청한 Issue 아이디, 어떤 것을 수정할 지 결정하는 Type, 해당 Type 의 아이디를 지닌 DTO 를 사용해서 Swith - Case 분기문을 통해 Type 을 확인한 뒤, Isse 아이디에 맞는 Issue Entity 를 수정하는 로직이다. 엄청 복잡한 로직은 아니지만 분기문을 IssueService 클래스에서 없애기 위해 인터페이스 추출 기법을 활용한 리팩토링을 시도해보았다. 리팩토링 시작 먼저 전..

    [Issue Tracker Project] Issue 전체 조회 시 N + 1 발생과 개선

    기록 이유 현재 Issue Controller 조회 API 중, 모든 Issue 를 조회하는 기본적인 Read API 가 존재하는데, 평소보다 많은 목 데이터를 서버, 로컬 DB 에 넣어두고 조회하니 굉장히 느리게 조회되는 것을 알게됐다. 평소 개발 시 목 데이터를 꽤 넣고 조회하는 편이 아니라 빨리 알아채지 못했고 수정하면서 다시 상기하기 위해 기록하게 됐다 🙂 기록 시작 ~ 어떤 문제가 발생했나 ? 쉽게 말하자면, JPA 를 활용하는 개발자들이 한 번씩은 꼭 겪는 현상인 N + 1 문제가 발생했다. 아래 사진과 같이 현재 프로젝트에서 가장 중요한 Issue Entity 는 여러 Entity 와 @ManyToOne, @OneToMany 관계를 맺고있는 것을 확인할 수 있다. Issue Controlle..

    [Issue Tracker Project] 로그인 시 환경변수 이슈 발생

    기록 이유 FE 담당인 Mille 가 프론트 개발을 끝냈다는 연락을 받고 API 연결을 위해 오랜만에 팀원 모두가 모여 머리를 맞대로 삽질을 하고 있다. 로그인부터 막혔는데 전혀 이유를 찾지못하다가 생각보다 간단하게 수정할 수 있었는데.. 잊어버리지 않기 위해 기록하려고 한다 ! 기록 시작 ~ 어떤 문제가 발생했나 ? 현재 우리 프로젝트에서는 GitHub Oauth2.0 을 사용한 로그인을 구현하고 있다. 아래 이미지에서 모자이크 한 Client_Id 를 프론트 쪽에서 환경변수로 등록하고 GitHub Server 에 접근한 뒤, 프로젝트 서버가 배포된 WAS 의 로그인 API 로 리다이렉트하는 방식으로 동작하는데 계속해서 Client_Id = undefined 로 동작하는 문제가 발생했다 😫 왜 발생했으..