GoWoong의 개발 블로그
close
프로필 배경
프로필 로고

GoWoong의 개발 블로그

  • 분류 전체보기 (219) N
    • 크래프톤 정글 (83)
    • 크래프톤 정글 (컴퓨터 시스템: CSAPP) (57)
      • 3장 프로그램의 기계수준 표현 (16)
      • 6장 메모리 계층구조 (6)
      • 7장 링커 (6)
      • 8장 예외적 제어 흐름 (7)
      • 9장 가상 메모리 (16)
      • 11장 네트워크 프로그래밍 (6)
    • 클라우드 (4)
      • [AWS] AWS IoT Core (4)
      • DevOps (0)
    • Deep Dive (51) N
      • CS (15)
      • OS (33) N
      • 아키텍처 (2)
    • 백엔드 개발 (1)
      • 파이썬 (0)
      • 자바 스프링 (1)
    • 자격증 공부 (5)
      • AWS Cloud Practitioner (2)
      • 정보처리기사 (1)
      • AWS SAA-C03 (2)
    • 앱 개발 (5)
      • Flutter (5)
    • AI & LLM (1)
    • 문제 기록 (0)
    • 커뮤니티 참석 후기 (2)
    • 일상 기록 (1)
    • 사이드프로젝트 (7)
  • 홈
  • 자소서
  • 포트폴리오
  • 이력서

[사이드 프로젝트] 디지털 굿즈 플랫폼 개발기 #7 - Spring Security + JWT + Redis로 구축하는 강력한 인증 시스템 (2편: 하이브리드 로그인 구현)

1편에서는 Redis 환경 구축과 Security 설정, 그리고 JWT 컴포넌트들을 만들었다. 이제 이 부품들을 조립하여 실제로 작동하는 로그인 서비스와, 웹(Web)과 앱(App) 클라이언트 모두를 만족시키는 하이브리드 컨트롤러를 구현해 본다.1. UserDetailsService 구현 (DB 연결고리)Spring Security는 기본적으로 우리 DB에 User 테이블이 있는지 모른다. 시큐리티가 유저 정보를 가져올 수 있도록 연결해 주는 어댑터가 필요하다.CustomUserDetailsService.javaUserDetailsService 인터페이스를 구현하여, 이메일로 회원을 찾고 시큐리티 전용 객체(UserDetails)로 변환해 주는 로직을 작성했다.package com.creators.pho..

  • format_list_bulleted 사이드프로젝트
  • · 2026. 1. 19.
  • textsms

[사이드 프로젝트] 디지털 굿즈 플랫폼 개발기 #6 - Spring Security + JWT + Redis로 구축하는 강력한 인증 시스템 (1편: 설계와 설정)

회원가입 기능을 완성했으니, 이제 서비스의 대문인 로그인(인증) 시스템을 구축할 차례다. 단순히 "로그인이 된다"를 넘어, 보안성과 확장성을 고려하여 JWT(JSON Web Token) 방식을 채택했다.특히 이번 구현에서는 보안 강화를 위해 RTR(Refresh Token Rotation) 방식을 도입하고, 성능 이슈를 해결하기 위해 Redis를 저장소로 선택했다. 1. 왜 Refresh Token, Redis와 RTR인가?Refresh TokenAccess Token은 탈취 위험 때문에 수명을 짧게(30분) 가져간다. 대신 Refresh Token으로 토큰을 갱신한다. Refresh Token은 만료된 Access Token을 새로 발급받는 용도로 수명을 7~30일 혹은 더 길게 잡기도 한다. Refr..

  • format_list_bulleted 사이드프로젝트
  • · 2026. 1. 19.
  • textsms
[사이드 프로젝트] 디지털 굿즈 플랫폼 개발기 #5 - Controller 구현과 입력값 유효성 검증

[사이드 프로젝트] 디지털 굿즈 플랫폼 개발기 #5 - Controller 구현과 입력값 유효성 검증

지난 포스팅까지 우리는 데이터를 저장하는 Repository와 비즈니스 로직을 수행하는 Service를 구현했다. 하지만 이 코드들은 아직 내 컴퓨터 안에서만 동작할 뿐, 외부 세상(프론트엔드, 앱)과는 단절되어 있다.이번에는 클라이언트의 요청을 받아 서비스 계층으로 연결해 주는 컨트롤러(Controller) 를 구현하고, 들어오는 데이터를 안전하게 검사하는 유효성 검증(Validation) 과정을 다룬다.1. 컨트롤러의 책임: "선은 넘지 말자"초보 개발자가 흔히 하는 실수 중 하나는 컨트롤러에 비즈니스 로직을 넣는 것이다. 컨트롤러는 "교통 정리"만 해야 한다.해야 할 일 (O): HTTP 요청받기, 입력값 검증(@Valid), 서비스 호출, HTTP 상태 코드(200, 201, 400...) 결정...

  • format_list_bulleted 사이드프로젝트
  • · 2026. 1. 15.
  • textsms

