Spring 실무 예외처리 전략
Spring 실무 예외 전략은 커스텀 예외로 “실패의 의미”를 타입과 에러 코드로 고정하는 데서 시작한다. ErrorCode+AppException+@RestControllerAdvice로 응답을 표준화하고, Invalid/404/409/401/403/외부연동(502/503) 등으로 분류하면 운영·디버깅이 쉬워진다.
Spring 실무 예외 전략은 커스텀 예외로 “실패의 의미”를 타입과 에러 코드로 고정하는 데서 시작한다. ErrorCode+AppException+@RestControllerAdvice로 응답을 표준화하고, Invalid/404/409/401/403/외부연동(502/503) 등으로 분류하면 운영·디버깅이 쉬워진다.
InetAddress는 자바에서 호스트 이름과 IP(IPv4/IPv6)를 표현하고 DNS 해석을 수행하는 핵심 클래스다. getByName/getAllByName은 블로킹과 JVM DNS 캐시, IPv6 우선순위 영향을 받는다. 역조회는 지연을 유발할 수 있어 주의하며, SSRF 방어 등 신뢰 경계 설계가 중요하다.
코딩 테스트 필수 수학 루틴인 소수 판별, 소인수 분해, GCD/LCM을 MathUtils 한 클래스로 정리했습니다. 소인수 분해는 Map(소수→지수)로 반환해 약수 개수·약수 합·φ(n)·제곱수 판정을 즉시 구현하며, (long)i*i와 (a/g)*b로 오버플로우 위험도 줄였습니다.
@Lob는 JPA에서 필드가 대용량 데이터(LOB)임을 선언해 TEXT/CLOB 또는 BLOB로 저장되게 하는 매핑 애노테이션이다. MySQL은 글자 수가 아닌 바이트 기준이며 utf8mb4에서 한글은 약 3바이트/자라 TEXT(64KB)는 대략 2만 자 수준이다. 목록/검색/캐시까지 함께 설계해야 한다.
백엔드 개발 취업 준비생을 위해 필수적인 보안 및 암호화 개념을 심도 있게 정리함. 복호화가 불가능한 단방향 암호화(해시, 솔팅, BCrypt)의 원리와 복호화가 가능한 양방향 암호화(대칭키 AES, 비대칭키 RSA)의 차이점을 상세히 비교 분석함. 또한 데이터 무결성을 보장하는 HMAC의 동작 방식과 활용 사례를 다루며, Spring Boot 환경에서 외부 라이브러리 없이 표준 패키지만으로 구현 가능한 고품질의 Java 실전 예제 코드를 수록하여 실무 적용력을 높임.
4편에서는 payment-command가 결제 성공 이벤트(PaymentCapturedEvent)를 Kafka(payment-events)로 발행하고, order-command가 이를 구독해 MySQL 주문 상태를 PAID로 갱신한 뒤 OrderPaidEvent를 order-events로 재발행합니다. order-query는 이벤트 타입을 분기 소비해 Redis Read Model을 PAID로 업데이트하며 “결제→주문반영→조회갱신” 체인을 완성합니다.
3편에서는 order-command가 주문을 MySQL(JPA)에 저장하고 Kafka로 OrderCreatedEvent를 발행, order-query가 이를 구독해 Redis Read Model을 갱신합니다. 즉 “쓰기→이벤트→읽기 모델→조회” CQRS 핵심 흐름을 완성합니다.
CQRS 실습 시리즈 2편에서는 1편에서 만든 멀티모듈/서비스 분리 구조를 로컬에서 실행 가능한 상태로 완성합니다. Docker로 MySQL/Redis를 띄우고, 3개 Spring Boot 앱을 8081/8082/8083 포트로 동시에 실행한 뒤 curl로 스모크 테스트를 수행해 다음 편(이벤트/프로젝션) 준비를 끝냅니다.
CQRS 실습 시리즈 1편에서는 주문/결제/주문내역 도메인을 대규모 트래픽 관점에서 바라보며, 쓰기(Command)와 읽기(Query)를 분리하는 목표와 기본 가정을 정리합니다. 이어서 order-command, payment-command, order-query로 서비스 경계를 확정하고, 멀티모듈로 “한 레포, 여러 Spring Boot 앱” 구조를 설계합니다.
CRUD 아키텍처의 성능 한계와 복잡성을 해결하기 위한 CQRS(명령 및 조회 책임 분리) 패턴을 Microsoft Azure 가이드를 기반으로 심층 분석합니다. 비즈니스 로직을 처리하는 ‘명령(Command)’ 모델과 화면 반환에 최적화된 ‘조회(Query)’ 모델을 분리하는 원리부터, 폴리글랏 저장소를 활용한 물리적 분리 전략, 그리고 이벤트 기반의 데이터 동기화와 최종 일관성(Eventual Consistency) 문제까지 실제 Java 코드 예제와 함께 다룹니다.