////
Search
Duplicate

회원시스템 뼈대 논의

date
2021/01/18
참가자
이안, 파이

목적

인증시스템 완성 시 되어야 하는 기능들을 정리한다.
인증시스템 구조의 대략적인 모습을 함께 그려본다.
인증시스템 구축을 위해 해야 하는 작업들을 논의한다.
인증시스템에 대해 이안, 파이가 같은 생각을 하는지 확인한다. 다른 부분이 있으면 맞춘다.

내용

1. oauth를 사용해야 하는 이유

카카오톡 로그인을 위해서
kakao

2. firebase 를 사용해야 하는 이유

firebase를 사용한다는 것은?
1.
정보 저장을 firestore에만 할 수 있다
2.
firebase에서 사용하는 여러가지 util들을 이용한다.
firebase를 사용하면 좋은 경우는
firebase만 구축하면, 인증 정보를 저장하는 db가 별도로 필요하지 않은 경우
firebase를 구축했을 때 시간을 아낄 수 있는 경우
인증 정보용 테이블/기능을 별도로 구현하는 것보다 시간을 아낄 수 있는 경우
firebase를 검토한 이유는
레거시에서도 썼으니까
레거시 (signal.bz) 에서 oauth를 사용한 이유
회원가입, 비번찾기 를 구현하는 시간을 아끼기 위해

3. 그렇다면, 시그널에서 회원 정보를 어디에 저장할것인가

선택 가능한 방법은 3가지가 있음
a. firestore
b. rdbms(혹은 자체 구축 db)
c. rdbms(혹은 자체 구축 db) + firestore
현재까지의 판단
rdbms는 무조건 사용 해야 한다
다른 테이블에서, User 테이블과 관계를 맺고 정보를 찾아야 하는 경우들이 반드시 생길 것이기 때문
선택가능한 방법은 b. 와 c.
이 중에서, 어느 방법이 더 좋을지에 대한 검토가 필요

4. 필요한 api들을 정리한다.

필요한 기능
조회
내 정보를 확인한다
아이디를 찾는다
요청
회원가입한다
일반 계정으로 회원가입한다
필요한 정보
이메일
비밀번호
휴대폰번호
약관동의여부 (서비스 이용 약관, 개인정보처리방침)
카카오 계정으로 회원가입한다
카카오에서 가져와야 하는 정보
이메일
휴대폰번호
약관동의여부 (서비스 이용 약관, 개인정보처리방침)
로그인한다
카카오 계정으로 로그인한다
일반 계정으로 로그인한다
로그아웃한다
수정
비밀번호 변경 메일을 요청한다

5. db를 설계한다

회원가입 시 저장해야 하는 정보
User 테이블 생성
id
email
password
phoneNumber
UserTermAgreement 테이블 별도 구현
id
userId
createdAt
termType
ts에 사용하는 테이블 필드명과, mysql 테이블에 정의할 칼럼명은 아래와 같이 하도록 함
ts 코드에서는 camel로 작성하면, mysql 칼럼은 snake로 치환하도록 typeorm 설정

6. 함께 코딩을 해본다

파이와 이안이 커밋을 나눠서 진행

결론

파이어베이스와 rdbms를 같이 썼을 때의 장점이 무엇인지 확인한다
이안
시그널 User db로 회원가입과 카카오싱크와 연결
파이
시그널 User db로 로그인과 카카오싱크와 연결
파이
코드 작성
열심히