반응형

전체 글 20

Redis 동시성 제어 과제 구현 방향

목표: Redis를 활용한 Lock 구현으로 동시성 이슈 해결1️⃣ 구현 방향 자료조사 및 단계적 진행1. 어플리케이션 기획콘서트 티켓팅 시스템으로 설정:특정 시간에 대규모 요청이 몰릴 가능성이 높은 도메인.좌석 선택 및 구매 과정에서 데이터 정합성 유지가 중요.요구사항:좌석은 단 1명만 구매 가능.동시 요청 시, 같은 좌석이 여러 사용자에게 배정되지 않도록 처리.2. 동시성 이슈 검증 테스트 코드 작성환경 설정:ExecutorService를 이용해 다수의 쓰레드에서 동일한 좌석 구매 요청.CyclicBarrier를 사용하여 쓰레드가 동시 시작되도록 구현.검증 코드 시나리오:여러 쓰레드가 동일 좌석을 동시에 구매하려고 시도.테스트 시 동시성 문제로 인해 데이터 정합성이 깨지는 상황을 확인.3. Redis..

카테고리 없음 2024.11.27

Spring 심화 주차 개인 과제 트러블슈팅

ScheduleService, UserService, CommentService 서비스 클래스에 @Transactional 추가1. 일관성 있는 데이터베이스 상태 유지 Service 클래스의 모든 메서드가 트랜젝션 내에서 실행되어 데이터베이스에 여러 작업이 하나의 트랜젝션으로 묶여 일관성을 보장할 수 있다.2. JPA의 더티체킹 활용 엔티티 수정 시 save() 메서드를 호출하지 않아도 자동으로 변경 사항이 감지되고, 데이터베이스에 반영된다.3. 조회 전용 메서드에는 @Transactional(readOnly = true) 적용 데이터 변경을 방지하고, 성능을 최적화 엔티티에서 DTO로 유효성 검사 어노테이션 옮기기>> 엔티티에 유효성 검사를 붙이면 영속화 시점에 유효성 검사가 일어남. 객체 생성 시점에..

스파르타 코딩 2024.10.31

일정 관리 앱 제작 트러블 슈팅

1. DTO 적용 문제초기에는 엔티티를 직접 반환하도록 설정하였으나, 엔티티를 그대로 반환하는 것은 데이터 노출과 관련된 보안 문제 및 확장성의 문제가 될 수 있어, DTO(Data Transfer Object)를 사용해 데이터를 반환하도록 변경하였습니다. 이 과정에서 서비스 계층에서 엔티티를 DTO로 변환하는 로직을 추가하였습니다. 컨트롤러와 서비스 계층에서 DTO로 변환된 데이터를 사용하도록 수정했으며, 각 메서드마다 적절한 DTO로의 변환을 구현하였습니다. 유저 생성, 모든 유저 조회, 특정 유저 조회, 일정 생성, 일정 조회 등의 기능에서 DTO를 사용해 반환하도록 수정하였습니다. 2. 필수 값 누락 및 엔티티 필드 문제일정 생성 시 userName 필드가 누락되거나 null로 저장되면서 데이터베..

스파르타 코딩 2024.10.17

[JDBC를 활용한 CRUD] 일정 관리 앱 만들기 과제 트러블슈팅

문제 1: author_id 외래키 추가 시 오류 발생발생 상황: author_id를 외래키로 추가하려고 했을 때, 이미 author_id가 schedule 테이블에 존재하여 오류가 발생.해결 방법: 외래키 제약 조건이 추가되지 않은 상황이었기 때문에 다음과 같은 순서로 해결.기존의 author_id를 제거하려 시도했으나, 외래키 제약이 설정되지 않았음에도 불구하고 제거할 수 없었음.ALTER TABLE을 사용해 먼저 외래키 제약을 제거한 후, author_id 컬럼을 삭제하고 다시 추가하면서 외래키 제약을 설정함.해결 코드:-- 외래키 제약 조건 제거ALTER TABLE scheduleDROP FOREIGN KEY fk_author;-- author_id 컬럼 삭제ALTER TABLE scheduleD..

스파르타 코딩 2024.10.04

자바로 숫자 야구 게임 만들기 과제 트러블슈팅

1-1. 정답 숫자 생성하기>> Set과 HashSet 대신 List와 Collections.shuffle을 사용한 이유?1. 코드의 간결성과 가독성 향상 Collections.shuffle을 사용하면 한 번의 메서드 호출로 리스트 전체를 무작위로 섞을 수 있다. 이를 통해 중복되지 않는 랜덤 숫자들을 손쉽게 얻을 수 있으며, 추가적인 중복 검사나 복잡한 루프가 필요하지 않다. 반면에 Set과 HashSet을 사용하면, 중복되지 않는 숫자를 얻기 위해 랜덤 숫자를 생성하고 중복 여부를 확인하는 반복문을 작성해야 한다. 이 방법은 코드가 더 길어지고 복잡해질 수 있으며, 가독성이 떨어질 수 있다. 2. 효율성 및 성능 향상 Collections.shuffle은 리스트를 한 번만 섞으면 되기 때문에, 고정된..

스파르타 코딩 2024.09.24
반응형