[TIL] 2024/08/27
·
TIL
1. JPA 무한참조 일어나서 @jsonIgnore로 해결했다. 2. 중간테이블 querydsl로 join해서 가져오기👉조인을 안 해도 조회 가능하지만 테이블마다 조회하게 되니 불필요한 쿼리 발생이 많아진다.   3. uuid는 객체니까 equals로 비교하기 4. queryDsl 세상 편하다... 쿼리를 자바코드로 생성하니까 쿼리 오류 발생도 없고 복잡한 쿼리문 작성 안 해도 되고... 필요성을 더욱 느끼게되었다.
Github 협업
·
카테고리 없음
Organization 생성개인repo 생성 시 탈퇴 및 private 처리 우려가 있음Issue 생성모든 일과를 등록한다.Assignees, Labels, Projects 선택하여 이슈 등록dev 브랜치 생성git branch devgit push —set-upstream origin dev( —set-upstream : Git에 현재 브랜치와 원격 레포지토리 사이의 연결을 설정하는 명령어)default branch main → dev 변경개발단위 브랜치 생성git branch ordergit branch authpull requestdescription은 상세하게 적어야 코드 리뷰 가능Reviewrs, Assigness, Labels, Projects 선택description에 close #1 등록하..
AI 검증 비즈니스 프로젝트 S.A
·
카테고리 없음
1. API 명세서https://www.notion.so/teamsparta/8fd1890e60ae4af4a424bfb3ef438103?v=e93e14966b634d469ecbb42ded151a02 API 명세서 | NotionBuilt with Notion, the all-in-one connected workspace with publishing capabilities.teamsparta.notion.site1-1) API 명세서 상세https://www.notion.so/teamsparta/API-38bb31a710314dee8023b92d5e88c802 API 명세서 (상세) | NotionBuilt with Notion, the all-in-one connected workspace with p..
[TIL] Write-Behind 캐싱 구현
·
TIL
Write-Behind 캐시에만 데이터를 작성하고, 일정 주기로 원본을 갱신하는 방식쓰기가 잦은 상황에서 데이터베이스의 부하를 줄일 수 있다. 예시) 특가 물량, 라이브 등 특정 상황에서 짧은 시간동안 몰리는 상황 public void purchase(ItemOrderDto dto) { //(1) Item item = itemRepository.findById(dto.getItemId()) .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND)); //(2) orderOps.rightPush("orderCache::behind", dto); //(3..
Spring Security에서 RedisSerializer를 사용하면 생기는 문제점
·
Back-end
Spring Security 로그인을 처리하면, 사용자의 인증 정보를 관리하기 위해 SecurityContext 객체를 세션 자바 객체형태로 저장한다. Spring Session과 Redis를 사용하여 세션을 관리하고 있다면, SecurityContext 객체는 Redis에 저장된다. 객체를 직렬화(객체->바이트 배열) 하여 저장하면 어떻게 될까? import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework..
[TIL] 장애대응
·
TIL
데드락이란? 두 개 이상의 트랜잭션이 서로가 점유하고 있는 자원을 기다리면서 영원히 대기 상태에 빠지는 상황을 의미한다.해당 트랜잭션들은 더 이상 진행될 수 없고, 시스템 성능에 큰 영향을 미친다. 예시)스레드 1이 아이템 1을 가져오고 아이템 2를 가져와야 한다.스레드 2는 아이템 2를 가져오고 아이템 1을 가져와야 한다.  스래드 1이 아이템 1을 가져오는 것과 스레드 2가 아이템 2를 가져오는 것은 성공했다. 스레드 1의 다음단계인 아이템 2 가져오기와 스레드 2의 다음단계인 아이템 1 가져오기는 서로 맞물려 있어서 대기에 빠지게 되고 데드락이 발생한다. 해결 방법) 타임아웃 설정으로 무한 대기 상태에 빠지게 되는 걸 막고 데드락 상태를 빠르게 탐지하여 해결한다. 복제지연이란? 데이터가 쓰기 DB에..
[TIL] DB Lock | 비관적 락 (Pessimistic Locking) | 낙관적 락 (Optimistic Locking)
·
TIL
DB Lock 이란? 데이터베이스에서 여러 트랜잭션이 동시에 같은 데이터에 접근할 때, 데이터의 무결성을 보장하기 위해 사용되는 메커니즘이다.쉽게 말하면, 작업중인 데이터는 건들 수 없게 만드는 것!!이다. 이를 통해 충돌을 방지하고 데이터의 일관성을 유지 할 수 있다.  비관적 락 실습 비관적 락은 데이터를 읽을 때부터 락을 걸어 다른 트랜잭션이 접근하지 못하도록 하는 방식으로 데이터의 충돌 가능성이 높을 때 유용하다. public interface ItemRepository extends JpaRepository { @Lock(LockModeType.PESSIMISTIC_WRITE) // 비관적 락 적용 @Query("select i from Item i where i.id = :id")..
[TIL] Session Clustering
·
TIL
사용자가 증가함에따라 하나의 서버로 사용자의 요청을 감당하기 어려워져 Spring Boot 서버를 여러개 사용할 때 각 서버들에게 요청을 분산하여 부하를 줄일 수 있다 (Load Balancing) 이런 방식의 확장을 Scale-Out이라고 부른다. (서버의 개수를 늘림)(서버 자원의 크기 자체를 높이는 방식의 확장은 Scale-Up이라고 부른다.)  사용자가 A서버로 요청을 했다가, B 서버로 요청을 하게 된다면 세션은 어떻게 유지 될까?(세션 : 상태를 저장하지 않는 HTTP 통신을 사용하면서, 이전에 요청을 보낸 사용자를 기억하는 상태를 유지하는 것) 여러 서버를 가동하게 되면, 세션의 정보를 서버 내부에서 관리하기 어려워지는데.. 이에 따른 대안을 알아보자.  Sticky Session 특정 사람..
[TIL] 모니터링
·
TIL
모니터링이란 시스템의 성능, 안정성 및 가용성을 실시간으로 관찰하고 측정하는 과정을 의미한다.잠재적인 문제를 신속하게 발견하여 대응할 수 있다.  Spring Boot Actuator Spring Boot  애플리케이션의 상태 및 내부 동작을 모니터링하고 관리하기 위한 기능을 제공한다. # Actuator 엔드포인트를 19090 포트에서 서비스하도록 설정management.server.port=19090#모든 엔드포인트 노출 설정management.endpoints.web.exposure.include=*#헬스 체크 엔드포인트 상세 정보 표시 설정# 이 설정은 /actuator/health 엔드포인트에서 헬스 체크 정보를 항상 상세히 보여주도록 설정합니다. 기본적으로, 헬스 체크 엔드포인트는 요약된 상태..
[TIL] SAGA Pattern
·
TIL
SAGA 패턴이란? 분산 시스템에서의 데이터 일관성을 유지하기 위한 패턴으로 마이크로서비스 아키텍처에서 중요한 역할을 한다.장기 실행되는 트랜잭션을 처리하고, 실패 시 롤백하거나 복구하는 방법을 제공하여 시스템의 신뢰성과 안정성을 높인다.  SAGA: 복잡한 비즈니스 트랜잭션을 여러 개의 작은 트랜잭션으로 나누어 실행. 각 작은 트랜잭션은 독립적으로 수행되며, 전체 트랜잭션이 성공적으로 완료되도록 보장한다.로컬 트랜잭션: 각 작은 트랜잭션은 개별적으로 성공하거나 실패할 수 있으며, 이들은 모두 로컬 트랜잭션으로 처리된다.보상 트랜잭션: 만약 어떤 작은 트랜잭션이 실패하면, 이전에 성공한 트랜잭션들을 보상하기 위해 보상 트랜잭션을 실행한다. 이를 통해 전체 트랜잭션의 일관성을 유지한다.조정자: SAGA 패..