Outbox 패턴

cqrs-icon
2026. 02. 01.·CQRS & Eventing

분산 시스템 환경, 특히 CQRS나 마이크로서비스 아키텍처에서 발생하는 ‘이중 쓰기(Dual Write)’ 문제를 해결하기 위한 패턴입니다. 비즈니스 데이터 처리와 메시지 발송을 하나의 데이터베이스 트랜잭션으로 묶어 원자성(Atomicity)을 보장합니다. DB에 ‘Outbox’라는 별도의 테이블을 두고, 이벤트를 먼저 저장한 뒤 별도의 프로세스가 이를 메시지 브로커로 전송하는 방식을 통해 메시지 유실 없는 ‘적어도 한 번(At-least-once)’ 전송을 보장합니다.

ObjectMapper 개념 및 사용

spring-framework-icon
2026. 01. 31.·Spring Boot

Spring Boot 개발의 필수품, Jackson ObjectMapper의 핵심 기능과 실무 사용법을 총정리했습니다. 직렬화(Serialization)와 역직렬화(Deserialization)의 기본 개념부터 writeValueAsString, readValue, convertValue 등 필수 메서드 5가지의 활용법을 예제 코드로 상세히 설명합니다. 또한, TypeReference를 이용한 리스트 파싱 주의사항과 JavaTimeModule 등 실무 환경에 최적화된 설정 방법까지 함께 다룹니다.

[기술 면접 총정리] 네트워크편

job-interview-logo
2026. 01. 30.·Job Interview

네트워크 기술 면접을 준비하는 개발자분들을 위해 핵심 개념을 체계적으로 정리하는 시리즈입니다.

이번 포스팅에서는 처리량, 지연 시간 같은 네트워크 성능 지표부터 트리, 스타, 메시 등 다양한 토폴로지의 특징을 분석합니다. 또한, 실무 면접에서 단골로 등장하는 L2/L3 스위치와 라우터의 하드웨어적 차이, L7 로드밸런서의 동작 원리 등 계층별 핵심 장비의 역할을 체계적으로 다룹니다.

[DP] Tree DP (백준 2533)

algorithm-icon
2026. 01. 30.·Algorithm

백준 2533번 ‘사회망 서비스’ 문제를 통해 Tree DP의 핵심 원리를 분석합니다. 트리의 레벨별 접근이 실패하는 이유와 함께, ‘부모의 상태가 자식의 선택을 제약한다’는 관계성을 이용해 dp[node][state] 점화식을 유도하는 과정을 설명합니다. 특히 DFS의 후위 순회(Post-order)를 활용한 ‘방문-위임-결정’의 3단계 구현 공식을 제시하고, 이를 적용한 O(N) 자바 코드를 상세히 해설합니다.

[DP] 구간(Interval) DP (백준 11049)

algorithm-icon
2026. 01. 29.·Algorithm

백준 11049번 ‘행렬 곱셈 순서’를 통해 구간 DP(Interval DP)의 핵심 원리를 분석합니다. 선형 DP와의 구조적 차이를 설명하고, 문제 해결을 위한 3가지 식별 힌트(인접 결합, 상태 의존성, N=500)를 제시합니다. 특히 구간 DP의 필수 구현 패턴인 ‘길이-시작점-분할점’ 3중 루프 공식을 상세히 해설하며, 이를 적용한 Java 모범 코드를 제공합니다.

[DP] 0/1 Knapsack (백준 7579)

algorithm-icon
2026. 01. 29.·Algorithm

백준 7579번 ‘앱’ 문제를 통해 0/1 Knapsack 알고리즘의 핵심을 분석합니다. 목표 값(메모리)의 범위가 클 때 ‘비용’을 기준으로 DP 테이블을 설계하는 발상의 전환 과정을 3단계(인덱스 선정, 제약 검증, 정의 뒤집기)로 체계화했습니다. 또한, 1차원 배열 최적화 시 필수적인 ‘역순 순회’의 논리적 근거를 설명하며, 제공된 자바 코드가 왜 최적의 해법인지 기술적으로 해설합니다.

[DP] 2차원 행렬을 통한 최적화 (백준1915)

algorithm-icon
2026. 01. 28.·Algorithm

백준 1915번 문제는 O(N5)에 달하는 완전 탐색의 비효율성을 극복하기 위해 DP를 도입해야 하는 대표적 사례입니다. 본 리포트는 현재 좌표를 ‘우측 하단 끝점’으로 재정의하여 O(NM)으로 최적화하는 과정을 상세히 분석합니다. 특히 min(위, 왼쪽, 대각선) + 1 점화식이 성립하는 기하학적 필연성을 증명하고, 많은 개발자가 범하는 ‘참조 순서(Dependency) 오류’를 케이스 스터디로 다루어 2차원 DP 설계의 핵심 원리를 깊이 있게 전달합니다.

[DP] DFS의 늪에서 3차원 DP로

algorithm-icon
2026. 01. 28.·Algorithm

백준 17070번 ‘파이프 옮기기 1’을 통해 격자 탐색 문제에서 DFS와 DP의 차이를 심층 분석합니다. N이 작을 때는 직관적인 DFS가 유효하지만, 입력 크기가 커질수록 발생하는 ‘중복 연산’의 한계를 지적합니다. 이를 극복하기 위해 (행, 열, 방향)을 상태로 갖는 3차원 DP 점화식을 설계하고 구현하는 과정을 보여주며, 문제 조건에 따라 최적의 알고리즘을 선택하는 기준을 제시합니다.

스레드의 생명주기와 제어 (Lifecycle, join, interrupt)

java-icon
2026. 01. 27.·Java

자바 스레드는 New, Runnable, Terminated 외에도 Lock 획득을 대기하는 Blocked, 신호를 기다리는 Waiting 등 다양한 상태를 가집니다. 개발자는 join()으로 작업 순서를 맞추거나, interrupt()로 안전하게 중단 요청을 보낼 수 있습니다. 스레드의 상태 흐름과 제어 기법을 이해하는 것은 동시성 프로그래밍의 기초입니다.

프로세스와 스레드, 자바 메모리 구조

java-icon
2026. 01. 27.·Java

멀티태스킹은 CPU 시간을 쪼개어 동시성을 흉내 내는 기술이며, 실제 병렬 처리는 멀티프로세싱입니다. 프로세스는 독립된 메모리를 갖는 ‘공장’, 스레드는 스택만 독립적으로 갖고 힙을 공유하는 ‘일꾼’입니다. JVM 메모리 중 스레드끼리 공유하는 Heap 영역은 동시성 문제의 원인이 되기도 합니다. 유연한 확장을 위해 스레드 구현 시 Runnable 인터페이스 사용을 권장합니다.