BlueNyang

전체 글

지금까지 작성된 모든 글을 확인해 보세요.

총 5페이지 중 2페이지

SpringNo. 40

[Spring Boot | JPA] 바쁜 일정 속 복잡한 조회 쿼리 해결기

초기 외래 키 필드 중심의 설계를 객체 지향적 JPA 연관관계 매핑으로 리팩토링하여 쿼리 메서드와 JPQL을 통해 데이터 조회 생산성을 높였습니다. 동적 쿼리 해결을 위해 QueryDSL 도입을 시도했으나, 설정 지연과 일정 압박으로 인해 JPQL의 패치 조인을 활용하여 N+1 문제를 해결하는 방향으로 타협했습니다. 결과적으로 제약 조건 속에서 두 기술을 적절히 혼용해 프로젝트를 완수했으며, 미도입된 QueryDSL은 향후 해결할 기술 부채로 남겼습니다.

#jpa#jpql#n-plus-1-problem#join-fetch#querydsl
SpringNo. 39

[Spring Boot] Redis를 활용한 Refresh Token Rotation(RTR) 구현

JWT의 토큰 탈취 위험을 해결하기 위해 빠른 속도와 TTL 기능을 갖춘 Redis를 활용하여 Refresh Token을 관리하는 것이 효과적입니다. 여기에 토큰 재발급 시 기존 토큰을 폐기하고 새 토큰을 발급하는 RTR 기법을 적용하여 보안을 대폭 강화할 수 있습니다. Spring Boot 환경에서 이를 연동하면 RTR 기반의 안전한 토큰 검증 및 재발급 시스템을 손쉽게 구현할 수 있습니다.

#redis#refresh-token-rotation#ttl#spring-data-redis
SpringNo. 38

[Spring Boot] OAuth2 + JWT 완벽 가이드 (feat. Kakao Login)

본 글은 Spring Security 6와 OAuth2 Client를 활용해 카카오 로그인을 연동하고 서비스 전용 JWT를 발급하는 방법을 설명합니다. 카카오 로그인 성공 후 사용자 정보를 데이터베이스에 저장 및 갱신하는 비즈니스 로직의 구현 과정을 다룹니다. 최종적으로 인증 완료 시 자체 JWT를 생성해 리다이렉트하는 핸들러를 구성하고 이를 Security 설정에 통합하여 무상태 인증 시스템을 완성합니다.

#oauth2#jwt#spring-security#social-login#stateless-authentication
SpringNo. 37

[Spring Boot] Hibernate 6.x에서 UUIDv7 사용하기

UUIDv7은 시간 순 정렬이 가능한 128비트 식별자로, 분산 환경에서 고유성을 보장하고 DB B-Tree 인덱스의 삽입 성능을 대폭 개선합니다. Java 환경에서 커스텀 생성기로 구현하여 BINARY(16) 타입으로 저장하는 것이 공간 최적화에 유리하며, 조회 시에는 반드시 문자열이 아닌 UUID 객체 타입을 전달해야 합니다. 대규모 분산 시스템이나 대용량 트래픽 환경에서 높은 효율을 발휘하지만, 단순한 소규모 서비스에는 오버엔지니어링이 될 수 있어 상황에 맞는 도입이 필요합니다.

#uuidv7#hibernate#b-tree#database-index#querydsl
Git & GithubNo. 36

[Git & GitHub] GitHub Flow를 활용한 효율적인 협업 가이드

효율적인 협업을 위해 프로젝트 성격에 맞는 Git 브랜치 전략이 필요하며, 특히 GitHub Flow는 단순하고 직관적인 구조로 빠른 배포에 적합합니다. 개발자는 원본 저장소를 Fork하여 개별 작업을 진행하고, 최신 마스터 브랜치 동기화와 코드 리뷰(PR)를 거쳐 메인 코드에 병합하게 됩니다. 이와 같은 체계적인 협업 프로세스는 코드 품질을 높이고 안정적인 서비스 운영을 가능하게 만듭니다.

#github-flow#branch-strategy#merge-vs-rebase#pull-request#fast-forward
SpringNo. 35

[Spring Boot] AOP, 모듈 분리와 무엇이 다른가?

AOP(관점 지향 프로그래밍)는 핵심 비즈니스 로직에서 반복되는 공통 부가 기능(횡단 관심사)을 분리하여 독립적인 모듈로 관리하는 프로그래밍 패러다임입니다. 핵심 로직이 부가 기능을 직접 호출해야 하는 OOP와 달리, AOP는 핵심 로직의 수정 없이 부가 기능을 자동으로 주입(Weaving)합니다. 이를 통해 '할 일(Advice)'과 '적용 위치(Pointcut)'를 정의한 Aspect로 공통 기능을 관리하여 코드의 가독성과 유지보수성을 극대화합니다.

