목록분류 전체보기 (181)
초보개발자 긍.응.성

지난 글에서는 MDC를 데이터를 리액티브 환경에서 사용할때 생기는 이슈와 해결할 수 있는 방법에 대하여 알아보았습니다.https://ckddn9496.tistory.com/179Reactor With MDC - SpringBoot 2그리고 Reactor도 이러한 이슈가 있다는것을 알고 있었는지, Reactor 3.5 버전부터 자동으로 ThreadLocal의 값을 Context를 통하여 전파할 수 있도록 Automatic Context Propagation을 제공하게 되었습니다.이번 글에서는 SpringBoot 3 버전 WebFlux에서 Automatic Context Propagation를 통해 MDC를 다루는 법에 대하여 알아보겠습니다.1. Reactor With MDC (springboot 3)Spr..

1. 개요 - MDC의 리액티브에서의 한계점MDC(Mapped Diagnositc Context)는 클라이언트 요청에 대한 유니크한 값을 로그 컨텍스트에 담아 어느 위치에서든 해당 데이터에 대한 로깅이 가능하도록 지원합니다.MDC는 내부적으로 ThreadLocal을 통하여 메타데이터를 관리하는데, 이는 SpringMVC와 같이 하나의 요청을 하나의 스레드에서 수행하는(thread-per-request) 구조에서 정상적으로 동작합니다.하지만 Event Loop 방식으로 동작하는 Spring WebFlux에서는 하나의 요청에 대하 여러 스레드에서 수행될 수 있기에, MDC를 통하여 로깅하는것은 불가능합니다.Spring MVC에서의 방식을 명령형 프로그래밍 방식, WebFlux의 방식을 리액티브 프로그래밍 방..

Jenkins의 계정정보를 잃어버려 이를 복구하며 겪었던 삽질에 대한 내용과, 마이그레이션까지 진행했던 절차에 대해 정리한 글입니다.1. 개요저희 팀에서는 배치 작업 외 PR 요청 시 브랜치 테스트, 일별 메인 브랜치의 테스트 커버리지 측정, 배포 전 소스 컴파일 및 빌드 등 다양한 용도로 Jenkins를 사용중입니다.보통 배치 Job을 개발하여 등록하는 경우가 아니라면 초기 세팅 후엔 Jenkins에 접근할 일이 별로 없습니다. 이번에 사용하던 애플리케이션 빌드 시 maven 버전의 업그레이드가 필요하여 이를 세팅하기 위해 오래간만에 Jenkins 접근하였다가 인증 정보가 만료되어 로그인이 되지 않는 이슈가 있었습니다.하지만 Jenkins 서버가 설치된 장비에 직접 접근할수만 있다면 복구할 수 있는 방..

개요 및 예시는 이전글로부터 이어서 진행합니다.https://ckddn9496.tistory.com/176ObjectMapper Enum Control – 1. BeanSerializerModifier (직렬화 커스터마이징)1. 역직렬화 중복 작업 제거BeanDeserializerModifier직렬화 방식을 커스텀하게 변경했던 것처럼 Enum 필드 역직렬화하는 방식도 동일하게 애노테이션을 통해 적용하려 합니다.public @interface EnumDeserialize { /* enum 객체를 deserialize 할때 호출할 메서드 명 */ String value();} 역직렬화할 Enum 타입에 붙여줄 애노테이션을 먼저 생성하였습니다.class Deposit { @EnumDeseria..

Spring 프레임워에서 Jackson 라이브러리를 사용하다 보면 Enum 타입에 대하여 변환 시 특별한 처리를 해주어야 할 때가 있는데, 이유는 기본적으로 ObjectMapper가 Enum 타입을 직렬화 시 타입 값의 이름으로 직렬화되기 때문입니다(내부적으로는 toString()을 통해서이나 모든 Enum의 오버라이드 하지 않은 toString 은 name을 반환합니다). 일반적으로 Enum 타입의 “상수” 값은 개발자가 이해하기 쉬운 문자열로 네이밍되고, 실제로 사용할 때는(클라이언트 응답 구성, 외부 API 서버 응답 파싱 등) 이름과는 다른 코드값으로 사용해야 합니다.이러한 작업을 위해 특정 필드를 원하는 값으로 직렬화하려면 @JsonSerializer 애노테이션과 함께 커스텀 한 JsonSeri..

OpenSSL Ciphers 에 대하여 이 글은 ssl cipher에 대한 이해가 부족하여 발생한 이슈 상황에 대하여 회고하는 글입니다. 상황 사내에서 nginx의 SSL 프로토콜 기준을 TLSv1.2 이상으로 지원해야 하는 일이 있었습니다. 모든 서비스에 공통으로 적용하도록 가이드가 내려왔기에, 이에 따라 기존 서비스들은 SSL 설정을 수정하였습니다. 가이드엔 SSL 프로토콜과 SSL Cipher 문자열의 수정이 있었는데요, 실질적으로 수정한 범위는 nginx의 ssl_protocols와 ssl_ciphers 를 수정해주면 되었습니다. 이 중 ssl_ciphers와 같은 경우 정보보호 강의 때 얼핏 들은 것으로 보이는 암호화 방식(AES, SHA…)으로 얽힌 복잡한 문자열 값을 설정해주어야 했었는데, ..