Stateless란 무엇인가? (수정 중)시작하며 백엔드 인증을 처음 배우면 대부분 이런 흐름으로 헷갈립니다. “Stateless가 좋다는데, 왜 좋은 거지?” “세션이랑 JWT는 뭐가 다른 거야?” “JWT 쓰면 로그인 상태가 유지되는 거야?” “Refresh Token은 왜 또 따로 있어?” 처음에는 이렇...2026년 4월 8일·0개의 댓글
SSE 알림이 "되다 멈춘다"를 끝낸 방법SSE 알림이 "잠깐 되다가 멈추는" 현상을 추적한 트러블슈팅 기록입니다. 단일 원인이 아니라 프록시 버퍼링, 클라이언트 연결 정책, 재연결 누락, 환경 정합성 문제가 복합적으로 얽혀 있었고, 이를 하나씩 풀어간...2026년 3월 24일·0개의 댓글
WebSocket + STOMP 실시간 채팅 설계기WebSocket은 “연결”만 열어준다고 해서 곧바로 실시간 채팅이 완성되지는 않습니다. 실제 서비스에서는 메시지 라우팅 규칙, 구독 구조, 인증 시점, 브로커 한계, 프록시 환경, 권한 검증까지 함께 설계해야 하죠. 이 글은 Spring WebSocket + STOM...2026년 3월 24일·0개의 댓글
OAuth 2.0만으로는 왜 로그인이 부족할까 (OIDC)OAuth 2.0은 리소스 접근 권한을 위임하기 위한 프레임워크이고, OIDC는 그 위에 사용자 인증 계층을 얹은 표준입니다. 둘은 함께 자주 쓰이지만, 해결하려는 문제는 분명히 다릅니다. 이 글은 OAuth 2.0과 OIDC의 차이를 개념으로만 설명하지 않고, 왜 O...2026년 3월 23일·0개의 댓글
CSRF와 CORS 헷갈리지 않고 제대로 이해하기CSRF와 CORS는 이름도 비슷하고 보안·웹 요청과 관련되어 있어 혼동되기 쉽습니다. 하지만 두 개념은 방어 대상도, 동작 레이어도 전혀 다릅니다. 이 글에서는 CSRF와 CORS의 개념을 명확히 구분하고, 각각의 공격 원리와 방어 메커니즘을 살펴본 뒤, 실제 Spr...2026년 3월 23일·0개의 댓글
결합이 터뜨린 연쇄 참조 오류 (헥사고날)Controller → Service → Repository 구조는 시작할 때는 빠르고 편합니다. 하지만 기능이 늘어나면 서비스 간 참조, 인프라 의존, 테스트 복잡도, 유스케이스 분산이 한꺼번에 터지기 시작하죠. 이 글은 계층형 아키텍처의 한계를 실제로 겪고, 헥사고...2026년 3월 23일·0개의 댓글
Java에서 Kotlin으로 전환할 때, 무엇을 먼저 봐야 할까Java에서 Kotlin으로 전환하는 일은 문법을 짧게 바꾸는 작업이 아닙니다. null 처리 방식, 예외 전파, 불변성, 컬렉션 선택, 아키텍처 경계까지 함께 다시 봐야 비로소 전환의 효과가 드러납니다. 이 글은 실제 마이그레이션에서 무엇부터 바꿔야 하는지, 어떤 지...2026년 3월 23일·0개의 댓글
Spring Data JPA 벌크 쿼리의 함정Spring Data JPA의 벌크 UPDATE·DELETE는 성능 면에서는 강력하지만, 영속성 컨텍스트를 우회한다는 특성 때문에 같은 트랜잭션 안에서 1차 캐시와 DB 상태가 어긋나는 문제 를 만들 수 있습니다. 이 글은 @Modifying가 왜 필요한지, clear...2026년 3월 23일·0개의 댓글