Free Lines Arrow
본문 바로가기
728x90

전체 글381

Log 수집기능 개발하기 Log 수집기능 개발하기 로그 수집을 위한 기능을 구현할 것이다. 굳이 글로 적는 이유는 AOP 방식이 아닌 EventHandler 로 구현을 할 예정이기 때문이다. Log 수집기능 개발 구조 App 에서 카프카로 데이터를 보내주면 카프카에서 필요한 데이터 들을 다른 곳에서 sub 할수 있게 구현을 할것이다. Log 수집기능 고려사항 기존 서비스 응답시간에 영향을 미치면 안된다. 기존 코드 수정을 최소화 한다. 다양한 로그 형태를 수집 할 수 있어야 한다. 서비스 마다 retun 값이 다르다. 트랜잭션이 있는경우 트랜잭션을 유지 해야 한다. Log 수집기능 구현방식 선택 AOP, EventListener 둘중 하나를 고민했다. 메소드마다 트랜잭션, 리턴값이 다르다는것, 메소드 마다 파라미터 값이 다르.. 2023. 5. 27.
[Spring] CGLIB CGLIB(code generator library) 바이트 코드를 조작해서 동적으로 클래스를 생성하는 기술을 제공하는 라이브러리 jdk와 달리 인터페이스가 필요없다. CGLIB 예제 CGLIB 은 MethodInterceptor를 제공한다. package org.springframework.cglib.proxy; public interface MethodInterceptor extends Callback { Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable; } obj : CGLIB이 적용된 객체 method: 호출된 메소드 args: 메서드를 호출하면서 전달된 인수 proxy: 메서.. 2023. 4. 18.
[Spring] JDK Proxy JDK Proxy 인터페이스 기반으로 프록시를 동적으로 만든다. 즉 인터페이스가 있어야 프록시를 만들수 있다. JDK Proxy 예제 JDK 동적 프록시를 만들기 위해서는 InvoctionHandler 를 구현해주면 된다. package java.lang.reflect; public interface InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable; } proxy: 프록시 자신 method: 호출한 메소드 args: 메소드를 호출할때 전달한 인수 UserServiceInterface 앞서 말했듯이 JDK proxy 는 인터페이스가 필요하다. package com.examp.. 2023. 4. 18.
[ClickHouse] 클릭하우스 MergeTree 테이블 엔진 클릭하우스 테이블 엔진 클릭하우스에서는 다양한 테이블 엔진을 지원한다. 유용한 테이블 엔진이 많기 때문에 조사해볼 필요가 있었다. 클릭하우스를 적용하려는 사람들은 반드시 읽어보면 좋다. MergeTree 테이블 종류 이보다 더 많은 mergetree 가 있지만 실제로 필요한것들 위주로 정리를 했습니다. MergeTree SummingMergeTree AggregatingMergeTree ReplacingMergeTree CollapsingMergeTree (이해가 쉽게 되질 않아 이부분은 다시 정리를 할 예정입니다.) MergeTree 클릭하우스 기능의 핵심. pk 별로 데이터를 정렬하여 저장한다. 대용량 데이터를 테이블에 삽입 할 수 있도록 설계됨. 데이터 수집시 자동 데이터 중복 제거 기능이 있다. .. 2023. 3. 25.
728x90
반응형