객체 지향 : 상속, 합성, 조합
객체 지향적인 코드를 구성하는 방법에는 상속 합성 조합 이 있습니다.우아한 테크코스에서 장기 를 하며, 해당 개념에 대해 학습한 후 어떻게 사용하였는 지 정리하였습니다.1. 상속상속 은 객체의 책임, 역할은 같으나 구현 방식이 다를 때 사용되어야 합니다.장기에는 차, 마, 상, 사, 궁, 포, 졸(병) , 총 7가지 기물이 있습니다.미션에서 제가 정의한 기물(Piece) 의 역할은 보드 위의 특정 좌표까지 갈 수 있다면 경로를 제공하는 것이었습니다. 이동 가능성을 확인하고 경로를 제공하는 세부적인 구현이 7개 이상 나오겠다는 생각을 하여 상속 을 사용하였습니다.추가적으로 기물(Piece) 의 경우에는 각자 다른 팀과 타입을 이동 가능성을 확인하기 위해 가져야하기 때문에 추상 클래스로 구현하였습니다.mov..
글 읽기 ↗
Avoid Unnecessary Implicit Joins when using QueryDSL
BackgroundI got advice from gemini3 when I was developing a feature. That feature allows users to accept or reject friend requests.Gemini3 recommended using ID when querying friend candidates. But from the adapter layer to the application layer, the using user email is an easier method. ( I love @AuthenticationPrincipal from Spring Framework !)So I decided to compare the performance between usin..
글 읽기 ↗
Jackson 3 변경으로 인한 Redis 역직렬화 장애 분석
ImHere 프로젝트는 로그인 및 회원가입 과정에서 카카오의 OIDC(OpenID Connect)를 활용하고 있습니다.카카오 공식 문서에서는 OIDC 서명 검증에 필요한 공개 키를 매 요청마다 조회하는 대신, 일정 시간 캐싱하여 사용할 것을 권장하고 있습니다.이에 따라 본 프로젝트에서는 카카오 공개키를 캐싱하여 사용하고 있으며, 추가로 자체적으로 사용하는 refresh-token 역시 데이터베이스가 아닌 캐시 기반으로 관리하도록 설계하였습니다.해당 프로젝트는 기존 MVP 형태로 배포했던 서비스를 리팩토링하여 재운영할 계획이기 때문에, 확장성과 성능을 고려하여 캐시 저장소로 Redis를 채택하였습니다.배경이 프로젝트는 단순한 서비스 구현을 넘어 학습 목적도 함께 가지고 있습니다.이에 따라 최신 기술 스택 ..
글 읽기 ↗
객체 지향 : 상속, 합성, 조합
객체 지향적인 코드를 구성하는 방법에는 상속 합성 조합 이 있습니다.우아한 테크코스에서 장기 를 하며, 해당 개념에 대해 학습한 후 어떻게 사용하였는 지 정리하였습니다.1. 상속상속 은 객체의 책임, 역할은 같으나 구현 방식이 다를 때 사용되어야 합니다.장기에는 차, 마, 상, 사, 궁, 포, 졸(병) , 총 7가지 기물이 있습니다.미션에서 제가 정의한 기물(Piece) 의 역할은 보드 위의 특정 좌표까지 갈 수 있다면 경로를 제공하는 것이었습니다. 이동 가능성을 확인하고 경로를 제공하는 세부적인 구현이 7개 이상 나오겠다는 생각을 하여 상속 을 사용하였습니다.추가적으로 기물(Piece) 의 경우에는 각자 다른 팀과 타입을 이동 가능성을 확인하기 위해 가져야하기 때문에 추상 클래스로 구현하였습니다.mov..
글 읽기 ↗
Avoid Unnecessary Implicit Joins when using QueryDSL
BackgroundI got advice from gemini3 when I was developing a feature. That feature allows users to accept or reject friend requests.Gemini3 recommended using ID when querying friend candidates. But from the adapter layer to the application layer, the using user email is an easier method. ( I love @AuthenticationPrincipal from Spring Framework !)So I decided to compare the performance between usin..
글 읽기 ↗
Jackson 3 변경으로 인한 Redis 역직렬화 장애 분석
ImHere 프로젝트는 로그인 및 회원가입 과정에서 카카오의 OIDC(OpenID Connect)를 활용하고 있습니다.카카오 공식 문서에서는 OIDC 서명 검증에 필요한 공개 키를 매 요청마다 조회하는 대신, 일정 시간 캐싱하여 사용할 것을 권장하고 있습니다.이에 따라 본 프로젝트에서는 카카오 공개키를 캐싱하여 사용하고 있으며, 추가로 자체적으로 사용하는 refresh-token 역시 데이터베이스가 아닌 캐시 기반으로 관리하도록 설계하였습니다.해당 프로젝트는 기존 MVP 형태로 배포했던 서비스를 리팩토링하여 재운영할 계획이기 때문에, 확장성과 성능을 고려하여 캐시 저장소로 Redis를 채택하였습니다.배경이 프로젝트는 단순한 서비스 구현을 넘어 학습 목적도 함께 가지고 있습니다.이에 따라 최신 기술 스택 ..
글 읽기 ↗