[Logging] 로그 출력을 효율적으로 생성 및 추적하기 4편 ThreadLocal사용기
·
Spring/Logging
V3에서 진행했던 방식의 문제점이였던 동시성을 ThreadLocal을 사용해서 해결해보려 한다.ThreadLocal은 다른 쓰레드와 자원을 공유하지 않는 독립적인 영역이다.그러므로 동시에 수행해도 각자 같은 이름의 변수이지만 다른 객체를 사용하고 있는 것이다.큰 변동사항없이 기존에 사용했던 TraceIdHolder의 타입을 ThreadLocal로 바꿔주고 문법에 맞게 변경해준다.FieldLogTracetraceIdHolder, syncTraceId, begin, releaseTraceId에서 ThreadLocal의 get(),set()메서드를 사용하도록 수정해주면 된다.package com.example.loggingtest.global.trace;import lombok.extern.slf4j.Slf4..
[Logging] 로그 출력을 효율적으로 생성 및 추적하기 3편
·
Spring/Logging
2024.12.25 - [Spring] - [Logging] 로그 출력을 효율적으로 생성 및 추적하기 1편2024.12.25 - [Spring] - [Logging] 로그 출력을 효율적으로 생성 및 추적하기 2편 Logging Trace V3V2에서는 TraceId의 동기화 문제는 해결했지만 모든 파라미터에 대한 수정의 필요성이 생겨 유지 보수에 어려움이 발생한다는 문제와 beginSync메서드를 반드시 수행해야 한다는 문제가 있다.이러한 문제를 해결하기 위한 V3를 구현해보려 한다. 첫 번째 방법은 LogTrace라는 추상체로 중복되는 작업에 대한 메서드를 공통 모듈로 만들고 구현체를 사용하는 방법이다.목차TraceId 변경점LogTraceFieldLogTrace결과문제점TraceId 변경점create..
[Logging] 로그 출력을 효율적으로 생성 및 추적하기 2편
·
Spring/Logging
Logging Trace V2목차TraceV2TraceId에서 추가된 메서드TestControllerService결과문제점TraceV2V2에서는 beginSync() 메서드를 호출하여 TraceId 값을 일관적으로 사용할 수 있도록 동기화하고 depth를 설정해준다.@Slf4j@Componentpublic class TraceV2 { private static final String START_PREFIX = "-->"; private static final String END_PREFIX = "TraceId에서 추가된 메서드public TraceId createNextId() { return new TraceId(traceId, level + 1);} Test이전과 다른 점..
[Logging] 로그 출력을 효율적으로 생성 및 추적하기 1편
·
Spring/Logging
Loggin에 TraceId를 부여하여 추적을 쉽게 만들기목차요구 사항TraceID 클래스TraceStatus 클래스TraceV1TestControllerService결과문제점우선 내 로그 기록을 살펴보면서 어떤 개선이 필요한지 찾아보자select u1_0.uuid,u1_0.account_status,u1_0.address1,u1_0.address2,u1_0.birthday,u1_0.birthyear,u1_0.email,u1_0.fcm_token,u1_0.mapx,u1_0.mapy,u1_0.mate_mate_uuid,u1_0.name,u1_0.nickname,u1_0.owner_uuid,u1_0.password,u1_0.phone_number,u1_0.profile_image,u1_0.role,u1_0...
[Spring Batch5] Batch를 사용해서 추가정보 미 등록 유저 삭제하기
·
Spring/Batch
[요구사항]1. 소셜 회원가입 유저는 리다이렉트 하여 추가 정보 가입 페이지로 이동한다.(그 이전까지는 회원의 'isNewUser' 컬럼이 true)2. 추가 정보 가입 페이지 입력을 모두 마친 유저는 'isNewUser'컬럼이 false로 변경된다.3. 3개월 이상 추가 정보 가입을 마치지 않은 유저는 삭제 처리한다. (Soft Delete방식으로 'isDelete'가 true 처리)  [구현 코드]1. application.yamldataSource를 두 구개로 나눠 진행했다. 하나는 기존에 사용하던 데이터가 담겨 있는 DB이고, 하나는 배치 작업 과정이 담겨있는 메타 데이터 DB였다.spring.batch.job = false로 하는 이유는 애플리케이션 초기화 단계에서 job으로 등록한 작업들을 수..
[Elastic Search] Elastic Search 개념
·
Spring
ElasticSearchElasticSearch는 많은 데이터를 다루는 검색 엔진으로 고려할 만한 오픈소스 도구이다. ElasticSearch는 ELK 스택(ElasticSearch, Logstash, Kibana, 그리고 Beats)을 구성하는 주요 요소 중 하나로, 다양한 데이터 분석과 검색 작업에서 활용된다.ElasticSearch와 비교할 수 있는 다른 검색 및 데이터 관리 솔루션으로는 Solr, Splunk, MongoDB, 그리고 Cassandra 등이 있다. 이들 솔루션과 비교했을 때 ElasticSearch는 다음과 같은 강점을 가진다:빠른 실시간 검색: ElasticSearch는 검색 속도가 매우 빠르며 실시간 데이터 처리가 가능하다. 이는 Solr와 비슷한 검색 기능을 제공하지만, El..