#aop#oop#cross-cutting-concerns#weaving#pointcut
Java 풀스택 아카데미No. 34 멀티캠퍼스 JAVA 풀스택 개발자 아카데미 6회차

[멀티캠퍼스] 풀스택 개발자 아카데미 (30) - Deployment

이 글은 React와 Spring Boot 기반의 애플리케이션을 Docker를 통해 컨테이너화하여 일관성 있는 실행 환경을 보장하는 배포 방법을 설명합니다. GitHub Actions를 활용하여 GHCR(GitHub Container Registry)에 이미지를 자동으로 빌드 및 푸시하는 CI/CD 파이프라인을 구축합니다. 최종적으로 Docker Compose와 Traefik을 사용해 다중 컨테이너를 구성하고 서버 환경에서 효율적으로 서비스를 연동 및 로드 밸런싱하는 방식을 다룹니다.

#부트캠프후기#멀티캠퍼스it부트캠프#[현대이지웰] JAVA 풀스택 개발자 아카데미 6회차#docker#github-actions#traefik#docker-compose
Java 풀스택 아카데미No. 33 멀티캠퍼스 JAVA 풀스택 개발자 아카데미 6회차

[멀티캠퍼스] 풀스택 개발자 아카데미 (29) - Spring Boot & JWT (2)

Access Token의 만료로 인한 로그인 풀림 현상을 해결하기 위해 Spring Boot 백엔드에 Refresh Token 검증 및 재발급 API를 구현했습니다. 프론트엔드(React)에서는 Axios Interceptor를 활용해 토큰 만료 에러(401) 발생 시 자동으로 재발급 요청을 보내고 기존 요청을 재시도하도록 설정했습니다. 이를 통해 사용자에게 끊김 없는(Seamless) 안전한 로그인 유지 경험을 제공할 수 있습니다.

#부트캠프후기#멀티캠퍼스it부트캠프#[현대이지웰] JAVA 풀스택 개발자 아카데미 6회차#refresh-token#axios-interceptor#token-reissue
Java 풀스택 아카데미No. 32 멀티캠퍼스 JAVA 풀스택 개발자 아카데미 6회차

[멀티캠퍼스] 풀스택 개발자 아카데미 (28) - Spring Boot & JWT(1)

세션 기반 인증의 한계를 보완하고 서버 확장성을 높이기 위해 Spring Boot 3.x와 Spring Security를 활용한 무상태(Stateless) JWT 인증 구현 방법을 단계별로 소개합니다. JWT 토큰의 생성 및 검증을 담당하는 Provider와 요청을 필터링하는 커스텀 Filter의 실제 구현 코드를 자세히 설명합니다. 마지막으로 Postman을 통해 로그인 및 토큰 인증 API 테스트를 진행하여 동작을 검증하고, 향후 Refresh Token 도입 및 프론트엔드 연동 계획을 제시하며 마무리합니다.

#부트캠프후기#멀티캠퍼스it부트캠프#[현대이지웰] JAVA 풀스택 개발자 아카데미 6회차#jwt#stateless-authentication#filter-chain#spring-security
Java 풀스택 아카데미No. 31 멀티캠퍼스 JAVA 풀스택 개발자 아카데미 6회차

[멀티캠퍼스] 풀스택 개발자 아카데미 (27) - Spring Boot(3)

스프링 부트는 복잡한 설정 없이 `MultipartFile`을 통해 간편한 파일 업로드 기능을 지원하며, 파일 용량 제한은 설정 파일에서 쉽게 조절할 수 있습니다. 파일명 중복을 방지하기 위해 고유한 UUID를 생성하고, `WebConfig`를 통해 보안과 관리에 유리한 로컬 외부 경로에 파일을 매핑하여 저장합니다. 또한, Ajax와 REST API를 활용하면 페이지 새로고침 없이 비동기식으로 파일을 업로드하고 결과를 바로 확인할 수 있는 세련된 UI를 구현할 수 있습니다.

#부트캠프후기#멀티캠퍼스it부트캠프#[현대이지웰] JAVA 풀스택 개발자 아카데미 6회차#multipart-file#uuid#external-resource-mapping
BlueNyang

BlueNyang

BlueNyang의 개발 log

카테고리

  • Development
  • Framework
  • Language
  • Dev Tools
  • DevOps & Infra
  • Studies

페이지

© 2026 BlueNyang. All rights reserved.

Made with Nuxt.js and Directus