분류 전체보기
-
현재 Spring Security 구조이커머스 devops 2026. 1. 7. 15:07
로그인 전체 흐름1단계 : 로그인 요청클라이언트 ↓POST /api/auth/loginContent-Type: application/json{ "email": "user@example.com", "password": "1234"} 2단계: RestAuthenticationFilter 실행┌────────────────────────────────────────────────┐│ RestAuthenticationFilter ││ (AbstractAuthenticationProcessingFilter) │└────────────────────────────────────────────────┘ ↓ attemp..
-
로그인/로그아웃 인증 개선이커머스 devops 2026. 1. 7. 14:38
쿠키 VS 세션 쿠키 (Cookie)세션 (Session)저장 위치클라이언트(브라우저)서버(메모리/DB/Redis)역할작은 데이터(4KB)를 브라우저 저장사용자 상태 정보(복잡한 객체 가능) 서버 저장크기4KB 제한제한 없음예시"사용자ID=123", "언어=ko", "테마=dark"로그인 정보, 장바구니, 권한보안낮음 (클라이언트 조작 가능)높음 (서버만 접근)속도빠름 (네트워크 불필요)느림 (서버 조회 필요)유효기간직접 설정 (영구 가능)짧음 (보통 30분)용량제한적 (도메인당 50개)제한 없음관계세션 ID를 쿠키로 전달함 세션세션은 쿠키를 기반으로 하고 있지만 서버 측에서 관리서버에서는 클라이언트를 구분하기 위해 세션ID 부여하여 웹 브라우저가 서버에 접속하여 브라우저를 종료할 때까지 인증상태 유지..
-
동시성문제 - 비관적 락이커머스 devops 2026. 1. 3. 15:53
[ Thread A와 Thread B가 동시에 실행 ]Thread A Thread B─────────────────────────────────────────────────────1. status 확인 (AVAILABLE) 1. status 확인 (AVAILABLE)2. user 확인 (null) 2. user 확인 (null) 3. assignToUser(A) 실행 중... 3. assignToUser(B) 실행! 4. 커밋 완료 (B가 쿠폰 획득)4. 커밋 실패 또는 덮어쓰기문제 상황 : 스레드a, 스레드b가 동시 실행했을 때 @Repositorypublic interfa..
-
스프링시큐리티 적용 로그인 구현 및 비회원 주문 로직 추가이커머스 devops/국비교육 2025. 12. 14. 16:36
스프링시큐리티 흐름[클라이언트] │ │ POST /api/login │ Body: { "username": "user", "password": "1234" } │▼┌──────────────────────────────┐ │ SecurityFilterChain (전체 보안 설정의 시작점) │└──────────────────────────────┘ │ /api/** 경로 매칭 │ ▼ ┌──────────────────────────────┐ │ RestAuthenticationFilter (요청 가로채기) │ │ - HTT..
-
Redis - 카테고리 조회 적용이커머스 devops/국비교육 2025. 12. 6. 11:38
- JsonUtil 작성@Slf4j@Componentpublic class JsonUtil { private static final ObjectMapper objectMapper = new ObjectMapper() .registerModule(new JavaTimeModule()) .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); public static String toJson(T object) { try { return objectMapper.writeValueAsString(object); } catch (JsonProcessingException ..
-
스프링부트게시판 (4)이커머스 devops 2025. 11. 29. 14:33
조회수 요구사항- 조회수- 조회수 어뷰징 방지 정책 - 각 사용자는 게시글 1개 당 10분에 1번 조회수 집계 - 10분 동안 100번 조회하더라도 1번만 집계된다 조회수 설계조회수는 데이터 일관성의 중요성이 떨어지고 다른 데이터에 의해 파생되는 데이터가 아니므로 트랜잭션이나 안전한 저장소가 반드시 필요하지 않다하지만 트래픽이 많아 디스크의 접근 비용이 비싼 것을 고려해야 한다따라서 in memeory database를 사용한다in memory database - 데이터를 메모리에 저장 및 관리하는 데이터베이스 Redisin memeory database고성능NoSQL키-값 저장소다양한 자료구조 지원TTL(Time To Live) 지원 - 일정 시간이 지나면 데이터 자동 삭제single t..
-
스프링부트 게시판 (3)이커머스 devops 2025. 11. 28. 16:44
좋아요 요구사항- 게시글 좋아요 - 사용자는 각 게시글에 1회 좋아요 가능하다 - 취소도 가능하다- 좋아요 수 집계 > (게시글 ID + 사용자 ID)로 유니크 인덱스 생성 좋아요 테이블 설계 Shard Key = article_id적절한 분산의 단위로서 선정 create table article_like ( article_like_id bigint not null primary key, article_id bigint not null, user_id bigint not null, created_at datetime not null ); create unique index idx_article_id_user_id on article_like(article_id asc, user_id as..
-
스프링부트 게시판 (2)이커머스 devops 2025. 11. 27. 11:28
댓글 요구사항• 댓글 조회, 생성, 삭제 API• 댓글 목록 조회 API • 계층형 • 최대 2 depth의 대댓글 • 무한 depth의 대댓글 • 계층별 오래된 순 정렬 • 페이지 번호, 무한 스크롤• 하위 댓글이 모두 삭제되어야 상위 댓글을 삭제할 수 있다 • 하위 댓글이 없으면, 댓글은 즉시 삭제된다 • 하위 댓글이 있으면, 댓글은 삭제 표시만 된다 댓글 테이블 설계 –최대 2 depth comment - build.gradle 수정dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframe..