항해14기 본과정/항해14기 개발일지

[항해 14기] 개발일지 48 (실전프로젝트 - Server Swapping)

스쿼트잘함 2023. 5. 31. 23:55

실전프로젝트 - 2주차

 

1. 회의 내역(BE 안건)

1) 로드밸런서

- HTTPS 구성하며 진행할 예정

2) 서비스에 추가할 BE 기술 후보

- test code(jest) + es lint(+prettier)

- 동일 ip에 대한 악의적인 반복 요청에 대한 대처

- 중복코드 최적화 + DTO

- 트래픽 분산처리(로드밸런서가 될듯)

- 동시성

- 타입스크립트/네스트

- 그 외 기초 CS 스터디

 

 

 

2. 작업 내역

1) 매니저님 피드백

- CI/CD 진행 시 서비스가 멈추는 것에 대한 대처

- ubuntu prettier가 다운되는 현상 -> 서버 스와핑

2) 다른 팀의 FE-BE login/auth 이슈

- 토큰 전달 방식과 변수명 수정을 통하여 FE-BE 로직 통일시킴

- 인증 미들웨어 코드 리팩토링

3) HTTPS 3차시도

- (해당 내용 항해 개발일지 50번으로 이전)

 

 

 

3. Server Swapping

1) 개요

- 한 대의 서버를 다른 서버로 교체하는 프로세스

- 서버 유지보수, 업그레이드, 하드웨어 장애 복구 등 서버가 다운되는 상황에서 사용
- 무중단 배포

 

2) 상세
- 메인 서버에 특정 상황으로 인해 다운될 때 보조 서버가 준비되어 있어 중단 없이 서비스를 유지할 수 있다. 대규모 시스템에서 특히 중요한 작업이며, 서비스 중단 시간을 최소화하고 사용자들에게 연속성을 제공하기 위한 전략
- 보안, 네트워크 설정, 데이터 이전 등의 작업이 이뤄지며 안정적이고 효율적인 시스템 운영이 가능해짐

 

3) 구축 플로우

- 보조 서버 구성 : ex) EC2 인스턴스 추가 생성 및 세팅
- 로드 밸런서 설정
- 도메인 및 DNS 설정 : 보조 서버 ip 추가
- 데이터 베이스 보조 서버로 동기화
- 보조 서버 테스트

- 서버 스왑 : 모든 테스트가 완료되면, 주 서버와 보조 서버의 역할 전환
- 전환 후 보조 서버 모니터링

 

 

 

4. 트러블슈팅/회고

1) 개요

- 옆팀에서 FE-BE 배포 연결 시 인증 미들웨어가 정상 작동 안되는 이슈

 

2) 이슈 1

- 배포된 BE 파일에 연결하여 FE에서 로그인은 성공하였으나 인증미들웨어를 거치는 post 요청이 처리되지 않지만 200res 오고있는 상황

- FE 로그를 확인해보니 토큰값이 제대로 전달되고 있지 않은데 로그인은 진행된 상황, 로그인은 되었더라도 토큰값의 인증이 되지않아 인해 인증미들웨어에서 예외처리 res값이 나가야했지만 성공 status가 오고 있었음. 원인을 찾아보니 비로그인 유저에 대한 권한 부여에 대한 로직이 얽혀 있어서 일어난 이슈

- 해당 로직 리팩토링 진행

 

3) 이슈2 

- 이슈1을 해결하고 FE에서 다시 인증미들웨어 요청을 보내니 리프레쉬 토큰이 만료되었다는 status값이 오고 있었음

- 1차 확인 작업 : 백엔드의 로직이 제대로 되고있는가에 대한 확인. BE 로컬 환경에서 logout 처리를 진행 해준 뒤 BE 로직 확인

- 백엔드 로컬 환경에서는 이상 없음 확인

 

4) 이슈3

- 백엔드 로컬에서 이상이없는데 FE에서 미들웨어 인증 api를 통과하면 리프레쉬토큰 에러가 뜸

- FE가 BE에서 받아오는 토큰값, FE가 헤더에 담아준 토큰값, FE가 보내는 토큰값 3중 검증 진행

- 3번다 verify 진행 시 true인거 확인

- 배포환경에서의 BE 로직 이상인 것으로 예상

 

5) 이슈4

- 예상대로 BE에서 인증미들웨어 로직이 로컬환경에서 req.cookie로 진행될때는 이상이 없었으나 배포환경의 req.headers로 진행 될 때 구조분해 할당이 잘못되어 있었음

- 리팩토링 하여 문제 해결