Processing math: 100%

전체 글 552

[Spring for Apache Kafka] 1. Basic

1. Connecting to KafkaFactory구성 요소역할ProducerFactory메시지 전송을 위한 팩토리 생성ConsumerFactory메시지 수신을 위한 팩토리 생성 FactoryListenerFactory의 Listener는 프로듀서/컨슈머가 만들어지거나 닫힐 때 호출하는 메서드를 정의한 인터페이스생성된 프로듀서/컨슈머의 bean id는 factory의 beanName + kafka client id 패턴으로 정의됩니다. 예제더보기public class MyProducerFactoryListener implements ProducerFactory.Listener { @Override public void producerAdded(String id, Producer produce..

카테고리 없음 2025.05.06

[실전 카프카 개발부터 운영까지] 4. 카프카의 내부 동작 원리와 구현

고승범 님의 "실전 카프카 개발부터 운영까지" 책을 정리한 포스팅 입니다.1. 카프카 리플리케이션동작예제) 토픽 생성더보기/opt/bitnami/kafka/bin/kafka-topics.sh --create --topic topic_chat \--bootstrap-server localhost:9092 \--replication-factor 2 \--partitions 2 예제) 토픽 메시지 생성더보기/opt/bitnami/kafka/bin/kafka-console-producer.sh --topic topic_chat \ --bootstrap-server localhost:9092 예제) 토픽 조회더보기 /opt/bitnami/kafka/bin/kafka-topics.sh --topic topic_ch..

카테고리 없음 2025.05.06

[Spring WebSockets] 2-3. STOMP: 부가 기능

1. Order of Messages브로커에서 클라이언트로 보내는 메시지는 clientOutboundChannel을 통해 전달됩니다.이 채널은 내부적으로 ThreadPoolExecutor(멀티스레드 풀)로 운영되기 때문에, 메시지들이 여러 스레드에서 처리됩니다.그래서 클라이언트가 실제로 받는 메시지 순서가 서버에서 보낸 순서와 다를 수 있습니다. 순서 보장 설정예제) Outbound 더보기@Configuration@EnableWebSocketMessageBrokerpublic class PublishOrderWebSocketConfiguration implements WebSocketMessageBrokerConfigurer { @Override public void configureMessa..

Spring/Spring 2025.05.04

[Spring WebSockets] 2-1. STOMP: 주요 내용

1. STOMP란원래는 스크립트 언어(Ruby, Python, Perl 등)에서 엔터프라이즈 메시지 브로커와 통신할 수 있도록 만들어진 텍스트 기반 메시징 프로토콜.TCP, WebSocket 등 신뢰할 수 있는 양방향 스트리밍 프로토콜 위에서 동작 가능.텍스트 지향이지만, Payload(본문) 는 텍스트 또는 바이너리 모두 지원 가능. 2. 이점항목설명이점@Controller를 통한 메시지 핸들링@MessageMapping 메소드에 메시지 자동 분배 (STOMP destination 기준)- WebSocketHandler 하나로 모든 메시지 처리 X- 코드 구조가 모듈화되고 깔끔해짐Spring Security를 통한 보안 설정인증,권한 제어 가능(STOMP destination + 메시지 타입 기준)- ..

Spring/Spring 2025.05.03

[실전 카프카 개발부터 운영까지] 3. 카프카 기본 개념과 구조

고승범 님의 "실전 카프카 개발부터 운영까지" 책을 정리한 포스팅 입니다.1. 카프카 기초 다지기구성 요소정의핵심 특징비고/예시토픽메시지를 분류하는 이름메시지의 논리적 그룹화프로듀서-컨슈머 간 송수신 단위채팅 시스템, 로그 시스템 등파티션토픽을 나누는 단위병렬·분산 처리 가능 (1 컨슈머당 1 파티션 읽음)파티션 수 조절 가능 (늘리기 O, 줄이기 X)성능 향상이 목적세그먼트파티션 로그 파일을 나누는 단위일정 크기로 자동 분할됨메시지 순서 보장00000000000000000000.log (오프셋을 의미함)리플리케이션파티션을 브로커들에 복제리더-팔로워 구조 (읽기/쓰기, 읽기)고가용성 (장애 복구)팩터 2: 유실 가능팩터 3: 유실 없음 예시) 토픽 생성더보기kafka-topics.sh --boot..

카테고리 없음 2025.05.03

[실전 카프카 개발부터 운영까지] 1. 카프카 개요

