본문 바로가기

전체 글121

2023년 회고와 2024년 계획 이번에는 처음으로 이번년도 회고를 작성해보고자 한다. 이렇게 많은 일이 있을 수 있었을까? 싶은 2023년도 였던 것 같은데 하나하나 잘 정리해봐야지. 개인 공부와 성장 사실 백엔드 공부를 제대로 시작했던 것이 2023년도 초반 겨울방학이었던 것 같다. 이전까지는 ‘그냥 저냥 스프링을 써봤다’ 정도였는데 이 때 쯤부터(정확히는 겨울방학 부터) 그나마 제대로 공부를 시작했던 것 같다. 2023년도에 공부한 책을 정리해보면 다음과 같다. 자바 웹 넥스트 스텝 개발자가 알아야할 객체지향과 디자인 패턴 SQL 레벨업 단위 테스트 가상 면접 사례로 배우는 대규모 시스템 설계 모던 자바 인 액션 코틀린 인 액션 발췌독 JPA 프로그래밍 (자바 ORM 표준) 김영한님 강의와 함께 Real Mysql (엄청난) 발췌독.. 2024. 1. 4.
Refactoring : if-else문을 사용하는 팩토리 클래스 제거하기 개발을 하다보면 VIP 유저, 일반 유저 등의 여러 상황과 정책에 대응하기 위해 하나의 인터페이스가 여러 구현체를 갖게되는 경우가 더러 있다. 위와 같은 경우 특정 상황에서 특정 구현체를 찾아주어야 하는 팩토리 클래스를 만들어야 하는데, 이 팩토리 클래스에 If-else문 혹은 switch, when 등을 사용하기 쉽상이다. 이때, 어떻게 대응해야할지 고민과 그 결과를 공유해보고자한다.if-else를 사용한 팩토리 클래스VVIP 유저, VIP 유저, GOLD, SILVER 유저마다 다르게 할인율을 계산해주는 정책이 있었다고 가정해보자. 보통의 상황에서 우리는 UserSalePolicy라는 인터페이스를 정의하고 각 유저에 맞는 정책들을 구현할 것이다.interface UserSalePolicy { fun .. 2023. 12. 26.
시간이 없을 때 효과적인 학습 방법 회사에 다니기 전과 최근 학습 방법의 차이에 대해 고민해보는 시간을 가졌고, 이에 대해 정리해보고자 한다. 회사의 다니기 전과 지금의 차이음.. 요즘 일상은 우리 회사의 특징인 것 같긴 한데..(내가 일을 못끝내면 팀의 장애물이 되기 때문에 끝까지 하려고 노력해서 그런것 같기도 하다..ㅜ) 아침 11시에 출근해서 집에오면 2시 잠이 들면 3시, 9시에 일어나서 출근 준비하고 출근 / 아침 11시 출근.. 평일은 이렇게 반복된다. 또 주말에도 남은 업무가 있다면 부족했던 잠을 조금 채우고 업무를 하는 시간을 갖고, 친구를 만나거나 여자친구를 만나거나 하면 순식간에 주말이 끝난다. 위처럼 바쁜 일상을 반복하다가 문득 든 생각은 '내가 지금 성장 중인가?'이다. 처음에 지향했던 바는 '회사의 성장과 업무 = .. 2023. 11. 11.
AbstractRoutingDataSource 를 통한 DB replication 환경 설정과 Spring Data JPA에서의 Transactional 이슈 해결을 위해 스프링 구현 코드를 까보는 (약간은 바보 같은) journey.. 문제 상황 Spring Data Jpa에서 메서드 명만 작성하면 알아서 jpql을 만들어내주는 신기한 기능을 많이들 써봤을 것이다. 나 또한 그랬고, 이번에도 어김없이 사용하고 있었다. 다만, 현재 하고 있는 프로젝트에서는 현재 트랜잭션이 read-only일 시에는 read-only DB, 데이터 변경 관련 트랜잭션일 경우에는 write 전용 DB를 바라보게 하고 있었다. (전형적인 DB replication 구조) 이때 클라이언트 단에서 post로 데이터를 작성하고, 직후 get을 통해 데이터를 조회할 시 read DB와 write DB의 동기화 시간 차이로 인한 문제로 not found exception이 발생했고 새로고침하면 동기화가 되어 다시 데이터가 정상적으로 조회되는 상황이었다. 해결? 사실 .. 2023. 10. 22.