본문 바로가기

Java Projects/Palette 칸반보드 툴6

(25.04.07) 비관적 락(Pessimistic Lock) 동시성 제어 적용 (24.07.15)[14주차] 프로젝트 중 동시성 제어를 위한 Redisson 활용많은 요청이 한번에 들어올 경우 DB에 CRUD간 데이터의 일관성, 무결성, 정합성의 DB 데이터 특성을 보호하기 위해서 동시성을 제어할 필요가 있다. 쓰레드나 프로세스가 동시에 데이터에 접근하andrew75313.tistory.com예전에 진행했던 Side Project인 칸반보드 툴을 제작한 프로젝트에서,칸반보드의 컬럼당 카드(할일) 을 생성하는데 동시성 문제가 발생했다.여러 서버(여러 사용자) 가 같은 컬럼을 향해 카드 생성 요청을 할 경우, 카드 순서를 담당하는 필드 값이 1씩 늘어나지 않고 동일한 위치값으로 내지는 더 많은 위치값으로 뛰어넘고 저장되는 이슈였다. DB 단에서 저장이 될때 순차적으로 숫자를 부여할 수.. 2025. 4. 7.
(24.07.16) A08조 "Palette" Project - KPT 회고 Summary👍 KEEP협업 회의 시, 너무 기능 구현 또는 해야할 일에서만 회의를 하는 것이 아니라 서로 Small Talk을 섞어가면서 활기찬 분위기와 좋은 컨디션으로 프로젝트를 진행할 수 있었다.프로젝트를 시작 하기 전, GitHub 규칙, Git Convetion, .env 를 통한 환경변수 설정 및 docker-compose.yml을 통한 협의를 통해 개발 환경을 일치시켜, 개발 환경 관련 트러블이 발생하지 않았다.GitHub에 Pull Request 진행이 있을 때 곧바로 Merge 되는 것이 아니라 서로의 코드를 보면서 부족한 부분이나 놓친 부분을 점검해주는 코드리뷰/피드백을 적극적으로 할 수 있었다.서로의 코드와 로직 등 각 팀원간 분배되어 구현된 기능과 파트에 대해서 서로 코드로써 존중.. 2024. 7. 16.
(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.
(24.07.10) Project S.A. 작성 1. 프로젝트 제목/설명 Palette 기획목적팔레트처럼 다양한 프로젝트 아이디어와 작업을 간편하게 한눈에 펼쳐 보여주는 Kanban 보드 프로젝트 협업 솔루션 서비스 제공기능요약• 사용자가 협업에서 Backlog 설정과 Backlog Process Status를 Backlog 카드와 Status 컬럼간 CRUD로 Status 최신화 • 협업 Board 내 Process 별 상세 내용 간편 조회 및 전체 Process 파악 • 사용자간 Backlog에 대한 아이디어 공유2. WireFrame 3. ERD4. API 명세서 2024. 7. 10.