로직과의 사투/Operational Issues
로깅 룰 구축기 (2) - Jersey에 적용하기
1. 기술 스택 정보 Server Framwork : Spring boot 2.2.1.RELEASE Client Library : Jersey (spring-boot-starter-jersey:2.2.1.RELEASE) Logging Library log4jdbc-log4j2:1.16 logback:1.2.9 (slf4j) 2. RequestFilter 작성 Jersey 라이브러리의 ContainerRequestFilter, ContainerResponseFilter Interface를 구현하여 작성한다. public class ApiFilter implements ContainerRequestFilter, ContainerResponseFilter { @Context private HttpServlet..
로깅 룰 구축기 (1)
1. 시행 개요 MSA (Micro Service Architecture) 현재 담당하는 업무는 각각 독립된 역할을 하는 여러 서비스 (약 40여개의 서비스 존재)들로 구성되어 있다. Interface, Core 처리, Gateway 등 각 역할에 맞는 서비스들이 존재하며 유기적으로 연결되어 있다. 각 서비스는 작고 독립적이며 느슨하게 결합되어 있다. 때문에 서비스 각 독립적으로 배포할 수 있다는 장점이 있다. 단점으로는 서비스 간 통신이 필요하다는 점이다. 이로 인해 복잡해질 수 있으며, 상호작용 테스트가 어렵다. 또한 통합 유지관리가 어렵다는 단점이 존재한다. 위의 관점에서 보았을 때 현 업무는 통합 관리가 정상적으로 이뤄지지 않고 있다. 각 Transaction 이 유기적으로 어떻게 연결되는 지 업..
네이티브 메모리 누수 추적기
Native Memory Leak Detection. 1. 개요 java.lang.OutOfMemoryError: Direct buffer memory 협력 업체에서 통신이 안된단 연락을 받고 해당 프로세스의 로그를 열었을 때 위 에러가 제일 먼저 반겨주었다. Java는 일반적으로 Heap 메모리 영역을 이용하는 경우 JVM에서 관리를 하지만, Direct Buffer를 이용해 네이티브 메모리 영역을 사용하는 경우도 있다. 일례로 java.nio.DirectByteBuffer를 이용하는 경우인데, HeapByteBuffer와 다르게 DirectByteBuffer는 성능적으로 유리하단 점이 있어 DirectMemoryAccess(DMA)를 활용한다. 그런고로 Heap Memory 처럼 Garbage Col..