본문 바로가기

개발/대용량트래픽6

Hexagonal Architecture 완전 가이드: Ports와 Adapters로 구현하기 핵사고날 아키텍처(Hexagonal Architecture)란? 출처: https://medium.com/@luishrsoares/whats-hexagonal-architecture-6da22d4ab600 애플리케이션의 핵심 로직을 외부 요소들로부터 격리시키는 것에 중점을 둔 아키텍처입니다. 레이어 간의 원하지 않는 종속성이나 비즈니스 로직으로 인한 사용자 인터페이스 코드의 오염과 같은 객체 지향 소프트웨어 설계의 알려진 구조적 함정을 피하기 위해 Alistair Cockburn에 의해 발명되었습니다. Ports and Adapters Architecture 라고도 불립니다. Hexagonal Architecture의 주요 개념 Central Domain 애플리케이션의 핵심 비즈니스 로직이 위치합니다. .. 2024. 1. 25.
Redis Cluster: 고성능과 고가용성을 위한 데이터 분산 전략 Redis Cluster가 제공하는 것 여러 노드에 자동적인 데이터 분산 일부 노드의 실패나 통신 단절에도 계속 작동하는 가용성 고성능을 보장하면서 선형 확장성을 제공 Redis Cluster 특징 1. Partitioning(파티셔닝) 16384개의 해시 슬롯을 사용하여 데이터를 파티셔닝합니다. 키의 해시 값에 따라 특정 슬롯에 할당됩니다.(CRC16 해시 함수를 사용) 각 Redis 노드는 16384개의 해시 슬롯 중 일부를 책임집니다. 클라이언트는 키의 해시 슬롯을 계산하여 해당 데이터를 저장하거나 검색할 Redis 노드를 알 수 있습니다. 1) CRC16 해시 함수 CRC16은 키를 16비트의 정수 값으로 변환하는데 0 ~ 65535 까지의 범위를 가질 수 있습니다. 2) 해시 슬롯 Redis C.. 2024. 1. 25.
Redis와 Gossip 프로토콜: 빠른 네트워크 상태 동기화 기술 Gossip 프로토콜 Gossip 프로토콜은 분산 시스템에서 정보를 빠르게 전파하기 위한 방식입니다. 각 노드는 주기적으로 이웃 노드에게 정보를 전달하며, 이를 통해 네트워크 내의 모든 노드에게 정보가 빠르게 전파됩니다. PING / PONG 메커니즘 PING 메시지 Redis 노드는 주기적으로 이웃 노드들에게 PING 메시지를 보냅니다. PING 메시지에는 전송하는 노드의 상태와 일부 랜덤하게 선택된 다른 노드들의 상태 정보가 포함됩니다. PONG 메시지 PING 메시지를 받은 노드는 자신의 상태 정보를 담아 PONG 메시지를 응답으로 보냅니다. 상태 업데이트 PING 또는 PONG 메시지를 받으면, 노드는 메시지에 포함된 다른 노드들의 상태 정보를 사용하여 자신의 뷰를 업데이트 합니다. 이웃 노드 파.. 2024. 1. 25.
Redis Sentinel의 이해: 고가용성을 위한 모니터링 및 장애 조치 전략 Sentinel 구조 기능 모니터링(Monitoring) : Redis의 Master / Slave 가 정상 작동하고 있는지 지속적으로 감시 알림(Notification) : Redis 가 failover 되었을 때 pub / sub 로 클라이언트에게 알려주거나 shell script 로 이메일이나 SMS로 클라이언트에게 알려준다. Sentinel은 '"__sentinel__:hello"` 채널을 통해 pub / sub 메시지를 전송합니다. 클라이언트는 이 채널을 구독하여 Sentinel의 이벤트를 수신할 수 있습니다. 주의할 점은 '"__sentinel__:hello"` 채널은 Sentinel의 상태 및 구성 정보를 주기적으로 공유하기 위한 주요 채널이기 때문에 failover 외의 다양.. 2024. 1. 25.
Redis ZSet의 이해: 스코어 기반 정렬의 모든 것 Sorted Set (ZSet) 이란? Set의 특성을 그대로 가지면서 추가적으로 저장된 Value(Member)들의 순서도 관리해줍니다. 순서를 위해 value(member)에 대해 score를 필요에 맞게 설정할 수 있으며, score를 기반으로 정렬됩니다. Sorted Set 구조 Sorted Set 명령어 1. ZADD ZADD key scroe member zadd는 key와 score member를 통해 값을 추가 및 변경 하는 명령어입니다. zset에 각 과일의 이름과 가격 데이터를 추가합니다. 과일 데이터를 저장할 zset의 key는 fruit라고 정하였고 key의 각 value(member)를 apple, banana, melone, pineapple, peach라고 정하였습니다. 1개씩.. 2024. 1. 25.