Reliable SIP Registration Management Using Redis Keyspace Events
Redis 키스페이스 이벤트로 SIP 등록 갱신 타이머를 영속화해 서버 재시작에도 등록 누락을 줄였습니다. 대규모 환경에서는 보조 키, Goalkeeper, Redis 클러스터 확장과 hz 튜닝으로 안정성을 높였습니다.


Redis 키스페이스 이벤트로 SIP 등록 갱신 타이머를 영속화해 서버 재시작에도 등록 누락을 줄였습니다. 대규모 환경에서는 보조 키, Goalkeeper, Redis 클러스터 확장과 hz 튜닝으로 안정성을 높였습니다.

FastAPI와 SQLite로 사용자 관리 API를 빠르게 만들고, 모듈화된 구조로 기능을 분리하는 방법을 소개했습니다. 의존성 주입과 예외 처리, 자동 문서화를 활용해 유지 보수성과 프로토타이핑 속도를 높였습니다.

FastAPI 프로젝트에서 service와 router를 분리해 결합도를 낮추는 구조를 소개했습니다. 모듈 독립성과 테스트 용이성을 높여 유지보수성과 확장성을 개선하는 방법을 정리했습니다.

Redis와 로컬 캐시를 결합해 조회 성능을 개선한 사례를 공유했습니다. 1만 건 요청 기준 2배 이상 성능 향상을 확인했으며 캐시 동기화 구조와 개선 포인트도 정리했습니다.

Spring Batch에서 Job과 Step의 시작/종료 시점에 실행할 작업을 Listener로 연결하는 방법을 설명했습니다. JobExecutionListener와 StepExecutionListener 등록 예시와 실행 로그 흐름을 함께 보여주었습니다.
![[SpringBatch 연재 11] Job 및 Step 마다 시작/종료시 특정 작업 수행하기](https://devocean.sk.com/thumnail/2024/12/26/95de41563306b50b08e112611c20b460ffdb998402563c664b36435efb370c61.png)
Qdrant의 Collection, Point, CRUD, 검색 기능을 영화 추천 예시로 설명했습니다. 벡터 검색과 필터, Scroll로 유사 영화 추천과 대용량 탐색을 다루었습니다.

Keycloak과 Node.js 샘플 애플리케이션을 연결해 SSO 환경을 구성하는 방법을 안내했습니다. 세션 설정과 권한 보호, CLI 테스트까지 실습 흐름으로 설명했습니다.

에이닷의 Push 알림을 유저 행동 데이터로 분석해 개인화와 발송 빈도의 중요성을 확인했습니다. 클릭률과 피로도를 함께 고려한 Push Utility 기반 최적화 방향도 제안했습니다.

Spring Batch의 Flow Controller로 Step 실행 순서와 분기 방법을 설명했습니다. next, on, from, stop을 이용해 조건별 배치 흐름을 구성하는 방법을 정리했습니다.
![[SpringBatch 연재 10] 스프링배치 플로우 컨트롤 하기](https://devocean.sk.com/thumnail/2024/11/29/20eb6934476f3b2a7a750153647d9f049eb9df33462a0b597ee5acfb5d95cf82.png)
Spring Batch의 기본 Reader/Writer로 부족한 경우를 대비해 커스텀 구현 방법을 다뤘습니다. Querydsl 기반 페이징 Reader와 외부 서비스 호출 Writer를 통해 배치 유연성을 높였습니다.
![[SpringBatch 연재 09] 입맛에 맞는 배치 처리를 위한 Custom ItemReader/ItemWriter 구현방법 알아보기](https://devocean.sk.com/thumnail/2024/11/25/de4422be5fc2a9d400b19cf1e87f25e6a772ee7f8991e22a5d0cdb379ef570a3.png)
Spring Batch의 CompositeItemProcessor로 여러 ItemProcessor를 순차 결합하는 방법을 소개했습니다. 이름·성별 변환과 나이 증가를 분리해 단계별 처리와 재사용성을 높였습니다.
![[SpringBatch 연재 08] CompositeItemProcessor 으로 여러단계에 걸쳐 데이터 Transform하기](https://devocean.sk.com/thumnail/2024/10/22/28954aaf79694daff24eae993730b632354b0632bf2ddd2b26265d25e3f5f5ad.png)
카프카 커넥트의 내부 오프셋 관리 방식과 REST API 기반 조작 방법을 설명했습니다. 예제로 오프셋을 되돌려 레코드를 다시 처리하는 과정을 보여주었습니다.

Spring Batch에서 MyBatisPagingItemReader와 MyBatisBatchItemWriter를 사용하는 방법을 정리했습니다. XML 매퍼 분리와 청크 단위 페이징 처리로 DB 읽기와 쓰기를 구성했습니다.
![[SpringBatch 연재 07] MyBatisPagingItemReader로 DB내용을 읽고, MyBatisItemWriter로 DB에 쓰기](https://devocean.sk.com/thumnail/2024/10/15/769e978e524bb2bf4859b98bf774b70bfa7fbebf1c9329d0d3d4c927120be898.png)
Spring Batch에서 `JpaPagingItemReader`로 JPA 엔티티를 페이지 단위로 읽고 `JpaItemWriter`로 DB에 저장하는 방법을 소개했습니다. 또한 페이지 기반 처리의 누락 가능성과 JPA writer 설정상의 주의점도 함께 설명했습니다.
![[SpringBatch 연재 06] JpaPagingItemReader로 DB내용을 읽고, JpaItemWriter로 DB에 쓰기](https://devocean.sk.com/thumnail/2024/10/2/6fcf6f42a7137411e9966df3cba9520b9bbb7639fc4c76f85169f548440d0786.png)
JdbcPagingItemReader로 DB 데이터를 페이지 단위로 읽고 파일로 저장하는 방법을 다루었습니다. JdbcBatchItemWriter로 파일 데이터를 DB에 빠르게 적재하는 구성도 함께 설명했습니다.
![[SpringBatch 연재 05] JdbcPagingItemReader로 DB내용을 읽고, JdbcBatchItemWriter로 DB에 쓰기](https://devocean.sk.com/thumnail/2024/10/28/c6ab0423c449accde8c39729cbb0156dfab20487cabc4d636480ad301c57ef85.png)
Ktor REST API 서버에서 OAS 스펙을 작성하고 OpenAPI Generator로 모델 코드를 생성하는 방법을 설명했습니다. 생성된 모델을 Ktor 라우트에 연결하고 OpenAPI UI로 스펙을 서빙하는 구성도 함께 다뤘습니다.

Python 연산을 C++ DLL로 넘겨 Thread, OpenMP, SIMD를 적용해 성능을 비교했습니다. 멀티코어 활용 효과는 컸지만 SIMD와 OpenMP의 단순 적용 효과는 크지 않았습니다.
![[Python] C Library 이용해서 성능 높이기(SIMD + 병렬처리, 3편)](https://devocean.sk.com/thumnail/2024/10/22/c7aa5a88cc502ff04b3cc9525642a0c225571d9875845a184e24b6171f75cf47.png)
카프카 커넥트의 개념과 동작 방식을 소개하고, JDBC와 HDFS 커넥터로 파이프라인을 구성하는 흐름을 설명했습니다. 3.5 버전의 오프셋 관리 기능은 다음 글에서 이어서 다룬다고 예고했습니다.
