지금까지 OutOfMemoryError(OOM)을 만나게 되면, 정확한 진단없이 그냥 성능 팀에서 하라는 대로 Xms, Xmx 옵션을 활용해서 힙 크기를 조절했던 것 같다. 내가 스스로 판단할 수 있게끔 지식을 갖추고 연습해보자. 힙 메모리 사이즈 기본값 공식 문서 에 보면 default로 세팅되는 초기 힙사이즈와 최대 힙사이즈에 대해 나와...
카프카의 전반적인 구성과 동작 방식 살펴보기
※ 해당 내용은 ‘실전 아파치 카프카(한빛미디어)’ 2장을 읽고 필요한 부분을 정리한 내용입니다. 분산 메세징 처리를 위한 시스템 구성 출처 : https://www.gavstech.com/all-about-apache-kafka-an-evolved-log/ 1. 파티션 브로커상의 데이터를 읽고 쓰는 것은 파티션이라는 단위로 ...
카프카 개요
※ 해당 내용은 ‘실전 아파치 카프카(한빛미디어)’ 1장을 읽고 필요한 부분을 정리한 내용입니다. Apache Kafka란? 카프카는 분산 메세징 시스템이다 분산 분산 시스템(distributed system, 또는 분산 컴퓨팅) 서로 다른 시스템에 위치한 구성 요소들간에 통신하고 협력하여 구성되는 시...
MSA 기반의 회사 프로젝트에 단위 테스트 코드 적용하기
들어가기 전 부끄러운 얘기지만 내가 회사에서 경험했던 프로젝트에는 테스트 코드가 없었다. 제작 당시 테스트 코드 작성에 대한 얘기가 아예 나오지 않았던 것은 아니지만, 당시 여론은 ‘제작 기간 맞추기도 쉽지 않은데 언제 그걸 하고 앉아있냐’라는 의견이 주를 이뤘다. 나 또한 테스트 코드의 중요성에 대해 잘 알지 못했고, 빡빡한 제작기간으로 인해 밥...
MSA 환경에서 테스트하기(2) - 통합 테스트
※ 해당 내용은 ‘마이크로서비스 패턴(크리스 리처드슨)’ 10장을 읽고 필요한 부분을 정리한 내용입니다. 서비스가 서로 올바르게 상호 작용하는지에 대해서는 단위 테스트만으로는 확인할 수 없다. 예를 들어, 실제 DB에 저장을 했는지, 커맨드 메세지를 올바른 포맷으로, 올바른 채널에 전송했는지 등에 대한 부분이다. 이를 위해, 서비스를 전부 띄워...
MSA 환경에서 테스트하기(1) - 단위 테스트
※ 해당 내용은 ‘마이크로서비스 패턴(크리스 리처드슨)’ 9장을 읽고 필요한 부분을 정리한 내용입니다. 테스트 개요 자동화 테스트 작성 설정 → 실행 → 확인 → 정리 설정 - SUT(System Under Test, 테스트할 대상)와 그 디펜던시로 구성된 테스트 픽스처(test fixture)를 초기화한다. 실행 - SUT 호...
엔티티에서 데이터베이스 키워드/예약어 사용시 발생하는 문제
상황 주문 테이블에 맵핑되는 엔티티를 만들기 위해 ‘Order’라는 클래스 생성 @Getter @Setter @Entity public class Order { @Id private Long id; private OrderStatus orderStatus; } 스프링 부트 실행하고 h2 db에 테이블 생성되...
엔티티에 있는 enum 타입 필드를 DB 컬럼에 어떻게 맵핑시킬 수 있을까 ?
예를 들어 주문 엔티티의 ‘주문 상태’와 같이 enum 타입으로 선언하기 적합한 필드들이 있다. 문자열, 숫자, 날짜 등도 아닌 enum 타입은 DB에 어떻게 저장시켜야할까 ? @Enumerated 1. EnumType.ORDINAL @Enumerated(EnumType.ORDINAL)을 사용하게되면 JPA는 ENUM 클래스의 ord...
WEB - HTTP의 연결모델
connection management allows considerable boosting of performance in HTTP Short-lived connections HTTP 통신을 한 번 할 때마다 TCP에 의해 연결/종료 된다. 따라서, 매 통신 마다 새로운 연결을 맺어야한다. 초기 통신에서는 작은 사이즈의 ...
Message Broker 비교해보기
‘나만의 웨딩 플래너’라는 MSA 기반의 토이 프로젝트를 진행하는데 필요한 Message Broker를 선택하기 위해 몇 가지 Message Broker에 대해 알아보고 결정하자 RabbitMQ 2007년에 출시되었으며 가장 먼저 만들어진 메시지 브로커 중 하나이다. Erlang으로 개발되었으며, Erlang은 기본적으로 Erla...