Redis와 Valkey

Redis와 Valkey Redis는 원래 오픈소스 프로젝트로 시작되었지만, 최근 라이선스 정책을 변경하여 더 이상 완전한 오픈소스가 아니다. 이에 반해 Valkey는 Redis의 오픈소스 정신을 계승하기 위해 만들어진 프로젝트로, Linux Foundation의 관리 하에 있다. 특징 Valkey Redis 라이선스 BSD 3-clause 오픈 소스 Redis Source Available (제한적 오픈 소스) 커뮤니티 지원 AWS, Oracle 등이 지원하는 커뮤니티 주도 Redis Inc.가 상업적으로 지원 멀티스레딩 I/O 및 명령 실행을 위한 향상된 멀티스레드 아키텍처 대부분의 작업이 단일 스레드 복제 이중 채널 복제 마스터-슬레이브 복제 및 Redis Cluster 지원 확장성 자동 클러스터 장애 조치 및 개선된 확장성 클러스터링 및 샤딩 지원 관찰 가능성 상세한 모니터링을 위한 슬롯별 메트릭 제공 기본적인 모니터링 및 메트릭 RDMA 지원 RDMA에 대한 실험적 지원 기본 RDMA 지원 없음 플랫폼 지원 Linux, macOS, OpenBSD, NetBSD, FreeBSD Windows, Linux, macOS 개발 초점 높은 처리량과 낮은 지연 시간 고성능 및 데이터 지속성 기능 세트 Redis 7.2.4 기반, 일부 고급 기능 부족 더 광범위한 기능 세트 (JSON, TimeSeries 등) 참고 및 출처

October 22, 2024 · 1 min · Me

Server-Sent Events vs. Webhook

Server-Sent Events vs. Webhook 실시간 애플리케이션을 개발할 때 서버와 클라이언트 간의 효율적인 통신 방식을 선택하는 것은 매우 중요하다. 서버 전송 이벤트(Server-Sent Events, SSE)와 웹훅(Webhook)은 모두 서버에서 클라이언트로 데이터를 전달하는 방법이지만, 그 작동 방식과 적합한 사용 사례가 크게 다르다. 서버 전송 이벤트(SSE) 기본 개념 서버 전송 이벤트(SSE)는 HTTP 연결을 통해 서버에서 클라이언트로 단방향 실시간 이벤트 스트림을 전송하는 기술이다. HTML5 표준의 일부로, 웹 브라우저에서 EventSource API를 통해 구현된다. SSE는 표준 HTTP 프로토콜 위에서 작동하며, 별도의 프로토콜 전환 없이 실시간 데이터 푸시가 가능하다. ...

March 8, 2025 · 7 min · Me

Adaptive Polling

Adaptive Polling 어댑티브 폴링은 데이터 수집이나 시스템 모니터링 과정에서 폴링(polling) 주기를 상황과 필요에 따라 동적으로 조절하는 기술이다. 전통적인 고정 주기 폴링과 달리, 시스템의 상태와 환경 변화에 따라 폴링 빈도를 지능적으로 조절함으로써 리소스 사용 효율성을 극대화한다. 작동 원리 어댑티브 폴링은 다음과 같은 핵심 메커니즘을 기반으로 작동한다: 상태 감지(State Detection): 시스템은 현재 상태, 데이터 변화율, 이벤트 발생 빈도 등을 지속적으로 모니터링한다. 알고리즘 기반 의사결정(Algorithm-based Decision Making): 수집된 정보를 바탕으로 최적의 폴링 주기를 결정하는 알고리즘을 실행한다. 동적 조정(Dynamic Adjustment): 폴링 주기는 실시간으로 조정되며, 시스템 활동이 활발할 때는 주기가 짧아지고 비활성 상태에서는 주기가 길어진다. 예를 들어, 네트워크 트래픽이 갑자기 증가하면 시스템은 폴링 빈도를 높여 상황을 더 세밀하게 모니터링하고, 트래픽이 안정되면 폴링 빈도를 낮추어 리소스를 절약한다. ...

