프로젝트 기록/Issue Tracker 삽질 기록

    [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 로 동작하는 문제가 발생했다 😫 왜 발생했으..

    [Issue Tracker Project] Object Mapper 에서 @Getter 와 기본 생성자의 역할 ?

    기록 이유 팀원들과 Issue Traker 프로젝트를 진행하며 여러 DTO 클래스를 활용해 API 를 개발하고 있다. 값을 바인딩 할 때 사용하는 Request 관련 DTO, 서버에서 Json 데이터를 만들어 응답하는 Response 관련 DTO 로 나눠서 DTO 를 사용하고 있는데, 너무 무분별하게 롬북 라이브러리 어노테이션을 사용한다는 생각이 들었다. 이에 호기심이 생겨 구글링을 하며 궁금했던 부분들을 기록하기 위해 포스트를 작성하게 되었다 😀 기록 시작 ~ Jackson ? 우린 SpringBoot 를 사용하면서 객체를 Json 으로 변환할 때, 그리고 Json 을 객체로 변환할 때 Jackson 라이브러리를 사용하게 된다. Jackson 은 Json 데이터 구조를 처리할 수 있도록 도와주는데, s..

    [Issue Tracker Project] JPA 연관관계 매핑 관련 이모저모

    기록 이유 Issue Tracker 프로젝트를 진행하면서 OAuth, 백엔드 자동 배포, 프론트 배포 등의 산을 넘어 드디어 API 를 개발하나 했는데, JPA 가 발목을 잡고 있다 🥲 열심히 복습하고 있지만 역시 실전은 넘나 다른 것... 헷갈리는 것 투성이지만 오늘 겪은 고민에 대해 기록해보려 한다. 다른 포스팅들과는 다르게 의식의 흐름대로 작성 ㅎ_ㅎ ~~ 기록 시작 ~ 프로젝트 내 Entity 종류 Issue 기준으로, 1. Issue (N) : Label (M) - Issue 는 여러 Label을 가질 수 있고, Label 또한 여러 이슈를 가질 수 있다. 2. Issue (1) : Comment (N) - Issue 는 여러 Comment 를 가질 수 있고, Comment 는 하나의 이슈에 속..