WooLam

인증 방식의 이해: Session vs JWT와 Spring ArgumentResolver 활용

인증은 단순히 문을 여는 일이 아니라, 사용자가 누구인지 안전하고 효율적으로 증명하는 과정입니다. 세션 방식과 JWT 방식이 어떻게 다른지 살펴보고, 스프링 부트에서 인증을 다룰 때 쓰는 도구들을 정리해 봅니다. 1. Session vs JWT: 상태를 기억할까, 들고 다닐까? Session 방식 (Stateful) 서버가 사용자의 로그인 상...

Spring Boot: 빈 관리부터 전역 예외 처리까지의 핵심 정리

“스프링의 자동화 뒤에 숨겨진 원리를 이해하면, 더 견고한 아키텍처를 설계할 수 있습니다.” 스프링 부트의 빈 등록 원리, 의존성 주입 우선순위, 클라이언트가 이해하기 쉬운 예외 처리 전략을 한 페이지에 정리했습니다. 1. Spring Bean 등록과 스캔의 원리 스프링은 어노테이션으로 객체의 생명주기를 관리합니다. @Component...

락, 캐시, 메시지 큐, 비동기 처리 언제 써야 할까?

들어가며 백엔드 공부를 하다 보면 한 번쯤은 이런 고민을 하게 된다. “이 상황에서 락을 써야 하나?” “캐시를 붙이는 게 맞나?” “MQ까지 도입해야 할까?” “이거 비동기로 돌리는 게 더 나은 거 아닌가?” 처음에는 개념은 알겠는데 언제 써야 하는지 감이 잘 안 잡혔다. 그래서 실제 상황 기준으로 정리를 해봤다. 락(Lock)은 ...

Spring: 개발자의 자신감, 테스트

“테스트란 내가 짠 코드가 내 뒤통수를 치지 않게 막아주는 가장 저렴하고 확실한 보험이다.” 토비의 스프링 2장은 단순히 테스트 프레임워크 사용법을 넘어 개발자가 자신의 코드를 확신하고 꾸준히 개선하기 위한 ‘테스트 정신’을 다룹니다. 1. 테스트의 유용성 대부분의 개발자가 테스트를 귀찮아하는 이유는 “눈앞의 기능을 만드는 데 시간이 부족해서...

Spring Proxy: 핵심 로직을 투명하게 감싸는 '기술적 안경'

“한 줄 요약: 프록시는 원본 객체를 수정하지 않고도 런타임에 부가 기능을 동적으로 주입해주는 투명한 비서다.” 1. 프록시의 정의 IT 관점에서 프록시는 타겟 객체(Target Object) 에 대한 호출을 중간에 가로채서(Intercept) 전처리/후처리 로직을 실행한 뒤 타겟에게 요청을 위임하는 대리 객체입니다. 핵심 메커니즘 Jo...

실무적 선택의 기로: ID 전략부터 서비스 레이어 설계까지

한 줄 요약: 개발은 정답 찾기가 아니라 타당한 근거로 최적의 선택지를 고르는 과정이다. 1. 실무에서 마주하는 기술적 선택지 Q1. PK(ID) 타입: Long vs UUID 무엇이 일반적인가? 결론부터 말하면 비즈니스 요구사항과 DB 전략에 따라 다릅니다. Long (Bigint): 가장 일반적입니다. DB 내부적으로 인덱싱 성능이 ...

API 문서 자동화: Javadoc과 Swagger로 구축하는 소통의 '캐시(Cache)'

한 줄 요약: 문서화는 더 이상 노동이 아니다. 코드와 동기화된 문서는 팀의 연산 비용을 줄여주는 최적화다. 1. Javadoc vs Swagger: 무엇이 다른가? 두 도구 모두 문서화를 돕지만, 누구에게 무엇을 보여줄 것인가에 따라 역할이 나뉩니다. Javadoc (내부용): Java 소스 코드에서 HTML 문서를 생성합니다. 주로 ...

개발자의 기본기: 코드 이전에 갖춰야 할 '기록'과 '소통'의 기술

“한 줄 요약: 뛰어난 코드는 기술력에서 나오지만 위대한 제품은 개발자의 ‘기본자세’와 ‘협업’에서 나온다.” 1. 왜 개발자에게 ‘코드 이전’의 역량이 필요한가? 소프트웨어 개발은 이제 개인의 천재성만으로 굴러가지 않습니다. 프로젝트 규모가 커질수록 ‘개인의 생산성’ 보다 ‘팀의 협업 효율’ 이 성패를 가르기 때문입니다. 협업 비용 절...

재귀의 늪에서 탈출하기: 메모이제이션(Memoization)

“한 줄 요약: 이미 계산한 값은 기록해두자. 기억력은 곧 성능이다.” 1. 메모이제이션(Memoization)이란? 재귀 함수가 동일한 계산을 반복해야 할 때 이전에 계산한 결과를 메모리에 기록(Caching) 해 두었다가 다시 사용하는 기법입니다. 핵심: ‘중복 계산’을 제거해 실행 속도를 크게 끌어올린다. 조건: 동일한 입력에 항상 ...