[사이드 프로젝트] 디지털 굿즈 플랫폼 개발기 #4 - Service 계층 구현과 Mockito 단위 테스트

지난 포스팅에서 Testcontainers를 이용해 데이터 접근 계층(Repository)의 신뢰성을 확보했다. 이제는 이 데이터를 가공하여 실제 비즈니스 로직을 수행하는 서비스(Service) 계층을 구현할 차례다.1. DTO 설계: Entity를 밖으로 노출하지 마라서비스 계층의 첫 단추는 데이터를 주고받을 그릇(DTO)을 만드는 것이다. Entity를 컨트롤러 파라미터로 직접 받으면, 원치 않는 필드가 변경되거나 스펙 변경 시 DB 구조까지 흔들리는 부작용이 있다.Java 17의 record를 사용하여 불변(Immutable) DTO를 만들었다.public record MemberSignupRequest( @NotBlank String email, @NotBlank Stri..

  • format_list_bulleted 사이드프로젝트
  • · 2026. 1. 15.
  • textsms
[사이드 프로젝트] 디지털 굿즈 플랫폼 개발기 #3 - Repository 계층 구현과 테스트 코드 작성

[사이드 프로젝트] 디지털 굿즈 플랫폼 개발기 #3 - Repository 계층 구현과 테스트 코드 작성

1. 들어가며이전 포스트에서 엔티티를 구현하는 과정을 거쳤다. 물론 22개의 ERD에 따라 모든 엔티티를 구현하지는 않았다. 우리가 기능단위로 개발을 진행하니 구현이 필요할 때 작업할 예정이다. 그보다 이번에는 DataJPA를 사용하는 Repository 계층을 구현하고 테스트를 작성하였던 과정과 그 과정에서 겪었던 문제들과 해결방법을 소개하려고 한다.2. 기술 선정: 왜 Spring Data JPA인가?프로젝트의 핵심은 유저와 디지털 카드 데이터를 효율적으로 관리하는 것이다. 이를 위해 Spring Data JPA를 선택했다.JPA (Java Persistence API)란?JPA는 자바 애플리케이션에서 관계형 데이터베이스(RDBMS)를 사용하는 방식을 정의한 인터페이스(표준 명세)다. 과거에는 SQL..

  • format_list_bulleted 사이드프로젝트
  • · 2026. 1. 14.
  • textsms

[사이드 프로젝트] 디지털 굿즈 플랫폼 개발기 #2 - JPA 엔티티 설계와 기술적 디테일

1. 들어가며지난 포스팅에서 마플샵과 차별화된 디지털 굿즈 플랫폼 Universe Pick의 DB 설계를 진행했다. 총 22개의 테이블이 나왔고, 이제 이 설계도를 실제 Spring Boot(JPA) 엔티티 코드로 옮기는 작업을 진행하겠다. 모든 테이블을 설명하면 내용이 너무 많아 일단 이번 편에서는 member와 관련된 테이블들을 구현하겠다. 단순히 테이블을 매핑하는 것이 아니라, "안전한 객체 사용"과 "데이터 무결성"을 위해 적용한 몇 가지 JPA Best Practice와 설계 의도를 기록한다.2. 개발 환경 세팅 (Docker + Spring Boot)로컬 DB 설치의 번거로움을 줄이기 위해 Docker Compose를 사용했다. PostgreSQL 15 버전을 컨테이너로 띄우고, Spring ..

  • format_list_bulleted 사이드프로젝트
  • · 2026. 1. 14.
  • textsms
  • navigate_before
  • 1
  • 2
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (219) N
    • 크래프톤 정글 (83)
    • 크래프톤 정글 (컴퓨터 시스템: CSAPP) (57)
      • 3장 프로그램의 기계수준 표현 (16)
      • 6장 메모리 계층구조 (6)
      • 7장 링커 (6)
      • 8장 예외적 제어 흐름 (7)
      • 9장 가상 메모리 (16)
      • 11장 네트워크 프로그래밍 (6)
    • 클라우드 (4)
      • [AWS] AWS IoT Core (4)
      • DevOps (0)
    • Deep Dive (51) N
      • CS (15)
      • OS (33) N
      • 아키텍처 (2)
    • 백엔드 개발 (1)
      • 파이썬 (0)
      • 자바 스프링 (1)
    • 자격증 공부 (5)
      • AWS Cloud Practitioner (2)
      • 정보처리기사 (1)
      • AWS SAA-C03 (2)
    • 앱 개발 (5)
      • Flutter (5)
    • AI & LLM (1)
    • 문제 기록 (0)
    • 커뮤니티 참석 후기 (2)
    • 일상 기록 (1)
    • 사이드프로젝트 (7)
최근 글
인기 글
최근 댓글
태그
  • #AWS Community Day
  • #saa-c03
  • #AWS 자격증
  • #aws #iot
  • #CLF-C01
  • #AWSKRUG
  • #AWS
  • #serverless
  • #Cloud Practitioner
  • #IOT
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바