| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 화자분할
- soft delete
- 가운데를 말해요
- 카드 정렬하기
- 백준
- 최소힙
- JPA
- 논리삭제
- 부하테스트
- 정렬
- bastion host
- 테스트 커버리지
- 화자검증
- cursor 기반 페이지네이션
- 오프체인
- SpringBoot
- 분산락
- cp-abe
- 화자식별
- 백엔드
- GPT4-V
- K6
- 우선순위큐
- Java
- 최대힙
- 서버
- SHA-3
- 컨트롤 URI
- 무중단 배포
- 배스천 호스트
- Today
- Total
목록SpringBoot (7)
아직 미정입니다
게시글 중 전문가 칼럼이라는 게시글 타입이 있다. 홈 화면에서 해당 칼럼을 인기(좋아요)순으로 6개 조회하는 API가 있어 이 부분도 Redis Cache를 도입하여 리팩토링 하려 한다.Hibernate: /* select post from Post post inner join fetch post.board as board left join post.postlikes as likeCount where board.postType = ?1 and ( post.id = ?2 or post.id ?3 ) group by ..
이 전 게시글에서 테스트 시나리오를 조금 구체적으로 작성했는데, 아무래도 부하테스트 및 모니터링을 해보는게 처음이라 일단은 아래 실험 지표들의 결과들을 확인해보려 한다. 실험 지표1. 에러율 (http_req_failed)의미: 전체 요청 중 실패 비율목표: 1)해석: 이 값이 1%를 넘으면 해당 단계가 최대 용량2. 응답 시간 (http_req_duration)p(95): 95%의 요청이 이 시간 이내 완료p(99): 99%의 요청이 이 시간 이내 완료목표: p(95) 해석: p(95)가 2초를 넘으면 성능 저하로 판단3. 처리량 (http_reqs)의미: 초당 요청 수 (RPS)해석: 사용자 수 증가에 비례하여 증가하는지 확인4. 동시 사용자 수 (vus)의미: 현재 활성 가상 사용자 수해석: 각 ..
개요백엔드 개발자를 희망하면서, 지금까지 부하테스트를 진행해 본 경험이 없었다. 프로젝트에서 주로 백엔드 + CI/CD + 인프라 구성을 맡았었기 때문에.. 1년 전에 진행했던 프로젝트를 리팩터링 하면서 부하테스트를 진행해 보려고 한다.새 프로젝트가 아닌, 이미 종료된 프로젝트로 진행하는 이유는1. 부하테스트 + 리팩토링이 목적이기 때문에 새 프로젝트를 구성하기 위한 ERD, API 명세서, 기능 등을 기획하기에 시간이 많이 들거라고 예상2. 해당 프로젝트에서 Redis 검색, 채팅 등의 기능을 구현했었기 때문에 성능적으로 리팩토링 할 부분이 많다고 생각했다.이러한 이유로 기존에 종료된 프로젝트를 GitHub Organization -> 개인 프로젝트로 이동 후 테스트를 진행해 보려고 한다.실험 환경Do..
다음주가 개강이라는 사실을 오늘 깨달았다. 이게 말이 됨? UMC 활동도 끝났고, 개강 전에 25-1학기 iOS 프로그래밍 수업에서 진행한 기말 프로젝트 백엔드 부분을 잠깐 리팩토링하고 싶어져 손을 대봤다. 원래는 빨래 돌리는 동안만 잠깐 해보려 했는데, 하다 보니 한참 지나버려서 결국 빨래를 다시 돌리게 됐다.. 이번에 리팩토링한 부분은 공공데이터 CSV 파일을 DB에 매핑해 저장하는 로직과, 범죄 카테고리 데이터(살인, 사기 등)와 지역(서울, 수원, 광주 등)을 매핑하는 코드다. 공공데이터 DB에 저장DB 직접 호출(save, findAllByCrimeYear) → Map 캐시 & saveAll(batch) 로 교체1. CSV loop에서 통계 저장 부분// ✅ 기존statisticRepositor..
Soft Delete soft delete (논리 삭제)데이터베이스에서 데이터를 삭제하지 않고, 사용자 입장에서는 데이터에 접근할 수 없게 하는 방식soft delete시 사용자는 데이터가 삭제된 것처럼 보이기 때문에 해당 데이터에 접근이 불가능하지만, 애플레키에션 DB에는 데이터가 여전히 존재내부에서 데이터를 계속 사용해야 할 가능성이 있다면 적합소프트 삭제는 백단의 관심영역이라 클라이언트 입장에서는 실제 삭제가 되는지, 소프트 삭제가 되는지 중요하지 않아 http method로 DELETE를 주로 사용한다. soft delete 구현 방법is_deleted 컬럼 추가데이터베이스에 삭제 여부를 나타내는 컬럼을 추가하고, 삭제된 레코드는 해당 컬럼에 특정 값을 입력하는 방법삭제된 데이터를 복원하고자 할 ..
내가 진행중, 진행 완료한 미션 모아서 보는 쿼리(페이징 포함)에서 정렬 기준을 1순위는 포인트로 2순위는 최신순으로 하여 Cursor기반 페이지네이션을 구현SELECT um.id AS user_mission_id, um.user_id, um.created_at, s.id AS store_id, sm.id AS store_mission_id, s.store_name, m.mission_money, m.mission_point, um.status, CONCAT(LPAD(m.mission_point, 10, '0'), DATE_FORMAT(um.created_at, '%Y%m%d%H%i%s')) AS cursor_valueFROM user_mission ..
정규화이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정으로 테이블 간에 중복된 데이터를 허용하지 않도록 한다. 이를 통해 무결성(integrity)를 유지하고, DB의 저장 용량을 줄일 수 있다. 제 1 정규화(1NF)제 1 정규화란 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것이다.1NF 규칙각 컬럼이 하나의 속성만을 가져야한다.하나의 컬럼은 같은 종류나 타입(type)의 값을 가져아한다.각 컬럼이 유일한 이름을 가져야한다.컬럼의 순서가 상관 없어야 한다.제 2 정규화(2NF)제 2 정규화란 제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것이다. 여기서 완전 함수 종속이라는 것은 기본키의 부분집합이 결정자가 되어..