데이터 베이스 접근을 모니터링을 해보기모니터링 툴로는 Prometheus - Grafana으로 작동하였습니다. 1) 슬로우 쿼리(조회)로 인한 현상을 확인해보기SELECT * FROM shop_order WHERE seq_shop_order = 1 AND SLEEP(10) = 0 // QueryDsl queryFactory .select(Projections.constructor(OrderDetail.class, orderEntity.orderName, orderEntity.price, orderEntity.regId)) .from(orderEntity) .where(orderEntity.id.eq(seqOrderId) ..
캐시 미래 요청 혹은 반복되는 요청을 위해 데이터를 일시적으로 저장해놓고 원본 소스 접근 없이 엑세스할 수 있도록 도와주는 하드웨어 혹은 소프트웨어 구성 요소를 가리킨다. 데이터 요청을 할 때 원하는 데이터 캐시 저장소에 있다면 해당 데이터로 빠르게 반환되는데, 이를 캐시 히트라고 하며 캐시에 없는 경우는 캐시 미스라고 한다. 캐시 사용 유의점 ● 캐시 설계 데이터 결과가 빈번하게 변경되거나 저장공간이 제한적인 경우 캐시를 사용하지 않는것이 좋다. 반복적이고 데이터 결과가 변경없는 요청에 대해서 사용하는 것이 좋다. 시스템의 요구 사항과 성능 목표를 고려해야한다. ● 캐시 키 키값에 의해서 캐시가 처리되는데, 해당 키가 정말 유일한 키인지 확인이 필요하다. 중복된 키값에 의해서 원하지 않는 다른 결과를 ..
1. 발견 실무에서 복잡한 비즈니스를 다루는 로직에서 도저히 이해가 안가는 상황이 나오게 되었다. 상황은 이렇다. 첫 번째로 조회한 객체에는 객체 내부에 컬렉션을 가지고 있는데, 다음 메서드가 실행되기 전에는 비어있는 컬렉션인 것을 확인하였으나 메서드 실행 직후 내부 컬렉션에 객체들이 존재하는 것을 확인하였다. 분명 해당 객체를 어디선가 수정메서드를 통해 변경하는일이 없는데도 말이다. 도저히 납득이 가지 않아서 객체를 파라미터로 넘겨주고 복잡한 비즈니스를 파고파고 들어가서 해당 상태가 바뀌는 시점을 체크해보았으나 해당 메서드에서 바뀌는 이유를 종 잡을 수 없었다. 그때 혹시나 스쳐가는 생각이 JPA에서 캐시 기능을 사용하여 동일성을 보장해주는 것이 생각났다. 위에서 사용한 비즈니스에 조건의 범위가 다른 ..
#1에서 아파치 카프카를 설치해서 쓰고(pub), 읽는(sub) 작업까지 해보았다. 외부 연동에 대해서 알아보자. 다시시작하는 도중 에러가 났는데 ERROR Failed to clean up log for __consumer_offsets 가 나서 찾아보니 카프카가 retension 주기만큼 데이터를 가지고 있다가 삭제하는데, 삭제해야하는 로그파일이 존재하지 않아서 나는 오류라고 한다? (윈도우가 주로 일어난다고한다.) 해결방법은 server.properties에 있는 log.dirs 경로의 내용을 모두 삭제하거나 그냥 linux를 쓰라고 하더라... 6. 카프카 커넥트 데이터베이스나, 전통적인 메시징 시스템 혹은 많은 애플리케이션에서 사용중인 데이터를 카프카 커넥트를 통해 임포트(추출)해와서 카프카의 ..
아파치 카프카의 핵심 기술 '이벤트 스트리밍' 이벤트 스트리밍은 소프트웨어가 상시 작동 할 수 있도록 하는 기술적 기반이다. 데이터베이스, 센서, 모바일 장치, 클라우드 서비스등 이벤트 소스로부터 실시간으로 데이터를 캡처하는 작업을 한다. 또한, 이 데이터를 다른 대상에게 라우팅(최적의 경로 전송)을 해준다. 사용할 수 있는 예시로는 다음과 같다. 증권, 은행, 보험등 실시간으로 지급 및 금융 거래 처리 물류, 자동차 , 화물 등 실시간 추적 모니터링 IoT나 기타장비에서 센서데이터 지속적으로 캡처하고 분석 소매업, 호텔, 여행 과 같은 고객 주문 수집, 대응 병원과 같은 곳에서 응급 상황이 발생할 때 적시에 치료를 하기위해 모니터링 회사 여러부서에서 생성한 데이터들을 연결, 저장, 소비 가능하게 함 데..
RFC란 Request For Comments의 약자로 의견 요청이라는 뜻이 담겨져있다. 위키에 따르면. 인터넷 기술에 적용 가능한 새로운 연구 , 혁신 , 기법등을 아우르는 메모를 의미한다. 인터넷 협회에서 기술자, 컴퓨터 과학자들이 RFC메모 형태로 의견을 제출해서, 또 다른 전문가의 비평을 받거나 생각을 전달한다.또한 인터넷 국제표준화 기구(IETF)는 일부 RFC를 인터넷 표준으로 받아들이기도 한다. https://www.rfc-editor.org/standards 여기를 확인하면 표준으로 채택된 RFC문서가 무엇이 있는지 확인할 수 있다. Document Retrieval » RFC Editor (rfc-editor.org) 이곳에서 RFC문서들을 확인할 수 있는데, 우리가 사용하는 어플리케이션..
인터셉터란? 스프링에서 제공하는 제공하는 기능으로 Dispatcher Servlet과 매핑된 URL의 Controller의 사이에서 존재하며 해당 Controller 호출 전과 후에 요청, 응답을 참조하거나 가공할 수 있는 필터라고 볼 수 있다. 주 용도로는 인증/인가 작업이나, API 호출에대한 로깅, 요청 응답 정보 가공등이 있다. 여기서 의문이 드는점이 있는데, 사실 필터랑 인터셉터랑 무슨 차이가 있냐이다. 1. 관리 주관자가 다르다. 필터 : 웹 Servlet 컨테이너 , 인터셉터: 스프링 컨테이너 2. Request,Response 객체를 새로운 객체로 넣을 수 있나? 필터 : Yes , 인터셉터 : No -> 필터에서는 request,response를 다음 필터로 넘겨주는 필터 체인을 쓰나, ..
필터란 말그대로 지정한 URL 패턴에 대해 거름막 역할을 해주는 기능이다. 가장 중요한 것은 서블릿을 투과한 후 Filter를 거치고 그 이후에 스프링 영역(DispatcherServlet)에 접근하게 된다. 주요 사용하는 용도로는 인코딩, XSS, CORS 등에 관한 설정을 주로 한다. 이전 Spring에서는 web.xml에서 Java파일을 Filter를 추가하여 사용 할 수 있었는데, SpringBoot에서는 Annotation을 사용하여 Filter를 추가 할 수있다. 먼저 사용할 CustomerFilter를 Servlet이 제공하는 Filter인터페이스를 구현하여 만든다. 이때, chain.doFilter(request,response);를 해주지 않으면 다음 필터를 넘어가지 않게 되니 주의해서 ..