2024.07.10
🔥오늘의 공부🔥
● 1. 심화 프로젝트 설계
프로젝트명 : 2step
프로젝트 설명
팀의 업무를 시각화한 프로젝트 관리 프로그램으로써 KanbanBoard의 대표적인 사이트인 "Trello" 웹사이트를 모티브로 설계하게 된 프로젝트이다.
구조는 위의 이미지와 같이 보드형식에 하나의 컬럼 내부엔 여러개의 카드가 존재할 수 있으며, 보드는 하나의 프로젝트 단위, 컬럼은 해당 카드들이 들어가는 곳의 상태를 나타내주고, 카드는 기본적인 기능 구현 및 업무에 대한 내용을 넣어 주게된다. 업무 상태의 따라 카드의 위치를 컬럼 단위로 변경이 가능하다.
와이어 프레임
1. 로그인 된 사용자는 여러개의 보드를 만들 수 있다.
2. 보드를 생성한 사용자는 해당 보드에 대해 Manager 권한을 가진다.
3. Manager는 사용자들을 보드에 초대할 수 있는 전체적인 권한을 가지며, 초대된 사용자들은 User의 권한을 가진다.
4. User의 권한을 가진 사용자들은 보드 내부의 카드에 대한 CRUD 권한만을 가질 수 있다.
5. 모든 유저들은 보드를 생성할 수 있으며 생성한 유저는 해당 보드에 대한 Manager 권한을 가지게 된다.
6. Manager는 컬럼을 추가해 줄 수 있고, 일반 유저들은 해당 컬럼이 추가된다면, 카드를 추가할 수 있다.
7. 해당 추가하는 카드는 구현하고자 하는 기능에 대한 내용과 상태에 따라 기재할 수 있다.
8. 사용자 목록을 통해 해당 보드에 존재하는 모든 유저들의 목록을 보여줄 수 있다.
9. 컬럼의 상태별, 멤버별 조회가 가능한 필터가 존재한다.
ERD
Board하나에 User 여러명이 소속이 가능하며, User 한명이 Board 여러개의 소속이 가능하므로, 정규화가 완료된 테이블 두 개가 서로 N:M 관계를 가지고 있다고 판단을 하여, 중간 테이블을 이용해 관계에 대한 매핑을 해주게 되었다.
보드 하나에는 여러개의 컬럼이 존재할 수 있으므로 Board(1) : Column(N) <OneToMany> 를 주었다.
컬럼 하나에는 여러개의 카드가 존재할 수 있으므로 Column(1) : Card(N) <OneToMany> 를 주었다.
Card 테이블은 해당 카드의 정보를 기재한 주인인 유저를 알아야 하기에 User와 1:N 관계를 맺고 있다.
Comment 테이블 또한, Card와 1:N관계를 가지고 있으며, 이는 하나의 카드에 여러개의 유저들이 댓글을 달 수 있는 관계이며, 댓글을 작성한 유저의 정보를 알아야 하기에 User테이블과 1:N 관계를 맺어주었다.
API 명세서
회고
심화 프로젝트에 들어가면서 많은 요구사항들이 생겼다. 복잡한 관계에 대한 연관 관계 매핑과, 동시성 제어, 쿼리 최적화 등 다양한 어려운 기술들을 알게 되었고, 개인적으로 시큐리티를 두 번째 담당을 하게 되었는데, 덕분에 이해도는 많이 올라갔다. 이번에는 시큐리티의 필터단 예외와, 레디스를 활용해 볼 생각이다. 개인적으로 AWS와 Docker를 좀 더 학습을 해야 한다는 목표 또한 생겼다. 이제 앞으로 내가 해야 할 공부는 AWS, Docker, Redis, 동시성 제어, 쿼리 최적화 등이다.
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 61일차 TIL - 쿼리 최적화 (0) | 2024.07.13 |
---|---|
내일배움캠프 60일차 TIL - Security 예외처리 (0) | 2024.07.13 |
내일배움캠프 58일차 TIL - Redis (0) | 2024.07.09 |
내일배움캠프 57일차 TIL - Docker(1) (0) | 2024.07.08 |
내일배움캠프 56일차 TIL - AWS(3) RDS (0) | 2024.07.04 |