들어가며 Truth is not determined by a majority vote - Pope Benedict XVI 진실은 다수결로 결정되지 않는다는 말이 있죠. 그러나 DDIA에서 마틴 클레프만이 말했듯이 분산 시스템의 합의 Consensus는 이야기가 다른데요. 노드 간 선거에 의해 quorum 정족수 이상의 득표를 했을 때, 시스템의 어떠한 문제에 대해 합의하는 Raft Consensus Algorithm 뗏목 합의 알고리즘 에 적용되는 이야기입니다. 물론 이 외에도 많은 합의 알고리즘이 있습니다. Raft Consensus Algorithm에 대해서 잘 정리한 블로그가 있네요. Raft에 대한 자세한 설명은 링크로 갈음하겠습니다 :) 모든 노드가 어떤 문제에 동의하는 합의는 분산 시스템에서 ..
결론 Redis pub/sub은 scale out 시에 주의해서 사용해야합니다. Kafka vs Redis Kafka와 Redis의 주된 차이점은 다음과 같습니다. 이벤트의 저장 여부 한 이벤트를 받을 수 있는 Subscriber(Consumer) 개수 이벤트의 저장 여부 Kafka는 발행된 이벤트(토픽)가 각 partition에 저장됩니다. 하지만 Redis는 발행된 이벤트(메시지)를 저장하지 않기 때문에, 구독자가 없다면 해당 이벤트는 사라집니다. 휘발. 따라서, 이벤트의 구독과 발행이 실시간으로 이루어져야 되는 상황인지, 혹은 언제든 발행된 이벤트를 읽으면 되는 상황인지 에 따라 선택이 달라질 수 있습니다. 한 이벤트를 받을 수 있는 Subscriber(Consumer) 개수 Redis pub/su..
들어가며 Redis도 pub/sub을 지원합니다. 일반적으로 많이 사용되는 pub/sub인 Kafka 와는 그 특징이 조금 다른데요. 그에 대한 비교는 다음에 다루도록 하고, 이 문서를 통해 Redis pub/sub 에 대해 이야기합니다. hands-on practice를 통해 사용 방법을 정리합니다. Redis pub/sub 레디스는 메시지(topic)를 주고, 받는 기능을 pub/sub 기능을 제공합니다. PUBLISH 커맨드로 메시지를 발행하고, SUBSCRIBE 커맨드로 channel 을 구독하여 메시지를 수신하는 식입니다. 웹 소켓을 통해 메시지를 전송하는 경우 추가 네트워크 통신이 필요하지만, In-Memory 기반의 Redis는 메시지를 빠르게 주고 받을 수 있는 것이 장점입니다. 현재 Co..