Spring, Java 개발자 입니다

JAVA

임시

임시 포스팅

JAVA

임시 제목

임시 글

프로젝트

VisualVM 으로 성능 측정하기

갑작스럽게 상승하는 cpu 사용률 혹은 메모리를 어떤 방식으로 확인 할 수 있을까?그리고 어떤 과정을 통해서 위와 같은 상황이 발생하는 것 일까? 우선적으로 성능을 측정하기 위해서 우리가 가장먼저 해볼 것은 각 메서드의 실행 시간이다.메서드가 실질적으로 실행되는 시간을 측정하여 특정 로직의 필요 이상의 시간이 발생 한다면 메서드를 수정하거나 혹은 다른 방법을 통해서 문제를 해결하는 것이 기본이다. 실제로 경험 해 본 결과  대부분의 문제는 DB 에 접근하는 레포지토리 서비스 관련 이슈가 많은 것 같다.   글 쓰는 순서.최근에 성능측정어떤 방식으로 성능 측정을 진행 하는지실제로 효과가 있었는지 visualVM 을 찾기 전 까지의 과정을 그대로 서술 하고 이 어플리케이션을 통해서 확인 할 수 있었던 부분 ..

JAVA/Optional

Optional 과 null 처리에 대한 부분

Null 처리에 관한 탐구와 Optionalnull 처리를 어떤 방식으로 진행 해야 할 것인가에 대한 부분은 언제나 고민이 된다.함수형 프로그래밍을 도입하며 객체지향적 개발을 지향하는 현 시점의 프로그래밍 기법이 과연 null 을 명시적으로 처리하는 완벽한 방법을 제공하지 않는다는 것이 어쩌면 놀랍기도 하다.물론 null 처리를 위한 Optional 이라는 강력한 기능이 추가되었지만 이 기능이란것이 생각보다 많은 부분에서 사용되지 않는다는점, 이미 진행된 프로그래밍에 적용함으로써 일관성을 해칠 수 있다는 점에서 사용을 꺼리게 된다.또한 애초에 모든 null 처리를 Optional 로 진행하는 것을 권장하지 않다 보니 명시적 null 처리를 진행해야 하는 부분이 반드시 발생한다는 것을 생각해보면 Optio..

카테고리 없음

성능 측정을 위해 AOP 활용하기

이슈 어플리케이션을 개발하던 도중 특정 프로세스에서 급격하게 느려지는 현상을 발견했다.어떠한 특정 로직에서 병목현상이 발생하거나 혹은 필요없는 로직을 타고 있다는 의심이 들었고 각 메서드마다 성능을 측정해봐야 한다는 생각이 들었다. 가장먼저 떠오른 방법은 AOP 를 이용하는 방법 이었다.AOP 를 이용해서 각각의 메서드를 측정하여 평균 시간이 오래 걸리는 로직순서대로 하나씩 확인해 볼 예정이었다. 문제해결 1. 리플렉션과 커스텀 애노테이션 모든 메서드의 성능을 확인할 필요는 없다. 특정 프로세스에서 느려지는 현상을 확인하기 위해 모든 메서드에 AOP를 적용하게 된다면 전체적으로 성능이 느려질 것 이고 그에 따라서 제대로 된 성능을 확인하기 어려울 것이라고 생각했다. 제한된 컴퓨팅 파워에서 성능 측정을 위..

트러블 슈팅

상속 관계 매핑 전략

기존의 정의된 일련의 로직을 수정하는 것은 어렵지만 그 중에서도 내가 가장 힘들었던 부분은 객체를 완전히 재정의 하는 부분이다.물론 하나의 객체만 재 정의 한다면 크게 문제가 되지는 않겠지만 여러객체들이 서로 상호작용하거나 혹은 복잡한 상속 관계를 포함하고 있다면 얘기는 달라진다. 최근 하나의 테이블이 너무 많은 정보를 포함하고 있다는 생각이 들어서 리팩토링을 하기로 결정했고 어떠한 방식으로 테이블을 쪼갤 수 있을까를 고민했다. 테이블의 구조는 다음과 같다A 부터 G 까지의 7가지 상태를 모두 단 하나의 테이블로 표현 할 수 있었다.각 상태는 target 이라는 Enum 타입에 따라서 각자 상태의 종류를 구분 할 수 있는 형태였다.target 에 따라서 필요한 필드 값이 모두 다르기 때문에 단일 테이블에..

수달하나
'분류 전체보기' 카테고리의 글 목록