Home
zz9z9
Cancel

카프카 전달보증 구현하기 - Exactly Once

Exactly Once 메시지 유실없이 정확히 한 번 전달한다 ?? –> 전달보다는 ‘브로커에서’ 정확히 한번만 ‘처리된다’라는게 맞는거같다 -> 근데 컨슈머측에서 처리하다 에러나면, 재송신하는거 아닌가 ? -> 즉, at least once랑 같은데 메시지 중복처리만 안되게하는거 아닌가 ??v -> 아닌거 같다, ...

XSSF로 인한 OOM 에러 그리고 SXSSF와 메모리 사용량 비교해보기

상황 이 글 에서 언급했듯이, poi 라이브러리를 활용해서 엑셀을 만들 때, XSSF 클래스를 사용하면 데이터 건수(엑셀 row)가 많은 경우 OOM 에러가 발생한다. XSSF를 개선한 SXSSF를 사용하면 해당 문제를 해결할 수 있다고 하는데, 실제로 메모리 사용량을 비교해보고자 한다. 메모리 단면을 분석하는 방법은 ...

Java - 자바로 엑셀을 만들기 위한 POI 라이브러리 살펴보기

회사 프로젝트에서 조회한 화면에 대해 엑셀 파일로 다운받게 만들어주는 기능을 구현해야 했다. 방법을 찾다보니 POI 라이브러리라는게 있었고 이를 활용해서 구현할 수 있었다. 하지만, 다른 파트에서 해당 라이브러리를 사용하다 OOM(Out Of Memory)에러가 발생했고, 구현체를 살펴보니 XSSF의 usermodel을 사용하고 있었다. 해당 파트에서...

Java - 자바 메모리 단면 분석하기

언제 메모리 단면을 분석해야할까 ? 메모리 단면인 ‘힙 덤프(Heap Dump)’는 생성하는데 비용이 비싸기 때문에, 메모리가 부족해지는 현상이 지속해서 발생하거나 OOM 에러가 발생했을 때 생성해야 한다. 여기서 말하는 비용이란 다음과 같다 덤프 파일을 생성하는 동안 서비스가 불가능한 상황이 된다. 덤프 생성시 많은 시간이 소요될 수 있...

Java - 자바 힙 메모리 사이즈와 OutOfMemoryError

지금까지 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 호...