WebFlux 3

Proactor 기반 게임서버에서 Kafka를 IO Completion Port와 통합하기

Reactor 환경에서는 Spring WebFlux와 Reactor-Kafka를 활용해 Kafka 메시지를 Flux 스트림으로 자연스럽게 처리하는 것이 익숙하다. 하지만 Proactor 환경에서는 Kafka를 어떻게 처리할까? 이번 글에서는 C++ 게임 서버에서 Kafka Consumer를 IOCP 이벤트 루프에 통합했던 경험을 공유한다. 1. OS가 어디까지 처리하는지에 따라서 구분한다.데이터가 소켓 버퍼에 수신되면 OS가 수신 이벤트를 전달(reactor)하거나, 나아가서 OS가 직접 IO 작업까지 하고 완료 결과를 통보(proactor)하여서 비동기적으로 IO 멀티플렉싱을 진행한다. 쉽게 설명해서 IO 멀티플렉싱은 읽을 데이터가 왔을때 작업하는 Reactor와 실제 작업이 완료되면 통보받는 Pro..

kafka 2025.09.11

스프링에서 제공하는 Redis 직렬화/역직렬화 도구의 한계와 직접 구현 (Snappy 압축)

Redis에서도 동일하게 클래스 정보를 넘겨주게 되면 저장공간을 사용하게 될 뿐만 아니라, 클래스 정보가 변경되는 경우 캐시 정합성 문제가 생길 수 있다. 따라서 압축을 적용하는 것이 합리적이라 볼 수 있고, 추가적인 CPU 처리를 하더라도 Redis 사용량을 줄일 수 있는 직렬화 도구를 직접 구현하여 적용해보자.   스프링에서 Redis 사용 (spring-data-redis)Redis는 기본적으로 byte 배열을 사용해 데이터를 저장한다.spring-data-redis에서는 데이터를 직렬화해서 Redis에 기록하고 역직렬화하는 도구를 제공한다. 하지만 스프링에서 제공하는 직렬화/역직렬화 도구를 그대로 활용하면 몇가지 문제가 있으며 어떻게 개선할 수 있을지 살펴보자. Spring 진영에서는 Redis를..

backend 2025.02.19

취약점 검출의 구현 프로세스와 가용성 유지를 위한 시도

일찍이 시원 포럼 세미나에 참가해서 기업의 보안 체계와 대응은 Splunk 에서 책임진다고 들었다. 이거간다고 버스타고 난리났다.1번빠따구리 ​Splunk는 ELK 역할을 같이 수행한다는 점에서 우리의 보안 솔루션의 상위 호환(...)이라는 느낌을 받았다. 하지만 굉장한 비용때문에 체급 있는 기업에서만 쓰이고 있다고 한다. ​그렇다면 무거운 비용을 감당할 수 없는 기업들을 대상으로 하는 수요가 많지 않을까.​​클라우드상의 웹서비스 취약점 검출 로직간단하게 SQL Injection 취약점에 대해서 소개하고, 제품에서 어떻게 검출하도록 하는지 프로세스를 소개하겠다. ​SQL prepared statement와 statement의 차이점SQL문장을 미리 컴파일하고 실행 시간동안 인수 값을 위한 공간을 확보할 ..

project/SIEMple 2024.11.17