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) 서버 응답지연 값 대규모 설계를 하거나 최적화를 한다..
1. 들어가며 복습 겸 정리하는 대규모 시스템 설계 기초 1편입니다! 다른 분께 추천받아서 읽기 시작했는데 면접 대비를 떠나서 정말 재밌던 책이었습니다. 백엔드하면 역시 대규모 트래픽이라는 큰 숙제이자 로망(?)이 있다고 생각하는데요. 학생 때 그런 대규모 트래픽을 처리하는 경험을 하기는 쉽지 않습니다. 그나마 웹서버를 직접 구현해보는 과제에서 throughput을 측정하여 점수를 매기므로 간접적으로 경험하긴 하지만 실무에서 대규모 트래픽을 처리할 때 하는 일과는 차이가 좀 있다고 생각합니다.이 책을 읽으면 정말 설계하는 기분을 느끼고 어떤 것을 위주로 고민하게 되는지 접해볼 수 있습니다. 또한 면접 대비로 많이 추천받는 책이기도 하니 한번 정독해보시길 강력 추천 드립니다 :) 책 내용이 방대해서 2번의..