
1. 올바른 카프카 컨슈머(KafkaConsumer) 설정 가이드와 내부 동작 분석[ group.protocol ]설정에 대한 설명group.protocol은 consumer가 사용할 그룹 프로토콜을 지정하는 설정으로 현재 classic과 consumer 두 가지 값을 지원한다. 해당 값을 consumer로 설정하면, consumer 그룹 프로토콜이 사용되며 다른 값을 설정하거나 생략하면 classic 그룹 프로토콜이 사용된다.classic 그룹 프로토콜은 Kafka 0.9 이후 기본 제공되어온 전통적인 Kafka consumer group 관리 방식이다. session.timeout.ms, heartbeat.interval.ms 등이 기존 방식 그대로 작동하며 consumer coordinator가 리..

1. COW(CopyOnWrite) 기법과 이를 활용하는 자바와 레디스의 예시들(COW on Java and Redis)[ COW(CopyOnWrite) 기법이란? ]Copy-on-write(CoW, 복사 시 쓰기)는 컴퓨터 프로그래밍과 운영체제에서 데이터 복사를 최적화하기 위해 사용되는 전략이다. COW 방식은 데이터를 복사할 때 전체 데이터를 즉시 복제하는 대신, 기존 데이터에 대한 새로운 참조만 생성해두고, 원본이나 복사본 중 어느 하나가 데이터를 수정하려고 할 때 실제 복사를 진행한다.예를 들어 부모 프로세스 A가 존재하는 상황에서 fork() 메서드를 통해 자식 프로세스 B를 생성했다고 하자. 이때 두 프로세스가 공유하는 페이지들이 다음과 같이 존재할 수 있다. COW 기법은 두 프로세스가 동..

1. Logback AsyncAppender의 동작 방식과 neverBlock 설정의 필요성[ Logback AsyncAppender의 동작 방식과 neverBlock 설정 ]AsyncAppender은 Logback에서 지원하는 Appender 중 하나로, 로그 출력이 애플리케이션의 주요 흐름을 지연시키지 않도록 비동기 형태로 로그 처리를 진행한다. AsyncAppender은 내부적으로 생산자-소비자(Producer-Consumer) 기반으로 동작하며, 이를 위해 내부에 큐(BlockingQueue)가 존재한다. 로그를 찍는 코드를 실행하면 생산자는 로그 이벤트를 큐에 쌓고, 별도의 작업 스레드인 소비자는 큐에서 로그 이벤트를 꺼내서 이를 처리한다. AsyncAppender는 큐에 로그를 먼저 적재하..

1. K6 부하 테스트 시나리오 작성하고 결과 지표 분석하기(K6 Load Testing)[ K6 부하테스트 스크립트 작성하기 ]과거에는 Ngrinder 또는 JMeter 등을 활용해 부하 테스트 또는 성능 테스트를 진행했었는데, 최근에는 그라파나(Grafana) 진영에서 만든 K6 역시 자주 사용되곤 한다. K6 깃허브 페이지의 Releases에 접속하여 실행 가능한 파일을 받고, 다음과 같은 실행 명령어를 통해 손쉽게 부하 테스트를 진행할 수 있다. K6의 핵심 설계 목표는 최고의 개발자 경험을 제공해주는 것이라고 하는데, 손쉬운 실행 방법에서도 이를 체감할 수 있다../k6 run --vus 3 --duration 5s script.js 위의 명령어는 가상의 사용자 3명을 기준으로 5초 동안 부하..

1. MCP(Model Context Protocol)에 대하여 알아보고 IntelliJ와 Claude를 MCP로 연동하기[ MCP(Model Context Protocol)에 대하여 ]MCP(Model Context Protocol)이란 AI 어시스턴트를 콘텐츠 저장소, 비즈니스 도구, 개발 환경 등 다양한 데이터 시스템에 연결하기 위한 새로운 오픈소스 표준이다. 대부분의 LLM(대형 언어 모델)은 학습한 데이터만을 기반으로 동작하기 때문에 실제 작업 환경에 대한 맥락이 부족하여 활용도가 떨어질 수 있다는 문제점이 대두되기 시작했다. 따라서 관련 데이터를 제공하여 LLM의 성능과 활용도를 높이고자 데이터 소스와 AI 시스템을 통합하는 단일 프로토콜이 탄생하게 되었다. 이를 통해 개발 도구(IDE, 코드..