본문 바로가기

시스템 디자인4

[시스템디자인 4편] 카프카 무중단 전환 목차는 시스템 디자인 목차 에 있습니다. TIL 형식으로 정리했습니다. 나중에 보기 위한 용도로 간단하게 정리했습니다. [시스템디자인 4편] 카프카 무중단 전환 요약 기존 카프카에 생성된 메시지와 신규 카프카에서 생성된 메시지의 데이터를 비교 한 번에 바꾸는게 아니라 점진적으로 변경하는 방식으로 처리 ex) consumer 를 점진적으로 기존 → 신규 카프카로 교체 Transactional messaging 비즈니스 로직과 이벤트 발행이 원자적으로 함께 실행하는 것을 의미 구현 방법 2가지 Transactional outbox pattern 구현 방식에 Polling Publisher, Transaction Log Tailing 있음 Polling Publisher 은 테이블을 Polling 해서 메시지.. 2024. 3. 18.
[시스템디자인 3편] 메시지큐에 이벤트가 대량으로 생성된 경우 목차는 시스템 디자인 목차 에 있습니다. 추후 내용을 더 정리할 예정입니다. 간단하게 정리했습니다. [시스템디자인 3편] 메시지큐에 이벤트가 대량으로 생성된 경우 Case 1. 메시지큐에 이벤트가 대량으로 생성된 경우 Kafka 의 파티션에 대량 이벤트가 생성이 됐다고 가정하겠습니다. 주기적으로 발생하는게 아니라 특정 시간에만 발생했다고 가정합니다. 메시지 이벤트는 MySQL, Redis 등 다양한 스토리지를 사용한다고 가정합니다. 메시지 이벤트가 너무 많이 생성 -> MySQL 부하 -> MySQL session 이 고갈 -> Application Thread 고갈 가정합니다. 메시지큐가 kafka 라고 한다면, 오프셋 랙(offset lag) 이 증가하며, consumer 서버 쪽의 gc, cpu 사.. 2024. 3. 9.
[시스템디자인 2편] 안정 해시 목차는 시스템 디자인 목차 에 있습니다. 추후 내용을 더 정리할 예정입니다. 간단하게 정리했습니다. [시스템디자인 2편] 안정 해시 안정 해시란? 해시 함수를 적용해서 값을 얻습니다. 0~최대 값의 범위를 얻을 수 있으며, 이를 n 개씩 나눈다면 size 는 최대 값 / n 이 될 것 입니다. 이러한 방식을 안정 해시라 합니다. 안정 해시 원리 데이터가 들어왔을 때, 해당 데이터를 hash 함수를 적용시킨 후, 얻은 값을 가지고 0~최대 값 중 어떤 범위에 속하는지 계산합니다. 예를 들면, 0최대 값 (=10) 이라 가정하고 n 은 2라고 가정하겠습니다. 01 이 1구역, 2~3 이 2구역 , xxxx 이런식으로 구역이 나눠진다고 했을 때, 해시함수로 얻은 값이 0이라면 1구역에 저장되는 것입니다. 안정.. 2022. 10. 7.
[시스템디자인 1편] 동기 통신 오래 걸릴 때 해결방안 정리 목차는 시스템 디자인 목차 에 있습니다. [시스템디자인 1편] 동기 통신 오래 걸릴 때 해결방안 정리 동기 패턴 문제점 client 에서 server api 를 호출하는데 응답이 느리다고 가정하겠습니다. 인프라, 네트워크, 기타 등등의 이유로 동기 방식은 request 를 줘서 response 가 올 때까지 기다립니다. 이게 동기 방식의 문제점입니다. 해결방안 message broker 이용 (kafka 같은) 메시지 브로커를 이용하면 client 와 server 간의 결합이 끊어지기에 이런 문제를 해결할 수 있습니다. 그러나 메시지 브로커를 통해 처리하게 된다면 client 에게 응답을 어떻게 줘야할지에 대한 문제점이 있습니다. push 나 문자 이런 것들은 message broker 를 써도 괜찮습니.. 2021. 10. 29.