고승범 님의 "실전 카프카 개발부터 운영까지" 책을 정리한 포스팅 입니다. 0. 배경링크드인 내부에서 발생하고 있는 이슈들을 해결하기 위해 만들었음문제설명데이터가 너무 많음유저 증가에 따라 데이터도 폭발적으로 증가 (기존 시스템으로는 감당 불가)이기종 간 연결 호환 안됨서로 다른 시스템/서비스 간에 데이터를 주고받기 위해 복잡한 코드가 필요함실시간 반영 어려움사용자 데이터 변화를 빠르게 다른 시스템에 전달하고 반영하기 어려움➡️ 이를 해결하기 위해 "Kafka" 개발 Kafka고성능 대용량 실시간 데이터 스트리밍 플랫폼어디선가 생긴 데이터를 여러 시스템에 실시간으로 빠르고 정확하게 보내주는 서비스 링크드인 실제 예시뉴스피드 서비스누군가 직장 정보를 변경하면 그 내용이 지인 뉴스피드에 즉시 뜨는 서비스➡️..

카테고리 없음 2025.05.02

[Spring WebSockets] WebSockets

1. WebSocket 소개WebSocket 프로토콜 (RFC 6455)클라이언트와 서버 간에 하나의 TCP 연결 위에서 양방향(full-duplex) 통신 가능.HTTP를 기반으로 동작하지만, HTTP와는 다른 프로토콜이다.80, 443 포트 사용기존 방화벽 규칙 재사용 가능. 참고사항WebSocket 서버가 nginx 같은 프록시 서버 뒤에 있을 경우, 업그레이드 요청을 프록시가 제대로 전달하도록 설정 필요.클라우드 환경에서는 WebSocket 지원 여부를 클라우드 제공업체 문서에서 확인해야 함. 2. WebSocket API설정WebSocketConfigurer 오버라이딩 예제더보기@Configurationpublic class WebsocketConfig implements WebSocketCon..

Spring/Spring 2025.05.02

[몽고DB 완벽 가이드] 8. 트랜잭션

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. 트랜잭션 소개데이터베이스의 논리적 처리 단위MongoDB는 복제 셋 및 샤드 클러스터 환경에서도 트랜잭션을 지원함 2. 트랜잭션 사용법세션 기반 구조MongoDB는 클라이언트-서버 간의 세션 관리를 기반으로 트랜잭션을 구현함분산 환경에서 클라이언트의 연속적인 작업을 추적하도록 하기 위함구분논리 세션 (Logical Session)서버 세션 (Server Session)정의클라이언트의 트랜잭션 흐름 추적 객체실제 트랜잭션 실행 담당역할트랜잭션 시퀀스, 시간, 인과관계 추적요청 추적 및 세션 상태 관리위치클라이언트 애플리케이션 내부MongoDB 서버 내부관계서버 세션과 연결되어 동작논리 세션이..

Database/MongoDB 2025.04.30

[몽고DB 완벽 가이드] 7. 집계 프레임워크

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다.1. 파이프라인, 단계 및 조정 가능 항목집계 프레임워크항목설명정의파이프라인 기반 데이터 분석·가공 도구 모음입력하나의 컬렉션출력가공된 도큐먼트 스트림단계(Stage)파이프라인의 구성 단위- 각 단계는 도큐먼트 스트림을 입력으로 받고, 가공된 도큐먼트 스트림을 출력함옵션(knobs / tunables) 각 단계는 파라미터 설정 가능 (원하는 방식으로 데이터 처리 가능) 2. 단계 시작하기: 익숙한 작업들aggregate()연산자기능matchskip, limitproject필드 선택 및 재구성$sort정렬 예제더보기db.movies.aggregate( {$match: {..

Database/MongoDB 2025.04.30

[몽고DB 완벽 가이드] 6. 특수 인덱스와 컬렉션 유형

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. 전문 검색을 위한 인덱스검색 관련 키워드 (일치, 정규 표현식 등) 은 한계가 존재함쿼리 속도가 느리며, 문법과 같은 언어 특성을 반영하기도 쉽지 않음 텍스트 인덱스문자열 기반의 데이터를 빠르게 검색할 수 있도록 도와주는 인덱스역색인 구조로 저장됨 (단어 -> 문서 목록)항목장점한계비용/성능 문제검색 성능빠른 텍스트 검색복잡한 조건 검색에는 제한 있음 - 정규식복잡한 쿼리는 성능 저하 발생텍스트 처리전처리 지원1. 토큰화2. 소문자화3. 정지어 제거 (a, the, is 등)4. 형태소 분석5. 중복 제거문법적 의미나 자연어 이해는 어려움비용 발생- 형태소 분석 - 인덱스 갱신인덱스 구조/..

Database/MongoDB 2025.04.30