전체 글39 커머스 정산 파이프라인에 Kafka + Avro 도입하기 — 5,000건을 한 번에 보내는 법 커머스 정산 시스템에 Kafka + Avro를 도입하며 설계한 구조와 그 이유를 정리한다.들어가며커머스 서비스에서 정산(Settlement)은 결제와는 성격이 다르다. 결제는 수 초 내에 응답이 와야 하는 동기 처리지만, 정산은 보통 하루 단위로 쌓인 대량 데이터를 일괄 처리한다. PG사로부터 받아오는 정산 내역 한 건의 페이로드는 작지만, 5,000건씩 묶이면 수십 MB에 달한다.이런 대량 배치성 데이터를 REST API로 받아 DB에 곧바로 꽂으면 문제가 많다. 요청 타임아웃, 트랜잭션 길이 폭증, 다른 서비스로의 데이터 전파 어려움, 재처리 복잡성. 이 글에서는 실제 프로젝트에서 정산 파이프라인에 Kafka + Avro + Confluent Schema Registry를 도입한 과정을 공유한다.다룰.. 2026. 4. 18. 결제 모듈 설계의 디테일 — 인터페이스 너머의 진짜 고민들 이전 글에서 다룬 PaymentGateway 인터페이스 설계에서 한 걸음 더 들어가, Gradle 모듈 분리, 테스트 전략, 반환 타입 설계 원칙을 기록한다.들어가며이전 글(커머스 서비스 결제 구현 시 알아야 할 5가지 핵심 개념)에서 멱등성, 상태 머신, IDOR 등과 함께 PaymentGateway 인터페이스를 이용한 PG 추상화 아키텍처를 소개했다. 이번 글에서는 그 아키텍처를 실제 프로젝트에 적용하면서 마주한 세부 설계 결정들을 다룬다.구체적으로 세 가지를 이야기한다.인터페이스만으로는 왜 부족한가 — Gradle 모듈로 물리적 경계를 만든 이유PG 응답을 그대로 노출하면 안 되는 이유 — 반환 타입과 에러 설계 원칙서비스 테스트와 구현체 테스트를 왜 나눠야 하는가 — 테스트 분리 전략1. 서비스에.. 2026. 4. 7. 결제 기능 직접 만들면서 배운 커머스 핵심 개념 5가지 이 글은 법률 문서 서비스에 내용증명서 발송대행 결제 기능을 구현하면서 배운 커머스 핵심 개념을 정리한 글입니다.들어가며"내용증명서 발송대행" 상품을 결제할 수 있는 기능을 만들면서, 단순한 API 구현을 넘어 커머스 서비스가 돈을 안전하게 다루기 위해 반드시 알아야 할 개념들을 배웠다. 멱등성, 상태 머신, 트랜잭션 함정, 보안 취약점, 그리고 PG 추상화 아키텍처 — 이 5가지를 실제 코드와 함께 정리한다.기술 스택은 Kotlin + Spring Boot 3.5 + TossPayments + JPA/PostgreSQL이며, 헥사고날 아키텍처(Ports & Adapters) 기반으로 구성했다.1. 결제 승인의 멱등성 (Idempotent Payment)커머스에서 가장 무서운 시나리오는 "결제는 됐는데 .. 2026. 4. 1. [AI] Claude Code의 TeamCreate로 TDD 에이전트 팀 구성하기 TL;DRClaude Code의 TeamCreate 기능을 활용하여 TDD(Test-Driven Development)의 Red-Green-Refactor 사이클을 각각 전담하는 에이전트 팀을 구성했다. Team Lead가 요구사항을 태스크로 분할하고, 3개의 전문 에이전트가 순차적으로 TDD를 수행하는 구조다.사전 준비: Agent Teams 활성화Claude Code의 TeamCreate는 현재 실험적(Experimental) 기능이다. 사용하려면 Claude Code 설정 파일(~/.claude/settings.json)에 환경 변수를 추가해야 한다:{ "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" }}이 설정이 없으면 TeamCreate 도.. 2026. 3. 17. [AI] LLM 챗봇 응답속도 모니터링: ELK 구축부터 성능 개선 전략까지 해당 글은 최근 LLM 기반 챗봇 서비스를 개발하면서 경험했던 내용을 기록하기 위함입니다.들어가며LLM 기반 챗봇을 운영하다 보면 "왜 이렇게 느리지?"라는 질문을 피할 수 없다. 하지만 체감이 아닌 데이터로 느린 원인을 파악하지 못하면 개선 방향을 잡을 수 없다.이 글에서는 Spring AI 기반 챗봇에 성능 측정 로깅을 구현하고, ELK 스택으로 수집하여 Kibana 대시보드까지 구성한 과정을 정리한다. 나아가 수집된 데이터를 기반으로 실제 응답속도를 개선할 수 있는 전략들을 함께 다룬다.1. 속도 측정의 핵심 지표LLM의 응답 속도를 평가할 때 사용자 경험과 직결되는 핵심 지표는 다음과 같다.TTFT (Time to First Token)사용자가 요청을 보낸 후, 화면에 첫 번째 응답 토큰이 나타나.. 2026. 3. 12. UUID v7 식별값, 기본키, Primary key [Java, Kotlin] 목적: Spring Boot, Java, Kotlin 환경에서 UUID v7을 사용하는 방법에 대해 제공합니다안녕하세요 :)최근 정보유출 사건이 많은데요 예전부터 다 털린것 같긴하지만 .. 많은 사건의 원인 중에서 식별값에 대한 의견이 나와서 오랜만에 글을 올려봅니다저도 여태 개발하면서 아래와 같이 auto increment를 사용해왔었습니다.. ㅜJava@Id @GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;Kotlin@Id @GeneratedValue(strategy = GenerationType.IDENTITY)val id: Long,ㅋㅋ 딱히 이슈가 없었거든요..그냥 주변 개발자들 사이에서 UUID 사용하는게 좋다는 얘기만 들.. 2025. 12. 5. 이전 1 2 3 4 ··· 7 다음