innercircle-byebye / ft_transcendence-back

Backend for ft_transcendence (nestjs)
1 stars 0 forks source link

Admin / Application 분리 #73

Closed sungyongcho closed 2 years ago

sungyongcho commented 2 years ago

Admin 로그인 / 회원가입 기능 구현 테스트 도중 프론트엔드 서버에서 백엔드서버로 접속 하였을 때, 사용하지 않는 '세션 스토리지' 와 '로컬 스토리지' 가 활성화 되는 것을 확인 했습니다.

src/main.ts 에서 전체 어플리케이션을 대상으로 express-session을 실행하고 passport session 실행이 적용 되기 때문인데,

이를 방지하기 위해 단일 서버에서 여러개의 서비스를 분리하는 형태의 작업이 필요하지 않을까 라는 리서치를 하던 도중 아래 링크의 자료를 찾게 되었습니다.

정리 해 보면, 지금 팀의 상황에서 게임 어플리케이션과 Admin 어플리케이션의 분리가 필요하다면 아래의 방법을 이용하여 동일한 프로젝트에 개별 어플리케이션을 구성하는 방법으로 보입니다 https://docs.nestjs.com/cli/monorepo

혹은 동일 어플리케이션 위에 monorepo를 분리 하기 전, 개별 Application 구성 후, 포트번호를 다르게 가져나, url을 다르게 설정하는 방법이 있는것 같습니다

일단 두 방법 다 가능은 하고, 작업에 시간이 조금 걸릴 것 같습니다. monorepo 구성 방법 이외 application을 분리 방법을 테스트 해 보았는데, endpoint들을 못 읽어들이고 있었습니다.

monorepo가 지금 상황에 맞게 나온 기능처럼 보여, 파일 분리 이전 작업도 생각보다 간편한것 같아 보입니다

nest cd my-project
nest generate app my-app
실행 후 app을 분리하게 됨

기존 설정값들을 재활용(copy & paste)로 간략하게 가져갈 수 있을 것 같습니다. 단점은 현재 어플리케이션 구조를 벗어 나기 때문에 각자가진행하고 있던 작업을 전부 모은 이후 application 분리 작업이 필요합니다.

sungyongcho commented 2 years ago

슬랙콜에서 공유 한것처럼, 추가적으로 monorepo 방식 구현 테스트를 진행 해 보았습니다.

library라는 경로 내에 entity를 복사 하면 그대로 공유자원을 사용할 수 있다고 생각했으나, 두 application에서 공유되는 자원을 사용 할 경우, 리소스를 사용하기 위한 모듈 생성 이후, 해당 모듈을 각 application 모듈에서 생성하는 형태의 추가 작업이 필요합니다.

monorepo 분리 작업을 진행 할 경우, 현재 작성한 코드에서 추가적인 작업에 상당히 많은 시간이 소요 될것으로 보입니다.

번역된 공식문서 공유드립니다 https://docs.nestjs.kr/cli/monorepo