전체 글 47

Kafka 기본 용어

토픽(Topic)데이터의 주제를 나타내며, 이름으로 분리된 로그.메시지를 보낼 때는 특정 토픽을 지정합니다.파티션(Partition)토픽은 하나 이상의 파티션으로 나누어질 수 있음.각 파티션은 순서가 있는 연속된 메시지의 로그.파티션은 병렬 처리를 지원하고, 데이터의 분산 및 복제를 관리.1 파티션 ← 1 컨슈머 접근 가능레코드(Record)레코드는 데이터의 기본 단위로 키와 값(key-value pair) 구성.오프셋(Offset)특정 파티션 내의 레코드 위치를 식별하는 값.프로듀서(Producer)데이터를 토픽에 보내는 역할.메시지를 생성하고 특정 토픽으로 전송.컨슈머(Consumer)토픽에서 데이터를 읽는 역할.특정 토픽의 메시지를 가져와서(poll) 처리.컨슈머 그룹은 여러 개의 컨슈머 인스턴스를..

Kafka 2025.03.02

Kafka consumer 사용 위치 비교

FastAPI 내부에 구성비동기 처리애플리케이션의 이벤트 루프를 활용하여 메시지 소비asyncio.create_task()를 통해 백그라운드에서 메시지 소비 가능웹 서버와 메시지 처리를 동시에 수행 가능메모리 공유가 용이하여 상태 관리 간편장점단일 애플리케이션 내에서 웹 요청과 메시지 처리 통합 가능리소스 효율적 사용 가능복잡한 아키텍처 불필요개발 및 배포 과정 단순화단점메시지 처리 지연 가능성웹 서버 성능에 메시지 소비 영향복잡한 메시지 처리에 제한적스케일링에 한계 존재장애 발생 시 전체 서비스 영향독립 Consumer 구성동기/비동기 선택 가능전통적인 동기 방식의 무한 루프 사용 가능멀티스레딩이나 별도의 프로세스로 구현 가능메시지 소비에 집중된 애플리케이션 구현다양한 처리 전략 구현 용이장점메시지 처..

Kafka 2025.03.02

Redis 메모리 관리

Redis는 메모리 사용량이 많아질수록 시스템 성능에 영향을 미칠 수 있음.1. 메모리 제한maxmemory 설정을 통해 Redis가 사용할 수 있는 메모리의 최대 양을 제한할 수 있음해당 설정을 통해 메모리 부족으로 인한 시스템 장애 방지 가능(maxmemory를 설정하지 않으면 시스템이 제공하는 모든 메모리 사용 가능 즉, Out of Memory(OOM) 오류 발생가능)2. 메모리 정책memory-policy 설정을 사용하여 메모리 사용 한도에 도달했을 때의 동작을 정의할 수 있음Redis가 메모리를 효율적으로 관리할 수 있음3. Maxmemory 설정redis.conf 파일에서 설정 또는 Redis 서버 실행 시 명령줄 인수로 설정 가능maxmemory 256mb4. Maxmemory 정책 (ma..

Redis 2025.03.02

Redis Cluster

Redis Cluster 란여러 노드에 자동적인 데이터 분산을 하고, 일부 노드가 실패 혹은 통신 단절에도 계속 운영되는 가용성을 제공또한 고성능을 보장하면서도 선형 확장성을 제공일반적으로 샤딩을 할 때 아래와 같이 Hash-Based Sharding을 사용할 수 있다.-> 문제: 샤드가 하나 늘어날 때마다 기존 데이터들을 전혀 다른 곳으로 이동시켜야 한다.-> 해결: HashSlot 사용HashSlot 동작 방식Redis Cluster는 16,384개의 hash slot을 사용각 키는 CRC16 알고리즘으로 해시한 후 16384로 모듈로 연산하여 슬롯 할당슬롯은 클러스터의 노드들에게 분배됨노드 추가/제거 시 해당되는 슬롯만 재배치하면 되므로 효율적특징full-mesh 구조로 통신 (모든 노드끼리 연결되..

Redis 2025.03.02

Redis Cache

캐싱을 사용하여 권한 확인시 DB요청 최소화Redis vs In-Memory Cachein memory 대신 redis 사용 이유단일 서버의 경우 in memory를 사용해도 문제 없음서버를 많이 띄우게 되는 경우 캐싱된 내용을 공유하도록 하기 위해(중복 요청 최소화)Redis는 영속성 보장 (디스크에 데이터 저장 가능)다양한 자료구조 지원 (String, List, Hash, Set, Sorted Set 등)Redis 라이브러리 선택aioredis 대신 redis 사용 이유aioredis는 python 3.11에서 지원 X → redis에 aioredis 내용 통합됨redis-py 라이브러리가 비동기 지원 (redis.asyncio 사용)Redis 연결 방식StrictRedis를 이용하여 직접 커넥션을..

Redis 2025.03.02