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. 들어가며 드디어 마지막 장 정리인 직렬화입니다. 직렬화를 깊게 다루는 아티클을 찾아보기가 쉽지 않았는데 마지막 장까지 큰 도움이 되었습니다. 책의 두께는 그리 부담스럽지 않지만 읽어나가는 것이 순탄한 책은 아니었습니다. 추천해주신 분이 절대 가볍게 읽을 책은 아니다. 라고 하셨는데 확실히 다른 책보다 읽는 시간이 한참 걸린 것 같습니다. 바로 공감이 가서 음음 그렇지~ 하는 부분도 있었고, 이건 왜 이렇게 해야할까?하고 추가 자료를 찾아보는 부분도 많았습니다. 그 과정 속에서 배울 수 있는 점은 정말 많았다고 생각합니다 :) 2. 직렬화 규칙 74: Serializable 인터페이스를 구현할 때는 신중하라.클래스 선언부에 implements Serializable만 붙이면 직렬화 가능한 객체를 만..
1. 들어가며 병렬 프로그래밍은 단일 스레드보다 어렵고 오류를 재현하기 어려워지기도 합니다. 하지만 암달의 법칙이 한계에 달하고 멀티 코어의 시대가 온 지금!! 멀티 스레드를 이용하는 것을 외면할 수는 없습니다. Effective Java에서 병행성에 대해 어떤 규칙을 세웠는지 살펴보도록 하겠습니다 :) 정리하면서 가장 재미있었던 파트라 부득이하게 내용이 많이 길어졌습니다.이게 뭐가 요약본이야..!라고 하실수도 있겠지만..ㅜ 그만큼 설명할 내용이 많고 유익했습니다.과거에 좀 더 잘 알았다면 더 좋게 해결할 수 있었겠다~를 통감한만큼 직접 해당 파트를 읽어보시길 강력 추천 드립니다!!! 2. 병행성 규칙 66: 변경 가능 공유 데이터에 대한 접근은 동기화하라.synchronized 키워드는 특정 메서드나 ..
1. 들어가며 저번 글에서는 거시적인 관점에서 서버를 확장해나가면서 어떻게 구성될 수 있는지 살펴보았습니다.https://rawshrimpsushi.tistory.com/50 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1편 - 트래픽에 따른 서버 확장1. 들어가며 복습 겸 정리하는 대규모 시스템 설계 기초 1편입니다! 다른 분께 추천받아서 읽기 시작했는데 면접 대비를 떠나서 정말 재밌던 책이었습니다. 백엔드하면 역시 대규모 트래픽이rawshrimpsushi.tistory.com 이번 글에서는 규모 확장을 마친 각 서버의 구성 요소에서 어떤 이슈가 발생할 수 있는지, 어떻게 설계하면 좋은지 세부적으로 살펴보도록 하겠습니다. 2. 책 내용 정리1) 서버 응답지연 값 대규모 설계를 하거나 최적화를 한다..