요구사항
유즈 케이스 다이어그램
- 회원가입과 회원 로그인을 할 수 있어야 한다.
- 피드를 통해 포스트 목록을 조회할 수 있어야 한다.
- 로그인이 되어있다면, 포스트를 작성하고, 수정하고, 삭제할 수 있어야 한다.
- 로그인이 되어있다면, 다른 회원의 포스트에 좋아요를 누르면 좋아요 수가 올라가고, 다시 누르면 취소된다.
아키텍처 설계
데이터베이스 선택
- RDBMS vs NoSQL 선택:
- 회원 정보와 포스트 정보를 저장할 데이터 베이스가 필요
- 회원A 가 포스트A를 작성했다는 관계를 저장해야 함
- 회원별로 작성한 포스트 정렬 기능 필요
따라서 RDBMS를 사용하려 한다.
- 데이터베이스 엔진 선택:
- 학습 용도이므로, 비용이 따로 청구되지 않는 데이터 베이스 서버(TypeCloud 이용 예정)에서 지원하는 데이터베이스를 선택해야함
- 이미 사용해보아 익숙한 MySQL보다도, 다른 SQL을 이용해보려 함
따라서 PostgreSQL을 사용하려 한다.
사용자 인증 방식 선택
- 인증 스키마
- 회원 아이디와 비밀번호가 오가는데, 별도의 key 없이 복호화 가능한 방식은 안됨
- 회원 계정 정보가 매 요청마다 오고 갈 경우 탈취의 우려가 있으므로, 토큰 기반 인증을 사용하려 함
따라서 JWT를 사용하려 한다.