본문 바로가기

전체 글46

Java Heap Dump 분석하기 Java 로 개발된 애플리케이션을 운영하던 중, OOM(Out Of Memory) 등과 같은 Heap 사용량이 순간적으로 증가하여 발생하는 문제들을 분석하기 위해 사용되는 Heap Dump에 대해 소개할 수 있도록 하겠습니다. Heap Dump 는 Heap 의 높은 사용량을 만든 주범을 알아내기 위해 사용되며, 장애가 났을 때의 Heap 상태를 기록으로 남겨 그 당시에 어떤 Java 객체들이 많이 만들어졌는지 분석하는데 사용됩니다. Heap Dump 만들기 Heap Dump 하기 앞서, Dump 하고 싶은 애플리케이션 프로세스 PID 를 찾아내야 합니다. $ jps jmap 툴을 이용한 Heam Dump 파일 만들기 $ jmap -dump:format=b,file=[FILE_NAME] [PID] Heap.. 2020. 11. 9.
객체 지향 설계의 5가지 원칙 SOLID 원칙 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP (Single Responsibility Principle) OCP (Open / Closed Principle) LSP (Liskov Substitution Principle) ISP (Interface Segregation Principle) DIP (Dependency Inversion Principle) SRP 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야 한다. 하나의 책임의 기준은 때론 그 역할이 클 수도, 작을 수도 있기 때문에 사실 모호할 수 있다. 책임의 범위를 구분 지을 땐 변경 범위를 생각하자 변경이 있을 때 해당 변경으로 인한 파급 효과가 적다면 단일 책임 원칙을 잘 따른 것이라.. 2020. 11. 4.
Spring AOP AOP란 Aspect-Oriented Programming 의 약자이다. 서로 다른 곳에서 사용되고 있는 Aspect(관점) 들을 모아 모듈화 하는 기법이다. 즉, 다시 말해 Aspect 은 여러 곳에서 공통으로 적용되는 기능을 의미한다. (e.g. 로깅, 트랜잭션, 접근 제어 등의 보안) 용어 정리 Target Object 부가 기능을 부여할 대상 Spring 에서는 대게 Service 계층이 해당 Advice 부가 기능을 정의한 구현체 Aspect가 어느 시점에 적용이 될 지를 결정 아래의 여러 어노테이션을 통해 적용 시점을 변경시킬 수 있다. @Before 메소드 실행 전 기능 수행 @After 메소드 결과와 상관없이 메소드가 완료 된 이후에 기능 수행 @AfterReturning 메소드가 성공적으.. 2020. 10. 19.