일단 내가 이전에 한다고 했던건 Trello, Jira 같은 협업 툴이라고 했고,
그 중에서 가장 필수적인 기능을 꼽아보자
Trello를 기반했을 때 생각나는 기능을 순서대로 적어보자
내가 생각했을 때의 주요 기능은 위와 같았다.
그럼 주요 기능을 조금 더 살펴보자
회원 가입은 서비스 자체 제공의 회원가입 기능과, Google OAuth2.0 두 가지를 사용할 예정이다.
그렇지만 일단 스케치 단계에 적는 내용은 모두 외부 서비스를 이용하지 않을, 내가 구현할 내용만 적어보자
회원이 가입한 데이터를 저장하는 저장소는? MySQL
회원가입에 필요한 정보는 최소화 하며, 가능한 모든 데이터를 암호화 하여 저장
Password의 경우 단방향 해시, ID & Email의 경우 대칭키를 사용하여 복호화까지 가능하도록 구성한다.
회원 가입을 했으면 로그인을 해야지
로그인은 단순히 입력받은 내용을 DB와 대조하여 진행할 예정이다
갑자기 실 사용 단계인게 조금 이상?한가 싶긴한데
로그인을 한 순간부터 사용이 가능하니까....
여튼 실제 사용을 할 때 아무나에게 열어둘 수 없으니 Spring Security와 함께 사용할 예정이고, Security를 사용하면서 필터와 체인을 빼놓을 수 없고 가장 널리 사용되는 JWT를 이용할 예정
일단 여기까지가 내가 생각한 Auth와 기본적인 Config 설정이다.
여기서 보면 두 가지 주체가 있다.
팀과 팀원
각각 보면 Team, User로 볼 수 있겠다.
그러면 여기서 한 번 더 분리해야 할 것 같은데
유저가 팀에 얽메이지 않고 할 수 있는 일이 무엇이 있을까?
유저는 딱히 할 수 있는 일이 없는 것 같다....
그러면 팀은 뭘 할 수 있을까?
보드는 팀에 속해져있다.
그러면 보드를 생성하는 주체는 Team이 맞다.
하지만 따지고 보면 Board가 생성되는 것 부터 Board라는 도메인으로 분리가 되는게 아닐까?
Board 내에 Status가 생성된다 그러면 생성이 되는 것 역시 Status라는 도메인으로 분리해야하지 않나?
라는 생각 때문에 당장에 생성 하나만 있다고 하더라도 도메인을 이렇게 나눌 생각이다.
똑같은 개념으로 Card 내에 Comment가 생성되기 때문에 역시 도메인적으로 분리를 해야할 것 같다.
욕심내도 좋지만 꾸준하게만 하자...
다음 포스팅에서는 해당 도메인의 연관 관계를 구성하고, 기본적인 ERD를 그려보도록 해야겠다.