전체 글 67

동시성 제어

💡 오늘 학습 키워드Race Condition (경쟁 상태)Transaction Isolation Level (트랜잭션 격리 수준)Pessimistic Lock (비관적 락)Optimistic Lock (낙관적 락)Atomic Update (원자적 업데이트)Distributed Lock (분산 락)Idempotency (멱등성)Queue / Waiting Room (대기열) 🎯 학습 내용 정리티켓팅 시스템에서 가장 중요한 문제 중 하나는 동시에 여러 사용자가 같은 좌석을 요청하는 상황을 어떻게 안전하게 처리할 것인가이다.예를 들어 콘서트에 A라는 좌석이 하나만 남아 있다고 가정한다.동시에 10명의 사용자가 A 좌석을 예매하려고 요청을 보낸다면 시스템은 단 한 명에게만 좌석을 판매해야 한다.하지만 단..

분산 트랜잭션과 데이터 일관성

💡 오늘 학습 키워드Distributed Transaction (분산 트랜잭션)Data Consistency (데이터 일관성)Two-Phase Commit, 2PC (2단계 커밋)Saga Pattern (사가 패턴)Orchestration (오케스트레이션)Choreography (코레오그래피)Transactional Outbox Pattern (트랜잭셔널 아웃박스 패턴)Eventual Consistency (최종적 일관성) 🎯 학습 내용 정리모놀리식 애플리케이션에서는 하나의 데이터베이스를 사용하는 경우가 많기 때문에 여러 데이터를 하나의 로컬 트랜잭션으로 묶어 처리하기가 비교적 쉽다. 예를 들어 주문을 생성하면서 재고를 감소시키는 작업이 하나의 데이터베이스에서 수행된다면 다음과 같이 처리할 수 있다..

DB Lock

💡 오늘 학습 키워드Database Lock (데이터베이스 잠금)Pessimistic Lock (비관적 락)Optimistic Lock (낙관적 락)Deadlock (데드락)Replication Lag (DB 복제 지연)Memory Leak (메모리 릭)Cache Pressure (캐시 압력)Configuration Versioning (설정 버전 관리) 🎯 학습 내용 정리동시 사용자가 많은 시스템에서는 단순히 데이터를 조회하고 수정하는 것만으로는 데이터의 정합성과 시스템 안정성을 보장하기 어렵다.예를 들어 재고가 1개 남아 있는 상품에 동시에 두 개의 주문이 들어오면 두 요청이 모두 재고를 1개로 읽고 주문을 성공시킬 수 있다. 데이터베이스에는 재고가 음수가 되지 않았더라도 실제로는 존재하지 않는..

장애 대응

💡 오늘 학습 키워드Observability (관측 가능성)Incident Response (장애 대응)MTTR (평균 복구 시간)Root Cause Analysis (근본 원인 분석)Failover (장애 조치)Redundancy (이중화)Disaster Recovery (재해 복구)Postmortem (사후 분석) 🎯 학습 내용 정리서비스가 정상적으로 동작하는 동안에는 시스템의 안정성을 체감하기 어렵다. 하지만 장애가 발생하는 순간부터는 상황이 달라진다.사용자는 API 응답이 느려졌다는 사실만 알 수 있지만, 개발자는 이것이 애플리케이션 문제인지, 데이터베이스 문제인지, 네트워크 문제인지, 인프라 문제인지 빠르게 판단해야 한다. 따라서 운영 환경에서 중요한 것은 단순히 장애가 발생하지 않는 시스..

Secure Coding

💡 오늘 학습 키워드CORS (Cross-Origin Resource Sharing, 교차 출처 리소스 공유)CSRF (Cross-Site Request Forgery, 사이트 간 요청 위조)XSS (Cross-Site Scripting, 사이트 간 스크립팅)Injection (인젝션 공격)Open Redirect (개방형 리다이렉트)Directory Traversal (디렉터리 탐색)CVE / CVSS (취약점 식별자 / 취약점 심각도 평가) 🎯 학습 내용 정리웹 애플리케이션의 보안은 인증과 인가만 구현한다고 끝나는 문제가 아니다.사용자의 입력을 어떻게 처리하는지, 브라우저가 다른 출처의 요청을 어떻게 허용하는지, 서버가 파일 경로와 URL을 어떻게 다루는지, 민감한 데이터를 어떻게 저장하고 반환..

모니터링 시스템

