전체 글 34

결제 시스템에서 Kafka 중복 소비를 막는 3중 방어 설계

Q. 메시지가 중복 소비될 수 있나요? 네. Kafka의 기본 전달 보장은 at-least-once이므로 컨슈머 로직은 멱등하게 설계하는 것이 원칙입니다. 한 줄로 넘어갔지만, 사실 이 문장이 실무에서는 가장 많은 시간을 잡아먹는 부분입니다. 특히 결제나 이용권처럼 "한 번만 일어나야 하는 일"을 다루는 도메인이라면 더 그렇습니다.이번 글에서는 컨슈머를 멱등하게 만드는 구체적인 방법을 다룹니다. Redis, DB 제약, 대사 배치를 겹쳐 쌓는 3중 방어 구조이고, 마지막에는 그게 실제로 동작하는지 테스트로 증명하는 부분까지 정리했습니다.1. 왜 중복이 발생하는가Kafka가 못 만들어서 중복이 생기는 게 아닙니다. 분산 환경에서 "정확히 한 번"을 보장하는 게 원래 어렵기 때문입니다.메시지 전달 보장은 ..

개념공부 2026.08.02

쿠버네티스(Kubernetes) 완벽 가이드 — 핵심 개념부터 설치, 첫 배포까지

1. 쿠버네티스란 무엇인가?쿠버네티스(Kubernetes, 줄여서 K8s)는 컨테이너화된 애플리케이션의 배포, 확장, 복구를 자동화하는 컨테이너 오케스트레이션 플랫폼입니다. 구글이 내부 시스템(Borg) 운영 경험을 바탕으로 만들어 오픈소스로 공개했고, 현재 CNCF(Cloud Native Computing Foundation)가 관리하는 사실상의 업계 표준입니다. 이름은 그리스어로 '조타수'라는 뜻이며, K8s는 K와 s 사이 8글자를 줄인 표기입니다.도커로 컨테이너를 쓰다 보면 개수가 빠르게 늘어납니다. 서버 10대에 컨테이너 100개를 굴리는 순간, 다음 질문들이 생깁니다.죽은 컨테이너는 누가 다시 띄우는가?트래픽이 몰리면 누가 컨테이너 수를 늘리는가?새 버전 배포 시 어떻게 무중단으로 교체하는가?..

개념공부 2026.07.18

Apache Kafka 완벽 가이드 — 핵심 개념부터 설치까지 한 번에 끝내기

1. Kafka란 무엇인가?Apache Kafka는 LinkedIn에서 개발되어 오픈소스로 공개된 분산 이벤트 스트리밍 플랫폼입니다. 초당 수백만 건의 메시지를 처리할 수 있는 높은 처리량(Throughput)과, 디스크 기반의 내구성(Durability)을 동시에 제공하는 것이 특징입니다.한 줄로 요약하면 이렇습니다."데이터를 발행(Publish)하고 구독(Subscribe)하는, 대용량 처리에 특화된 분산 로그 저장소"실무에서는 주로 다음과 같은 용도로 사용됩니다.서비스 간 비동기 통신 — 주문 서비스 → 결제 서비스 → 알림 서비스처럼 시스템을 느슨하게 연결이벤트 소싱 / 데이터 파이프라인 — DB 변경 사항(CDC)을 다른 시스템으로 실시간 전파로그 수집 — 여러 서버의 로그를 한 곳으로 모아 E..

개념공부 2026.07.18

REST API에서 반드시 기억할 핵심 개념 (공부용)

REST API에서 반드시 기억할 핵심 개념 HTTP MethodMethod역할예시GET조회/users?id=1POST생성/usersPUT전체 수정/users/1PATCH부분 수정/users/1DELETE삭제/users/1 상태 코드 (Status Code)코드의미200 OK성공201 Created생성 성공400 Bad Request파라미터 오류401 Unauthorized인증 필요403 Forbidden권한 없음404 Not Found리소스 없음500 Internal Server Error서버 오류 URL 패턴 규칙잘못된 방식올바른 방식/getUser?id=1/users/1/deleteUser/1/users/1 (DELETE 메서드 사용)/createUser/users (POST 사용) Query ..

JAVA 공부 2025.11.23

코딩테스트 공부할때 알아두면 좋은 문법 정리

코딩테스트 공부할때 알아두면 좋은 문법 정리 1. 입력(Input) 빠르게 받기BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(br.readLine());int n = Integer.parseInt(st.nextToken()); // 예: 입력 "5" → n = 5 2. 문자열 처리String s = "hello world";s.length(); // 11s.charAt(0); // 'h's.substring(0, 5); // "hello"s.split(" "); // ["h..

코테 공부 2025.11.22

시스템 디자인(System Design) 완벽 정리

