본문 바로가기

server12

모든 API 엔드포인트에 공통 파라미터가 필요하다. 기존에 있던 API 모듈에 특정 파라미터를 거의 모두 추가해줘야 하는 요건이 생겼다. 추가할 파라미터를 String addParameter; 라고 하자. 아래와 같이 두 가지 정도로 방안을 생각해 볼 수 있다. Request DTO Object에 추가 @GetMapping public void get(@RequestBody DtoObject dto) {} public class DtoObject { private String addParameter; private ... } RequestParam을 모두 명시적으로 파라미터를 추가 @GetMapping public void get(@RequestBody DtoObject dto, @RequestParam(required=false) String addPa.. 2020. 4. 30.
어째서 엔티티가 계속 업데이트 되는가.. 트랜잭션이 끝날 때마다 엔티티가 계속 업데이트가 되는데 어째서죠. 조회만 했을 뿐인데요. 그 것은 Converter를 사용하는 필드에서 Section을 새로 매핑해주면서 항상 다른 객체로 인식되었기 때문.. @Getter @Setter @Entity @Table public class Entity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Convert(converter = SectionConverter.class) private List sections; } 아래에 Section을 보면 EqualsAndHashCode를 따로 선언해주지 않아 매 번 그 객체가 항상 다른 객체로 확인이 되기 때문에 JPA 에서 조.. 2019. 6. 28.
fluentd와 함께하는 검색 데이터 수집 원글 : https://dailyhotel.io/fluentd%EC%99%80-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-%EA%B2%80%EC%83%89-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A7%91-b76932a8dc2a fluentd와 함께하는 검색 데이터 수집 안녕하세요. 주니어 개발자 Anny입니다. dailyhotel.io 검색 데이터를 Fluentd로 수집하여 이를 시각화하고 분석을 진행하고 있는 과정 및 중간 작업 결과를 포스팅합니다. 현재 데일리는 여러 채널을 통해 데이터가 수집하고 있습니다. 검색 관련 데이터는 GA를 통해서 분석하고 있습니다. 그를 위해선 매번 엄청난 쿼리를 생성해서 실행하는데 언뜻보기에도 복잡하고 반복되는 .. 2019. 6. 26.
Redisson 현재 운영하고 있는 서비스 특성 상, 여러 개의 트랜잭션이 연거푸 요청될 수 있어 주문/결제 처럼 트랜잭션이 동기화 처리가 필요할 때 사용하기 위해 분산 락을 사용하기로 합니다. 그 중에 Redisson을 사용합니다. Redisson은 인메모리 데이터 그리드 기능을 가진 Redis Java Client 입니다. 데이터 모델링과 어플리케이션 로직에 집중할 수 있게 도와줍니다. 여러 레디슨 노드를 활용해서 분산환경에서 핸들링 할 수 있습니다. Redisson을 도입하게 된 큰 이유는 Redis Cluster 설정과 지원이 간단하고 용이하다는 점이 있겠습니다. Lock을 얻기위한 WaitTime, LeaseTime lock을 얻기 위한 대기시간(=waitTime)과 락을 임대할 시간(=leaseTime)을 설.. 2019. 6. 26.