💡 오늘 학습 키워드Observability (관측 가능성)Spring Boot Actuator (애플리케이션 운영 정보 노출)Metrics (메트릭)Prometheus (시계열 메트릭 수집 및 저장)Grafana (모니터링 데이터 시각화)Loki (로그 수집 및 저장)Scrape (메트릭 수집)Label Cardinality (라벨 카디널리티) 🎯 학습 내용 정리애플리케이션이 정상적으로 동작하는지 확인하는 방법은 단순히 API가 정상적으로 응답하는지만 확인하는 것으로 충분하지 않다.실제 운영 환경에서는 다음과 같은 질문에 답할 수 있어야 한다."현재 서버의 CPU 사용량은 얼마나 되는가?""최근 요청 처리 시간이 증가하고 있는가?""HTTP 5xx 오류가 얼마나 발생하고 있는가?""특정 서비스에서..

GHCR

💡 오늘 학습 키워드GHCR (GitHub Container Registry, GitHub 컨테이너 레지스트리)Container Registry (컨테이너 이미지 저장소)Docker Image (Docker 이미지)Tag (이미지 버전 식별자)GITHUB_TOKEN (GitHub Actions 인증 토큰)Package Permission (패키지 접근 권한)Image Digest (이미지 불변 식별자)CI/CD (지속적 통합 및 지속적 배포) 🎯 학습 내용 정리Docker를 사용하여 애플리케이션을 컨테이너로 실행하려면 먼저 Docker Image를 만들어야 한다. 하지만 애플리케이션을 개발하고 배포하는 과정에서 매번 서버에서 소스 코드를 내려받아 직접 이미지를 빌드하는 방식은 관리해야 할 작업이 많..

좋은 API 설계란? - 2편

💡 오늘 학습 키워드Consistency (일관성)Clarity (명확성)Predictability (예측 가능성)Extensibility (확장성)Maintainability (유지보수성)Separation of Concerns (관심사 분리) 🎯 학습 내용 정리좋은 API를 설계한다는 것은 단순히 REST 규칙을 지키거나 URI를 예쁘게 작성하는 것을 의미하지 않는다.실제 서비스에서 API는 수많은 클라이언트와 시스템이 연결되는 접점이다. 한번 공개된 API는 프론트엔드 애플리케이션, 모바일 앱, 외부 파트너 시스템, 다른 마이크로서비스 등 다양한 환경에서 사용된다.따라서 API를 설계할 때는 "현재 기능이 정상적으로 동작하는가?"뿐만 아니라 다음과 같은 질문을 함께 고민해야 한다.이 API..

좋은 API 설계란? - 1편

💡 오늘 학습 키워드좋은 API란 무엇인가?API 설계가 중요한 이유Kafka/RabbitMQ 적용 🎯 학습 내용 정리Spring Boot 프로젝트를 진행하다 보면 가장 많이 작성하는 기능 중 하나가 API이다. 회원가입 API, 주문 생성 API, 상품 조회 API처럼 대부분의 기능은 API를 중심으로 구현된다. 처음에는 단순히 Controller를 만들고 Service를 호출한 뒤 데이터를 반환하면 된다고 생각하기 쉽다. 하지만 프로젝트 규모가 커질수록 API는 단순히 데이터를 주고받는 통신 수단이 아니라 시스템 전체의 인터페이스 역할을 수행하게 된다. 한 번 공개된 API는 프론트엔드, 모바일 애플리케이션, 다른 백엔드 서비스 등 다양한 클라이언트가 의존하게 되므로 이후 구조를 변경하기도 ..

Spring AI Fundamentals

💡 오늘 학습 키워드Spring AILLMSpring AI 프로젝트 설정ChatClientPromptChat ModelStructured Output 🎯 학습 내용 정리Spring AI를 처음 학습할 때는 단순히 ChatClient를 사용해서 질문을 보내고 답변을 받는 것부터 시작하기보다, LLM이 무엇인지 이해하고 Spring AI가 그 위에서 어떤 역할을 하는지를 먼저 파악하는 것이 중요하다.Spring AI는 AI 모델 자체가 아니라 Spring 애플리케이션에서 AI 기능을 쉽게 통합하기 위한 애플리케이션 프레임워크에 가깝다. 따라서 Spring AI를 제대로 이해하려면 LLM, Prompt, Chat Model 같은 기본 개념과 함께 Spring AI가 제공하는 추상화 계층을 이해해야 한..