March 23, 2025 · 4 min · Me

Smart Polling

Smart Polling 스마트 폴링은 시스템이 데이터를 효율적으로 수집하고 모니터링하는 첨단 기술로, 전통적인 폴링 방식의 한계를 극복하기 위해 발전되었다. 이 기술은 폴링 과정에 지능적 의사결정 요소를 통합하여 리소스 사용 최적화와 시스템 성능 향상을 동시에 추구한다. 스마트 폴링의 기본 개념 스마트 폴링은 단순히 일정 주기로 데이터를 확인하는 전통적인 폴링과 달리, 다양한 컨텍스트 정보와 알고리즘을 활용하여 ‘언제’, ‘무엇을’, ‘어떻게’ 폴링할지 지능적으로 결정한다. 이는 다음과 같은 핵심 원칙에 기반한다: 컨텍스트 인식(Context Awareness): 시스템 상태, 네트워크 조건, 사용자 행동 패턴 등의 컨텍스트 정보를 고려한다. 적응형 의사결정(Adaptive Decision Making): 수집된 데이터와 상황에 따라 폴링 전략을 실시간으로 조정한다. 우선순위 기반 처리(Priority-based Processing): 중요도에 따라 데이터 수집 우선순위를 설정한다. 리소스 최적화(Resource Optimization): 필요한 정보만 필요한 시점에 수집하여 시스템 리소스를 효율적으로 사용한다. 스마트 폴링의 주요 기술 요소 이벤트 기반 폴링(Event-driven Polling) 특정 조건이나 트리거가 발생할 때만 폴링을 수행하는 방식이다. ...

March 23, 2025 · 8 min · Me

UTF-8

UTF-8 UTF-8은 현대 컴퓨팅 환경에서 가장 널리 사용되는 문자 인코딩 방식으로, 전 세계의 모든 문자를 표현할 수 있는 유니코드를 효율적으로 저장하고 전송하기 위해 설계되었다. 웹 페이지의 95% 이상이 UTF-8로 인코딩되어 있을 만큼 인터넷의 표준이 되었으며, 현대 소프트웨어 개발에서 필수적인 요소로 자리잡았다. 역사적 배경과 개발 동기 문자 인코딩의 역사적 진화 컴퓨터는 기본적으로 숫자만 처리할 수 있으므로, 텍스트를 저장하고 표시하기 위해서는 각 문자를 숫자로 매핑하는 인코딩 시스템이 필요했다. 초기에는 ASCII(American Standard Code for Information Interchange)가 영어 알파벳과 기본 기호를 7비트(0-127)로 표현했지만, 영어 외 언어를 처리하기에는 충분하지 않았다. ...

March 12, 2025 · 8 min · Me

Web Socket vs. Long Polling

Web Socket vs. Long Polling 실시간 웹 통신은 현대 웹 애플리케이션의 핵심 요소로 자리 잡았다. 사용자들은 새로고침 없이 즉시 정보를 받아보기를 기대하며, 이러한 기대를 충족시키기 위해 여러 기술이 발전해왔다. 그중에서도 Long Polling과 WebSocket은 실시간 통신을 구현하는 대표적인 방식으로, 각각의 특징과 적용 사례가 다르다. 기본 개념 WebSocket WebSocket은 TCP 연결을 통해 전이중(full-duplex) 통신 채널을 제공하는 프로토콜이다. 초기 HTTP 핸드셰이크 후 연결이 WebSocket 프로토콜로 업그레이드되어, 서버와 클라이언트 간에 지속적이고 양방향 통신이 가능해진다. 연결이 한 번 수립되면 두 방향으로 동시에 데이터를 주고받을 수 있으며, 별도의 요청 없이도 서버가 클라이언트에 데이터를 푸시할 수 있다. ...

March 9, 2025 · 6 min · Me

Server-sent Events vs. Websocket

