1. 들어가며 앞서 저희는 로그 추적기라는 부가 기능을 기존 프로젝트에 추가하면서 생길 수 있는 문제점과, 그에 대한 해결책에 대해 알아보았습니다. 간단하게 그 과정을 복습해볼까요? 프로젝트 전반의 코드에 모두 적용되어야 하지만, 핵심적인 비즈니스 로직이 아닌 '부가 기능'이다.그래서 기존 코드에 영향을 주지 않고 적용될 수 있으면 좋겠다.그래서 템플릿 메서드 패턴 -> 전략 패턴 -> 프록시 패턴 -> 동적 프록시 및 CGLIB 적용라는 과정을 통해서 기존 코드를 바꾸지 않고, 프록시 클래스도 자동생성을 맡기면서 코드 양도 훨씬 줄일 수 있었습니다.저희가 구현한 기능들은 사실 Spring에서 구현해서 제공하고 있습니다. 그것이 AOP이고, 오늘은 Spring에서 AOP를 어떤 방식으로 제공하고 있는지 ..
1. 문제 상황프로젝트에서 에러 로깅을 어떻게 할 지 고민하는 상황이었습니다. 제 프로젝트는 RestControllerAdvice를 통해 예외 처리를 하고 있습니다. @RestControllerAdvice("생략")public class AttendeeExceptionAdvice { @ExceptionHandler(ActivatedSessionExistsException.class) public ResponseEntity activatedSessionExistsHandler() { return RESPONSE_CONFLICT; } @ExceptionHandler(CourseNotFoundException.class) public ResponseEntity cours..
1. 들어가며 지금까지 RabbitMQ와 Kafka에 대해 자세히 알아봤습니다. 여러 메시지 큐가 있겠지만 그 둘만 다뤘던 이유는, 그 둘이 가장 널리 쓰이기도 하지만 여러 성능 테스트 결과 상반된 경향이 있었기 때문입니다. 오늘은 실제로 그 둘을 테스트 해보고 어떤 차이점이 있는지, 그리고 그 이유가 무엇인지 살펴보도록 하겠습니다.각각 결과를 살펴보면 각 Message Queue가 어디에 적합할 지 결론에 다다를 수 있을 것이라 생각합니다 :) 2. RabbitMQ vs Kafka 오늘 글은 다음 논문, 글들을 참조하여 쓰여졌습니다! 그래프는 모두 R로 작성되었습니다. Dobbelaere, Philippe & Sheykh Esmaili, Kyumars. (2017). Kafka versus Rabbit..
1. 들어가며 Message Queue 하면 가장 먼저 떠오르는 두 개는 Kafka와 RabbitMQ 아닌가 합니다.그래서 오늘은 Kafka에 이어 RabbitMQ에 대해 정리해보고자 합니다.똑같은 메시지 큐가 뭐가 다른가 싶겠지만 둘은 구현된 방식에 큰 차이가 있습니다. 또한 그 구현 방식에 따라 특화된 분야도 매우 다릅니다. 둘의 차이점은 다음 글으로 남겨두고 오늘은 RabbitMQ가 어떤 아키텍처로 구성 되어있는지 살펴보도록 하겠습니다. 2. RabbitMQ 아키텍처RabbitMQ란?메시지 생성자와 소비자 사이에서 메시지를 중계해주는 '메시지 브로커'입니다. 비동기 메시지를 사용하는 프로그램들 사이에서 데이터를 송수신하며 교환소(Exchange)와 Queue의 구조로 이루어져 있습니다. - Rab..
1. 들어가며 오늘은 Kafka의 클라이언트인 Producer와 Client가 브로커 노드와 통신하기 위해 사용하는 NetworkClient에 대해 알아보도록 하겠습니다. NetworkClient란?Kafka 클라이언트와 브로커 노드들의 연결 상태를 관리하고 브로커 노드로 데이터를 쓰거나 브로커 노드에서 데이터를 읽는 역할을 한다. 클라이언트가 브로커에 보낼 ClientRequest를 만들면, NetworkClient가 중간에서 요청을 중개해줍니다. 그림을 보면 알 수 있듯이 NetworkClient는 Client 측에 있는 구현체입니다. 오늘은 이 구현체가 어떻게 I/O Multiplexing을 통해 빠른 동시 연결을 달성하는지 알아보도록 하겠습니다. 오늘 글은 다음 글과 함께 내부 코드를 보며 ..
1. 개요 이번엔 Kafka의 큰 세가지 축(Producer - Broker - Consumer) 중 하나인 Consumer에 대해서 알아보고자 합니다.Producer에 대해서 아직 안 읽어보셨다면 다음 글을 먼저 읽어보시는 걸 추천드립니다.https://rawshrimpsushi.tistory.com/46 Kafka - Producer1. 개요 앞서 살펴본 것처럼 Kafka는 여타 Message Queue처럼 Producer - Consumer 구조를 가지고 있으나 세부적인 디테일은 크게 다릅니다. 오늘은 그 중 Producer를 좀 더 심층적으로 알아보고자 합니다. 앞rawshrimpsushi.tistory.com 오늘 글은 다음 글을 기반으로 소스 코드, 다양한 자료를 보며 작성되었습니다!https..