데이터 유효성 검증: DTO와 Service
데이터 유효성 검증을 Controller(DTO)와 Service 계층으로 나누어 처리하는 이유와 방법을 정리했습니다. @Valid를 이용한 입력 형식 검증(Fail Fast)과 DB 조회가 필요한 비즈니스 로직 검증의 차이를 실제 코드로 분석합니다.
데이터 유효성 검증을 Controller(DTO)와 Service 계층으로 나누어 처리하는 이유와 방법을 정리했습니다. @Valid를 이용한 입력 형식 검증(Fail Fast)과 DB 조회가 필요한 비즈니스 로직 검증의 차이를 실제 코드로 분석합니다.
Spring Boot 애플리케이션 실행 시 발생한 'Could not resolve placeholder' 에러의 원인과 해결 과정을 정리했습니다. application.yml 파일의 들여쓰기 실수로 인해 @Value 어노테이션이 값을 찾지 못했던 사례를 분석합니다.
JPA Entity 클래스를 작성할 때 사용되는 주요 어노테이션(@Entity, @Id, @Column 등)의 역할을 상세히 설명하고, 생성일/수정일과 같은 타임스탬프를 관리하는 두 가지 방법(JPA Auditing vs 수동 주입)을 비교합니다.

LIVErary 프로젝트의 로컬 개발 환경을 Docker Compose로 구축한 과정입니다. 각 컨테이너(MySQL, Redis, Kurento, Coturn)의 역할과 네트워크 구성, 그리고 docker-compose.yml 파일의 상세 설정을 분석합니다.

Python(Django)에서 Java(Spring Boot)로 넘어가며 겪은 패키지 구조와 계층별 역할(Controller, Service, Repository)의 차이를 정리했습니다. 특히 모호했던 '비즈니스 로직'의 개념을 웨이터와 쉐프의 비유를 통해 명확히 정의합니다.
자바 백엔드의 양대 산맥인 JPA와 MyBatis를 비교합니다. 비즈니스 복잡도와 쿼리 복잡도에 따른 선택 기준, 프로젝트 구조의 차이, 그리고 QueryDSL을 활용한 최신 실무 트렌드까지 정리했습니다.

서로 다른 성격의 3가지 공간(열람실, 북토크, 북콘서트)을 단일 테이블 전략(Single Table Strategy)으로 통합하고, 글로벌 권한과 세션 권한을 분리하여 유연성을 확보한 DB 설계 과정입니다. 실시간 데이터와 영속성 데이터를 분리한 최적화 전략도 포함합니다.

WebRTC의 기본 개념과 P2P 통신의 한계를 극복하기 위한 미디어 서버(Kurento) 도입 배경을 정리했습니다. 또한 WebRTC와 WebSocket의 역할 차이, 그리고 시그널링 과정에서의 데이터 흐름을 상세히 설명합니다.

당근의 'User Activation 전사 공통 데이터 레이어' 구축 사례를 분석합니다. Fact 레이어와 3가지 모델(FirstLast, Activation, Status)을 통해 비용 효율성과 신뢰성을 모두 잡은 설계를 살펴보고, DB 설계에 대한 관점을 재정립합니다.

도메인 구매 없이 무료로 HTTPS 환경을 구축합니다. 프론트엔드는 CloudFront CDN을 통해, 백엔드는 nip.io와 Certbot(Let's Encrypt)을 통해 SSL 인증서를 적용하고 보안 그룹 및 CORS 설정을 최적화하는 과정을 정리했습니다.