Server-sent Events vs. Websocket 웹 애플리케이션이 점점 더 실시간적이고 동적으로 발전함에 따라, 서버와 클라이언트 간의 효율적인 통신 방식이 중요해졌다. 전통적인 HTTP 요청-응답 모델은 실시간 데이터 전송에 최적화되어 있지 않기 때문에, 이를 보완하기 위한 기술로 서버 전송 이벤트(Server-Sent Events, SSE)와 웹소켓(WebSocket)이 등장했다. 두 기술 모두 실시간 통신을 가능하게 하지만, 그 작동 원리와 적합한 사용 사례에는 중요한 차이가 있다. 서버 전송 이벤트(SSE) 개념과 작동 원리 서버 전송 이벤트(SSE)는 HTTP 연결을 통해 서버에서 클라이언트 브라우저로 데이터를 단방향으로 스트리밍하는 웹 기술이다. HTML5 표준의 일부로, EventSource API를 통해 구현된다. SSE는 기존 HTTP 프로토콜을 활용하며, 특별한 프로토콜 전환 없이 서버에서 클라이언트로의 실시간 데이터 푸시가 가능하다. ...

March 3, 2025 · 8 min · Me

Streaming APIs

Streaming APIs 스트리밍 API는 서버에서 클라이언트로 데이터를 연속적인 흐름(stream) 형태로 전송하는 인터페이스이다. 전통적인 RESTful API가 요청-응답 패턴을 기반으로 하는 반면, 스트리밍 API는 지속적인 연결을 통해 실시간 데이터를 제공한다. 이러한 접근 방식은 데이터가 생성되는 즉시 클라이언트에게 전달할 수 있어 실시간성이 중요한 애플리케이션에 적합하다. 스트리밍 API의 기본 원리는 클라이언트와 서버 간에 한 번 연결을 수립한 후, 서버가 필요에 따라 데이터를 푸시하는 방식으로 동작하다. 이는 폴링(polling) 방식의 단점인 불필요한 요청과 네트워크 오버헤드를 극복할 수 있게 해준다. ...

February 28, 2025 · 5 min · Me

Pub/Sub APIs

Pub/Sub APIs Pub/Sub 패턴의 기본 개념 Pub/Sub(Publish-Subscribe) 패턴은 메시지 기반 아키텍처의 핵심 패러다임으로, 데이터를 생성하는 발행자(Publisher)와 데이터를 소비하는 구독자(Subscriber) 사이의 느슨한 결합(loose coupling)을 제공한다. 이 패턴에서 발행자는 특정 주제(Topic)에 메시지를 발행하고, 해당 주제를 구독한 모든 구독자는 자동으로 그 메시지를 수신한다. Pub/Sub 패턴의 가장 중요한 특징은 발행자와 구독자가 서로에 대해 직접적인 지식이 필요 없다는 점이다. 발행자는 단순히 주제에 메시지를 보내고, 시스템이 해당 주제의 모든 구독자에게 메시지를 전달한다. 이러한 분리는 시스템 구성 요소 간의 의존성을 줄이고 확장성을 크게 향상시킨다. ...

February 28, 2025 · 8 min · Me

Websocket API vs. Websocket

Websocket API vs. Websocket WebSocket이란? WebSocket은 단일 TCP 연결을 통해 클라이언트와 서버 간의 양방향 통신 채널을 제공하는 통신 프로토콜이다. HTTP와 달리, 연결이 한 번 수립되면 계속 유지되며, 클라이언트와 서버가 서로 독립적으로 메시지를 주고받을 수 있다. WebSocket 프로토콜은 RFC 6455에 정의되어 있으며, ‘ws://’ 또는 암호화된 연결을 위한 ‘wss://’ URI 스키마를 사용한다. WebSocket은 HTTP 핸드셰이크를 사용하여 연결을 시작한 다음, 프로토콜을 WebSocket으로 업그레이드한다. WebSocket API란? WebSocket API는 웹 애플리케이션에서 WebSocket 프로토콜을 사용할 수 있게 해주는 인터페이스이다. 이것은 W3C에서 표준화한 웹 API로, 자바스크립트를 통해 WebSocket 프로토콜을 구현할 수 있도록 한다. ...

February 28, 2025 · 3 min · Me