#Backend
24개의 글
-
CloudFront CDN 실전 가이드 1편: CDN과 CloudFront는 어떻게 동작하는가
CDN이 왜 필요한지부터 CloudFront의 구성요소(Distribution·Origin·Behavior·엣지 캐시), 캐싱 동작 원리(캐시 키·Cache-Control·TTL·hit/miss), 무효화 vs 버저닝까지 — Spring Boot 오리진을 올리기 전에 알아야 할 CDN 기본기
-
스프링 배치 6 가이드 종합편: 마켓플레이스 분석 파이프라인 — ETL · KPI 집계 · K8s CronJob
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 시리즈 1~6편을 한 파이프라인에 모으는 종합편. 운영 marketplace schema에서 분석 analytics schema로 어제 주문을 옮기는 daily-etl, 그 위에서 일별·월별 KPI를 집계하는 daily-kpi·monthly-kpi를 PostgreSQL 16 한 인스턴스에 두 datasource로 분리해 올린다. 5편 파티셔닝으로 ETL을 병렬화하고, 3편 멱등 upsert로 재실행을 안전하게, 6편 관측성과 K8s CronJob으로 운영하는 — Lombok 없이 Kotlin으로 풀이한 시리즈 종합편.
-
스프링 배치 6 가이드 6편: 관측성 · 테스트 · 배포 — Micrometer · @SpringBatchTest · Testcontainers · K8s CronJob
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 잡을 관측하고 테스트하고 배포하는 법. 자동 등록되는 Micrometer 메트릭 6종과 Prometheus 노출, MDC로 모든 로그에 jobName·stepName·chunkIndex를 박는 구조화 로깅, 테스트 피라미드·어노테이션 4종·테스트 대역 5종을 배치 컨텍스트로 자체완결 정리, @SpringBatchTest와 JobLauncherTestUtils로 슬라이스·통합·재시작을 검증하는 법, H2가 못 잡는 쿼리를 Testcontainers PostgreSQL 16으로 거르는 이유, 그리고 Java 21 멀티 스테이지 Dockerfile과 K8s CronJob까지 — Lombok 없이 Kotlin으로 풀이한 시리즈 6편.
-
스프링 배치 6 가이드 5편: 성능 · 병렬화 — 멀티 스레드 · 파티셔닝 · 원격 워커 · 가상 스레드
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 잡을 더 빨리 돌리는 법. 단일 스레드에서 멀티 스레드 Step으로 넘어갈 때의 Reader 동시성·재시작 함정, key range로 데이터를 쪼개 파티션마다 독립 StepExecution을 두는 파티셔닝, 워커 프로세스를 분리하는 원격 파티셔닝과 원격 청킹의 차이, JDK 21 가상 스레드가 IO-bound 잡에서 빛나는 지점과 커넥션 풀 한계, 그리고 100만 건 기준 네 방식의 벤치마크 비교까지 — Lombok 없이 Kotlin으로 풀이한 시리즈 5편.
-
스프링 배치 6 가이드 4편: 잡 실행 · 스케줄링 · 운영 — 트리거 · 멱등 파라미터 · 데이터 소스 5 패턴
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 잡을 어떻게 돌리고 운영하는가. JobLauncher와 JobOperator의 역할 분담, @Scheduled·Quartz·K8s CronJob·Argo 중 무엇으로 트리거할지 결정 트리, JobParameters 멱등 키 설계와 incrementer 트레이드오프, 실패 잡 재시작 제어, Actuator·Micrometer 기반 운영 모니터링, 여러 인스턴스에서 같은 잡이 중복 실행되는 걸 막는 법, 그리고 배치가 데이터를 읽어 오는 5가지 패턴(같은 DB·API·Read Replica·분석 Warehouse·CDC)까지 — Lombok 없이 Kotlin으로 풀이한 시리즈 4편.
-
스프링 배치 6 가이드 3편: 트랜잭션 · 실패 처리 — Skip · Retry · 재시작
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 트랜잭션과 실패 처리. 청크 한 사이클에서 한 건이 깨지면 무엇이 rollback되고 무엇이 살아남는지, faultTolerant Step의 Skip·Retry·NoRollback 정책을 예외 의미에 맞춰 설계하는 법, Skip 시 item별 재처리(scan)라는 함정, Listener 6종 카탈로그, ExecutionContext가 재시작 위치를 보존하는 원리, 그리고 JobParameters 멱등 키와 PostgreSQL upsert까지 — Lombok 없이 Kotlin DSL로 풀이한 시리즈 3편.
-
스프링 배치 6 가이드 2편: 청크 지향 처리 — Reader · Processor · Writer
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 청크 지향 처리. read N → process N → write N → commit 한 사이클이 트랜잭션 경계라는 메커니즘부터 ItemReader 6종 선택 트리, ItemProcessor 변환·필터·합성 패턴, JpaItemWriter vs JdbcBatchItemWriter 트레이드오프, PostgreSQL ON CONFLICT 멱등 패턴, 그리고 가장 자주 헷갈리는 청크 크기 vs 페이지 크기까지 — Lombok 없이 Kotlin DSL로 풀이한 시리즈 2편.
-
스프링 배치 6 가이드 1편: Job · Step · 메타데이터의 정체 — Spring Boot 4 · Kotlin 2.3
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 입문. Job·Step·JobInstance·JobExecution 어휘 정의, JobRepository 6 메타데이터 테이블 구조, 첫 Hello Tasklet 구현, 5.x → 6.x 마이그레이션 핵심 변경(Jakarta EE 10·Java 17 baseline·@EnableBatchProcessing 자동화)까지 — Lombok 없이 Kotlin DSL로 풀이한 시리즈 1편.
-
java.util.concurrent 실무 패턴 7선: 스레드 풀부터 동시성 제어까지
ExecutorService, CompletableFuture, CountDownLatch, ConcurrentHashMap, BlockingQueue, Semaphore, ReentrantLock — 실무에서 자주 쓰이는 java.util.concurrent 클래스 7개의 동작 원리와 실전 패턴을 정리한다.
-
스프링부트 실무 가이드 7편: 로깅 전략과 실무
SLF4J, Logback, Log4j2 비교부터 구조화된 로그, MDC, 중앙 집중식 로그 관리까지
-
스프링부트 실무 가이드 6편: 모니터링과 옵저버빌리티
Prometheus, Grafana, 커스텀 메트릭으로 시스템 상태를 실시간 파악하기
-
스프링부트 실무 가이드 5편: 데이터베이스 최적화
인덱스 설계, 커서 기반 페이지네이션, Read Replica로 대용량 데이터 처리하기
-
스프링부트 실무 가이드 4편: Resilience 패턴
Circuit Breaker, Rate Limiter, Bulkhead로 장애에 강한 시스템 구축하기
-
스프링부트 실무 가이드 3편: 이벤트 드리븐 아키텍처
Kafka와 Outbox 패턴으로 신뢰성 있는 이벤트 시스템 구축하기
-
스프링부트 실무 가이드 2편: 캐싱 전략과 Redis 활용
Cache-Aside 패턴부터 캐시 문제 해결까지, 실무에서 바로 적용 가능한 캐싱 완벽 가이드
-
스프링부트 실무 가이드 1편: 동시성 제어와 재고 관리
원자적 UPDATE와 멱등성 키로 동시성 문제를 해결하는 실무 가이드
-
스프링 사전과제 가이드 종합 과제: 마켓플레이스 REST API — Spring Boot 4 · Kotlin 2.3
Spring Boot 4 + Kotlin 2.3 환경에서 1~7편의 모든 패턴을 종합 적용하는 실전 과제. 회원·상품·주문 3대 도메인의 REST API를 7일간 구현하면서 4계층 책임 분리·JPA·테스트·N+1 최적화·JWT 인증·Docker 배포·이벤트 기반 알림까지 한 번에 검증한다. 싱글 모듈과 멀티 모듈(Option A 정석 DIP·Option B 간소화) 중 선택, 기본 70점 + 가산 35점 평가 기준 — Lombok 없이 Kotlin primary constructor·val/var로 풀이한 시리즈 capstone.
-
스프링 사전과제 가이드 7편: Advanced Patterns — Spring Boot 4 · Kotlin 2.3 · Events · Async · 멀티 모듈
Spring Boot 4 + Kotlin 2.3 환경에서 사전과제 차별화를 만드는 고급 패턴. @TransactionalEventListener로 도메인과 부가 기능 분리, @Async + CompletableFuture로 응답 시간 단축, 파일 업로드 검증, URI 버저닝, 계층형·Hexagonal·CQRS 비교, 멀티 모듈 Option A(DIP) vs Option B(간소화) — Lombok 없이 Kotlin primary constructor·val/var로 풀이한 시리즈 7편.
-
스프링 사전과제 가이드 6편: DevOps & Deployment — Spring Boot 4 · Kotlin 2.3 · Docker · GitHub Actions
Spring Boot 4 + Kotlin 2.3 환경에서 사전과제 평가자가 보는 배포 영역. Java 21 멀티 스테이지 Dockerfile, docker-compose의 healthcheck + depends_on 조합으로 DB 실제 준비 보장, GitHub Actions에서 Gradle 캐시 + JaCoCo 커버리지, 프로파일별 application.yml 분리, Actuator로 health·prometheus 노출 — Lombok 없이 Kotlin primary constructor·val/var로 풀이한 시리즈 6편.
-
스프링 사전과제 가이드 5편: Security & Authentication — Spring Boot 4 · Kotlin 2.3 · Spring Security 7, JWT(oauth2-resource-server), BCrypt·Argon2, RBAC
Spring Boot 4 + Kotlin 2.3 환경에서 Spring Security 7과 spring-boot-starter-oauth2-resource-server로 JWT 인증을 표준대로 구현하는 법. JwtDecoder/JwtEncoder Bean 한 짝으로 검증·발급, JwtAuthenticationConverter로 role claim → ROLE_ 매핑, @AuthenticationPrincipal Jwt로 Controller에서 사용자 정보 추출, BCrypt/Argon2 선택 기준, @PreAuthorize와 Service에서의 리소스 소유자 검증, CORS 흔한 함정까지 — 사전과제 보안 영역에서 가점과 감점이 갈리는 포인트를 평가자 시점으로 정리.
-
스프링 사전과제 가이드 4편: Performance & Optimization — Spring Boot 4 · Kotlin 2.3 N+1·페이지네이션·캐싱·QueryDSL
Spring Boot 4 + Kotlin 2.3 환경에서 N+1 문제를 잡는 세 가지 도구(Fetch Join·@EntityGraph·@BatchSize)의 트레이드오프, Page/Slice/Cursor 중 언제 무엇을 쓸지, Caffeine과 Redis 중 어떤 캐시를 고를지, QueryDSL 동적 쿼리와 Projection 적용 기준까지 — 성능 최적화 영역에서 가점과 감점이 갈리는 포인트만 평가자 시점으로 정리했다.
-
스프링 사전과제 가이드 3편: Documentation & AOP — Spring Boot 4 · Kotlin 2.3 Swagger·MDC·Aspect 운용 기준
Spring Boot 4 + Kotlin 2.3 환경에서 Swagger/SpringDoc 운용 기준, MDC 기반 요청 추적과 민감 정보 마스킹, AOP로 횡단 관심사를 분리하는 방법까지 — 사전과제에서 가점과 감점이 갈리는 문서화·로깅·AOP 영역을 평가자 시점으로 한 편에 정리한 시리즈 3편.
-
스프링 사전과제 가이드 2편: Database & Testing — Spring Boot 4 · Kotlin 환경 분리·테스트 피라미드·Testcontainers
Spring Boot 4 + Kotlin 환경에서 환경별 DB 선택과 ddl-auto 정책, Memory Repository 구현 시 주의사항, Test Pyramid에 따른 어노테이션 선택 기준, 테스트 대역(Dummy·Stub·Spy·Mock·Fake) 선택 기준, Testcontainers로 H2 방언 차이가 가리는 버그를 잡는 법까지 — data class·val/var로 Lombok 없이 풀이한 시리즈 2편.
-
스프링 사전과제 가이드 1편: Core Application Layer — Spring Boot 4 · Kotlin 4계층 설계
Spring Boot 4 + Kotlin 환경에서 사전과제 평가자가 반복적으로 지적하는 4계층 설계 포인트만 추렸다. Controller·Service·Repository·Domain 책임 분리, Request → Command 변환, @Transactional(readOnly=true)의 실제 효과, GlobalExceptionHandler 3단 우선순위까지 — Kotlin data class·primary constructor·val/var로 Lombok 없이 자연스럽게 풀이한 시리즈 1편.