-
Notifications
You must be signed in to change notification settings - Fork 0
백엔드 ‐ 기술적 판단 근거
ByeongIk Choi edited this page Dec 13, 2023
·
7 revisions
- 통일된 구조라서 역할이 명확하게 구분되어 있음.
- Express에 비해 협업하기에 용이하고, 빠르게 개발할 수 있을 것 같아서 선택
- 쿠키/세션 방식은 서버에서 사용자의 정보를 저장하여 상태를 관리해야 함
- JWT는 토큰에 대한 유효성 검사만을 하면 되므로 서버의 확장성과 성능적인 측면에서 유리
- 주로 웹 브라우저 환경에서 사용되고 관리는 쿠키/세션 방식 보다는 플랫폼간의 호환성이 높은 JWT가 적절하다고 판단
- 다만 서버는 토큰의 탈취 여부를 제어할 수 없기 때문에, 추가적인 보안 정책이 필요함
- 이를 위해 accessToken과 refreshToken을 나눠 사용하고, RTR 정책 도입 및 refreshToken 보안 강화 정책을 추가적으로 수행함
- HTTPS를 지원하기 위해, Nginx에서 SSL 설정
- 기존에는 Application Server에서 SSL 설정 계획
- Application Server는 Docker Container로 배포되기 때문에 인증서 파일을 도커 내부에 저장하면 안됨.
- 따라서 Docker Volumes를 사용하여 컨테이너-서버간 SSL 인증서 파일을 공유하기로 결정
- 그러나, Application Server에서
fs.readFileSync
사용 시 파일을 찾을 수 없다고 오류 발생
- HTTP Request/Response에 gzip 압축을 적용해서 인바운드/아웃바운드 트래픽 용량 감소 가능
- 네트워크 트래픽 제어를 위한 rate limiter의 역할도 수행
- 상품 가격 변동 데이터를 저장하기 위한 데이터베이스로 MongoDB를 사용
- vs MySQL
- MySQL에 있는 외래키나 트랜잭션과 같은 특성 때문에 MongoDB의 쿼리 성능이 더 뛰어나다고 판단
- vs TSDB
- TSDB(TimeSeries Database)는 실시간으로 저장되는 시계열 데이터를 관리하는 데이터베이스
- 상품 가격 변동 데이터는 10분 주기로 변화가 있을 때만 저장
- 영구적으로 데이터를 보관해야 하기 때문에 특정 기간의 데이터를 저장하는 TSDB와 알맞지 않다고 판단
- NCP(Naver Cloud Platform)에서 도커 이미지를 저장, 관리, 배포할 수 있는 서비스
- 이미지를 private하게 보관할 수 있어서 보안상 유리
- HTTP API V2를 지원해서 NCP 서버에서 이미지 pull 가능
- Docker는 이미지로 컨테이너를 만들어서 배포하며, 각 컨테이너는 독립된 환경에서 동작
- Host OS 상관없이 Docker와 이미지만 있으면 쉽게 서버를 배포 가능