본문 바로가기

All162

(24.07.15)[14주차] 프로젝트 중 동시성 제어를 위한 Redisson 활용 많은 요청이 한번에 들어올 경우 DB에 CRUD간 데이터의 일관성, 무결성, 정합성의 DB 데이터 특성을 보호하기 위해서 동시성을 제어할 필요가 있다. 쓰레드나 프로세스가 동시에 데이터에 접근하는 것을 방지하기 위해 여러가지 방법이 있지만, Synchronized나 DB Lock은 DB또는 서버등의 환경이 분리됨에 따라 동시성 제어가 불가능할 수 밖에 없다. 따라서 DB단이 아닌 싱글 쓰레드인 메모리와 같은 Redis단에서 DB 접근에 관하여 제어를 하면서 동시성 제어를 해야한다. 이러한 Redis단에서의 분산된 Lock, Distributed Lock 중 Redisson API를 통해 임계영역을 직접적으로 Redis가 관리할 수 있도록 협의를 하고 구현을 진행함에 있어서 그 과정을 정리했다. Synch.. 2024. 7. 15.
(24.07.15) Card 생성의 동시성 제어 Card 생성의 동시성 제어Column과 Card(할일)에 관해서는 Position이라는 위치에 해당하는 값을 필드로 가지고 있기 때문에 동시에 DB에 접근해서 저장/삭제/수정을 할 경우에 대해서 위치가 겹쳐져서 데이터가 입력이 될 수 있으므로 이 부분에 동시성 제어를 적용하기로 결정물론 Redis 자체가 싱글 쓰레드이므로 RedisTemplate을 사용해도 문제는 없으나 실제로 적용하는 연습과 그 과정을 선택하기 위해 선택RedissonConfig@Configurationpublic class RedissonConfig { ... public static final Long WAIT_TIME = 30L; public static final Long LEASE_TIME = 10L; @B.. 2024. 7. 15.
(24.07.12) 칸반보드의 Column 관리 기능 Refactor 및 수정, Comment 기능 개발 Column Refactor 및 수정Column 삭제 -> Column 상태를 DELETED 상태로 변경 으로 수정 // 컬럼 엔터티public class ColumnInfo extends Timestamped { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String statusName; ... @Enumerated(EnumType.STRING) @Column(nullable = false) private Status status; ... public enum Status { .. 2024. 7. 12.
(24.07.11) 칸반보드의 Column 관리 기능 개발 3 Layer Architecture(Controller - Service - Repository) 중 Service 기준Column 생성, 삭제 기능 // 컬럼 생성public ColumnInfoResponseDto createColumn(Long boardId, @Valid ColumnInfoRequestDto columnInfoResponseDto, User user) { ... ColumnInfo columnInfo = new ColumnInfo(columnInfoResponseDto, foundBoard); .. 2024. 7. 11.