전체 글
-
스프링시큐리티 적용 로그인 구현 및 비회원 주문 로직 추가이커머스 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..
-
스프링부트 게시판 (1)이커머스 devops 2025. 11. 25. 11:01
0. MySql docker 세팅$ docker run --name springboot-board-mysql -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:8.0.38$ docker exec -it springboot-board-mysql bashbash-5.1# mysql -u root -pmysql> create database article;mysql> use articlemysql> create table article ( -> article_id bigint not null primary key, -> title varchar(100) not null, -> content varchar(3000) not null, -> boar..
-
Distributed Relational Database이커머스 devops 2025. 11. 25. 09:00
Distributed Relational DatabaseRelational Database : 관계형 데이터베이스Distributed Relational Database : 분산 관계형 데이터베이스 [ 서비스가 활성화되면서 단일 DB로 처리하기에 부담이 생긴 상황 ]- 저장해야 할 데이터와 트래픽이 많아짐가장 간단한 방법 : Scale-up, DB 장비 성능 업그레이드Scale-up의 한계 : Scale-out 고려, 장비를 여러 대 사용하여 수평 확장 [ 데이터베이스에 대한 하나의 분산 시스템 구성 ]- 샤딩을 이용해 데이터를 여러 DB에 분산한다샤딩 테이블 : 데이터를 여러 DB에 분산하여 저장하는 기술샤드 : 샤딩된 각각의 데이터 단위물리적 샤드 : 데이터를 물리적으로 분산한 실제 단위대규모 ..
-
P6Spy 적용하기이커머스 devops/국비교육 2025. 11. 22. 15:19
1. build.gradle 추가 dependencies { ... implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' ...} 2. application.yml 추가# Hibernate SQL 로깅logging: level: # P6spy 로깅 레벨 설정 p6spy: debug org.hibernate.SQL: debug org.hibernate.type.descriptor.sql.BasicBinder: trace 3. P6spyConfig 생성@Configurationpublic class P6spyConfig { @PostConstruct public void set..