✔️ 결론 및 To Do
✔️ 아젠다 및 질문
- 진척도는 어떠세요?
- 원래 인프라 구축에 시간이 오래 걸리니 너무 괴로워하지 말 것.
- 회고는 정해서 하시나요?
- 스프린트 끝날 때마다 성공 경험으로 각인시키고 이벤트로 삼는 게 좋음. 마지막으로 갈수록 실패 경험이 쌓이고 예민해지기 때문에.
✔️ 멘토링 내용
- 두 팀으로 함께 진행
- 각 팀마다 진행 상황 파악
- FE: 디자인 시스템 구축, UI 작업 시작, 이번 주 내에 컴포넌트 수준까지 완성하는 것이 목표
- BE: OAuth 로그인 구현 완료, 개인 PC에 서버 구축 시도 중, 이번 주 안에 서버 작업 마치는 것까지가 목표
프론트엔드
- 현업에서는 (툴팁 같은 경우) CSS 수준부터 직접 디자인을 짜는 것보단 디자인 프레임워크를 사용하는 경우가 많음.
백엔드
- 백지: 프리즈마에서 스키마로 SQL 만들어서 DB에서 돌려줘야 서버에서 잘 돌아감.
- DB 마이그레이션을 자동으로 하는 건 안전하지 않음. 가능한 수동으로 하고 롤백 등은 자동화할 수 있는 환경 구축을 추천.
- 누가 owner를 가져갈 것인지 정하고 그 사람이 충돌나지 않게 머지하고 마이그레이션 하는 식으로 진행하라.
- 사람에 따라 서로 다른 결과가 보이는 것은 환경변수 관련 이슈일 수 있음.
- 백지: DB를 새로 띄우면 데이터가 날아가는 것을 고려하지 못했네요.
- 테스트 코드 돌릴 때 로컬에선 SQL 메모리 모드로 돌리면 되게 빠름. 종료되면 데이터 싹 날아가니까 편함.
- 그게 아니라면 마이그레이션이 골치 아플 수 있음.
- 멘토: 터보 레포 어떠세요?
- 백지: 세팅만 해놓고 아직 제대로 사용하는 느낌은 아님.
- 약간 애매하긴 하죠 아직. 아니면, FE랑 BE는 common을 만들어서 확장하는 방식으로 쓰면 서로 공통성을 가져갈 수도 있지 않을까? (실험적 아이디어)
- tsconfig 매번 작성하기 귀찮으니 기존 걸 확장해서 쓰는 경우가 많음.
- 멘토: 프리즈마를 선택한 이유는?
- 타입 ORM에 비해 모델링 설계도 편하고 엔티티 따로 안 만들어도 되는 점이 좋았고 타입 안정성에 대한 이슈도 적었어요.
- 파이썬의 장고ORM이 프리즈마랑 비슷한 느낌이고 SQLAlchemy이 타입ORM이랑 비슷한 느낌.
- 동혁: NCP micro, gen2 쓰면 비용 많이 나가는 것 같음. 서버를 띄우면서 DB도 함께 넣는 거 어떤가요?
- 저도 애매하다고 생각. WAS, DB 서버가 CPU/메모리 쓰는 양상이 좀 다른데 NCP는 구분이 세세하게 안 되어있더라.
- DB 설정을 할 의향이 있다면 괜찮은 서버 한 대 두고 같이 넣는 것을 추천. 물론 이슈도 있지만 소규모, 적은 경험으로 플젝을 해야 하는 경우 장점이 꽤 많음!
- NCP를 안 쓴다면 보통 나눔. 나누는 게 비용 측면에서 좋음.
- ncp를 쓴다면 서버 하나에 그냥 다 때려 박아라.
- 동혁: 구글 OAuth 짜는 중, 클라이언트한테 액세스/리프레시 토큰 jwt로 발급해서 보내주고 있는데 경우마다 방법이 다 다름. 헤더에 담아야 하는지, 쿠키에 담아야 하는지…
- 보안 측면에서는 대동소이. 정보가 클라이언트에 간 이상 HTTP 1.X의 특성 상 평문으로 주고 받게 되는데 결국 전부 볼 수 있음. SSL을 끼얹으면 네트워크 단에선 암호화가 되지만 어쨌든 클라이언트(유저)가 받고 나면 전부 노출된 상황. 이때는 쿠키든 헤더든 똑같음.
- 단, 특성이 많이 다름. 쿠키는 서버 쪽에서 어느 정도 제어가 가능함. 쿠키는 용량 제한이 있지만 헤더는 거의 없음.
- 저는 쿠키 기반을 선호. 토큰 자체에 넣는 정보를 제한하고 스토리지를 거치지 않게 구현함.
- 동혁: 구글에서 액세스/리프레시 토큰 새로 주는데 그때 액세스 토큰이 존재하는 동안 구글에서 사용자 정보를 가져올 수 있다는 것을 뜻한다고 생각했는데, 그때 받은 사용자 정보를 DB에 저장했다면 액세스 토큰은 필요 없지 않을까요?
- 서버가 털렸을 때 누구 책임이 되는가? ⇒ 구글에서 받아온 정보를 DB에 저장하지 않으면 책임으로부터 자유로움. (= 권한 위임)
- DB에 저장하더라도 기간을 두거나 암호화시키는 것이 일반적
- 동혁: 리프레시 토큰을 Redis에 기록 중, 리프레시 기한을 일주일로 잡았는데 해싱/암호화해서 넣는 게 좋을까요?
- Redis가 완전히 사설망에 있어서 해킹 염려가 없다면 그냥 넣음. Redis를 쓰는 목적 중 하나가 메모리 DB를 빠르게 쓰기 위함이므로 그냥 최대한 빠르게 넣었다 빼는 게 좋을 듯.
- 지금 이 상태로 두면 될듯욤