![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bvvmha/btrHSAFlMw0/ZJClE7u30JE2WIXupYNaO1/img.png)
이번에는 멀티 쓰레드 환경에서 요청 쓰레드 별로 식별가능한 로그를 남기는 방법에 대해 알아보도록 하겠습니다. 실무에서 유용하게 사용될 수 있으니 참고하시면 좋을 것 같습니다. 1. 로그가 뒤섞이는 문제 상황 소개 및 해결 방법(MDC) [ 로그가 뒤섞이는 문제 상황 소개 ] 서비스를 운영하다 보면 로그를 통해 문의 대응 및 모니터링 등을 진행하게 된다. 그런데 문제는 멀티 쓰레드 환경에서 여러 동시에 요청이 처리되기 때문에 동일한 요청에 대한 로그가 연속적으로 쌓이는 것이 아니라, 순서없이 쌓인다는 것이다. 예를 들어 사용자 추가를 위한 요청이 동시 다발적으로 와서 다음과 같이 로그가 남았다고 하자. 아래의 로그를 보면 1개의 요청에 대한 로그가 쭉 남지 않고, 뒤섞임을 확인할 수 있다. 위의 로그를 요..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/DbFBw/btrHpok34kV/SaZCIZ9lI4aBeQadyy4FPK/img.png)
이번에 넥스트스텝 ATDD 강의를 듣게 되었습니다. 과제 중에 @SpringBootTest를 사용하는 테스트들을 격리시키는 부분이 있었는데, 제가 사용했던 방법을 공유하도록 하겠습니다. 1. SpringBootTest가 @Transactional로 롤백되지 않는 이유[ SpringBootTest에서 트랜잭션 롤백되지 않는 이유 ]테스트에서의 트랜잭션 롤백@DataJpaTest를 사용하면 영속성 계층을 편리하게 테스트 할 수 있다. 각각의 테스트 메소드가 끝나면 테이블은 비워지면서 모든 테스트가 격리된다. 그 이유는 @DataJpaTest 어노테이션 안에 @Transactional이 있어서 테스트가 끝나면 트랜잭션을 롤백시키기 때문이다.@Target(ElementType.TYPE)@Retention(..
Spring 프레임워크에서는 외부 API와 통신하기 위한 RestTemplate을 구현해두었습니다. 이번에는 기본적으로 주어지는 RestTemplate에 부가적인 설정을 더해 고도화해보도록 하겠습니다. 1. RestTemplate 타임아웃(Timeout), 재시도(Retry), 로깅(Logging) 등 설정하기 [ RestTemplate 추가 설정하기 ] RestTemplate은 스프링 MVC가 제공해주는 외부와의 HTTP 통신 도구이다. 개발을 하다 보면 다른 API를 호출해야 하는 경우가 많은데, 보통 Spring MVC에서는 RestTemplate을 사용한다. 기본적으로 제공되는 RestTemplate을 그대로 사용하는 것으로는 부족한 부분들이 있으므로 3가지 기능을 더해 더욱 실용적으로 만들어보도..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/JohsM/btrGaILru9N/uoOQ7SDP0ntvRa9PpKYHqk/img.png)
이번에는 Spring Cloud Config 사용 시의 주의사항 중 하나인 baseDir 설정에 대해 알아보겠습니다. 1. Spring Cloud Config 사용 시의 주의사항(baseDir 설정) [ Spring Cloud Config Server의 동작 방식 ] Spring Cloud Config Server는 기본적으로 파일 저장소를 클론하여 관리한다. 그래서 클라이언트가 설정 정보를 요청하면 클론받은 디렉토리의 파일들을 읽어 값을 반환한다. 별도의 설정이 없다면 클론받은 폴더는 config-repo-의 형태로 시스템의 임시 저장소에 쓰여진다고 공식 문서에 설명되어 있다. 예를 들어 리눅스 환경이라면 /tmp/config-repo-에 저장된다. [ 500 Internal Server Error ]..
이번에는 성과있는 팀 회고를 위한 7가지 포맷에 대해 알아보도록 하겠습니다. 1. 성과있는 팀 회고를 위한 7가지 포맷(7 Formats for Great Team Retrospectives) 시니어에게 소프트 스킬은 상당히 중요하다고 생각합니다. 시간이 지나면 자연스럽게 쌓이는 연차와 다르게, 소프트 스킬은 꾸준한 학습과 노력이 필요한 분야라고 생각합니다. 그러다가 마침 좋은 해외의 글을 발견했고, 번역해두고 다시 읽고 싶어서 정리하게 되었습니다. 위의 내용은 해외의 이 글을 참고해 약간의 수정 및 번역한 내용이므로 자세한 내용은 원글을 참고해주세요. [ 회고(Retrospectives) 란? ] 팀 회고(Retrospectives)란 스프린트나 마일스톤 혹은 프로젝트가 끝나면 진행하는 회의로, 이전의..