시스템 디자인(System Design) 완벽 정리 “기능은 잘 돌아가는데, 왜 실제 서비스는 자꾸 느려지고 장애가 날까?”“트래픽만 조금 몰려도 서버가 버티질 못하네… 대체 어디서 막히는 거지?” 서비스가 커질수록 이런 질문들이 자주 등장한다.그리고 이 문제들의 공통된 원인은 대부분 구조(Architecture) 설계 부족이다.기능 구현은 잘 되어 있어도, 서비스 전체가 트래픽을 견딜 수 있는 구조로 설계되지 않았다면 결국 병목이 생기기 마련이다.이 “구조적 병목”을 해결하기 위해 등장한 분야가 바로 시스템 디자인(System Design)이다. 1. 시스템 디자인이란 무엇인가?먼저 큰 그림부터 보자.대부분의 웹 서비스는 아래와 같은 계층 구조를 가진다.위로 갈수록: 사용자와 가까워서 빠르고 가..

CPU 캐시와 메모리 계층 구조 완벽 정리

CPU 캐시와 메모리 계층 구조 완벽 정리 “CPU는 초당 수십억 번 연산한다는데, 왜 내 프로그램은 이렇게 느릴까?” 이 질문의 결론은 생각보다 간단하다.대부분의 병목은 ‘연산’이 아니라 ‘메모리 접근’에서 발생한다.CPU는 미친 듯이 빠르지만, 우리가 일반적으로 말하는 메모리(DRAM)는 그 속도를 절대 따라오지 못한다.이 속도 차이를 메우기 위해 만들어진 게 바로 캐시(Cache)다.오늘은 CPU 캐시가 왜 중요한지, 그리고 실제 프로그램 성능에 어떤 영향을 미치는지 정리해보려고 한다. 1. 메모리 계층 구조 전체 흐름 컴퓨터의 메모리는 위로 갈수록 빠르고 비싸고 작고, 아래로 갈수록 느리고 싸고 크다.레지스터(Register)L1 캐시L2 캐시L3 캐시메인 메모리(DRAM)SSD / ..

CPU 캐시와 메모리 계층 구조 완벽 정리

CPU 캐시와 메모리 계층 구조 완벽 정리 “CPU는 초당 수십억 번 연산한다는데, 왜 내 프로그램은 이렇게 느릴까?” 답은 대부분 메모리에 있다.CPU는 엄청 빠른데, 메모리(특히 DRAM, 우리가 말하는 ‘메모리’)는 상대적으로 너무 느리다.이 “속도 차이”를 줄이기 위해 등장한 게 바로 캐시(Cache)다. 1. 메모리 계층 구조일단 큰 그림부터 보자. 실제 컴퓨터의 메모리는 대략 이렇게 계층으로 되어 있다.위로 갈수록: 빠르고, 용량이 작고, 비싸다아래로 갈수록: 느리고, 용량이 크고, 싸다레지스터(Register) – CPU 안에 있는 진짜 찐-고속 저장소L1 캐시 – CPU 코어 안에 붙어 있는 가장 빠른 캐시L2 캐시 – L1보다 크고 약간 느린 캐시L3 캐시 – 여러 코어가 공유하..

명령어 사이클과 파이프라인 구조 완벽 정리 — CPU가 명령어를 실행하는 방식

1. 명령어 사이클이란?CPU는 프로그램에 저장된 명령어를 한 번에 하나씩 실행합니다.이때 CPU가 한 개의 명령어를 처리하는 전체 과정을 명령어 사이클(Instruction Cycle) 이라고 부릅니다.명령어 사이클은 보통 다음 단계로 이루어집니다.Fetch (명령어 인출)Decode (명령어 해석)Execute (명령 실행)Memory Access (메모리 접근, 필요한 경우)Write Back (결과 저장)이 순서를 CPU가 초당 수억~수십억 번 반복하며 프로그램이 실행됩니다.2. 명령어 사이클 단계별 상세 설명1) Fetch (명령어 인출)프로그램 카운터(PC)가 가리키는 주소에서 명령어를 메모리에서 읽어오는 단계읽어온 명령어는 IR(Instruction Register) 에 저장됨PC는 다음 명..

Redis란? 개념부터 실무 활용 및 적용 방법까지

1. Redis란 무엇인가?Redis는 Remote Dictionary Server의 약자로,인메모리(In-memory) 기반의 Key-Value 데이터 저장소입니다.디스크 기반 DB보다 훨씬 빠른 속도로 데이터를 읽고 쓸 수 있으며,다양한 자료형(String, Hash, List, Set, Sorted Set 등)을 지원해캐시(Cache), 세션(Session), 순위 시스템(Ranking), Pub/Sub 메시징 등에서 널리 활용됩니다.즉, Redis는 “DB처럼 저장하지만, 메모리처럼 빠른 시스템”입니다. 2. Redis를 사용하는 이유항목 RDBMS ..