프론트
- 클라이언트가 최초로 페이지 접속 시 SSR된 HTML 페이지를 내려받음
- HTML 태그에서 요청한 CSS/JS/Image 정적 자원들을 네트워크 요청으로 내려받음
- 이후 클라이언트의 페이지 이동은 ReactJS 기반으로 페이지 이동없이 처리됨
백엔드
- [Web Server]
- 주소: https://nolto.kro.kr
- 도커 위의 nginx로 구성된 웹서버
- 리버스 프록시의 역할수행
- ssl termination
- ip_hash 옵션을 사용하여, 클라이언트의 ip에 따라 할당된 WAS로 proxy_pass를 하게됨
- $http_referer, $remote_addr 를 활용하여 요청을 허락하는 주소에 대해서만 WAS로의 처리를 요청
- [WAS]
- SpringBoot 2.5.2 버전 사용 중
- 현재 두 개의 WAS를 구동 중
- ec2-s3 deploy 권한을 부여하여 S3 버킷으로 이미지 업로드를 가능하게 지원
- 레디스를 설치하여, refreshToken을 사용중인 clientIp를 저장하고 있음
- 만약 refreshToken을 통한 재로그인 요청이 저장되지 않은 clientIp로 부터 온다면, 로그인 폐기
- JPA를 통해 DB와 연결
- Flyway를 통해 DB 형상 관리
- Source에는 삽입/수정/삭제에 대한 요청을, Replica에는 조회에 대한 요청을 보냄
- 로깅
- ERROR 레벨 이상의 로그를 저장하는 nolto-error.log
- Error 레벨의 로그가 출력된다면 지정한 slack 채널에 메시지를 보내도록 구성
- INFO 레벨 이상의 로그를 저장하는 nolto-info.log
- 해당 로그 파일들은 하루가 지나면 datelog 디렉토리에 날짜와 함께 저장
- [DB]
- MariaDB 10.5.12 버전 사용 중
- DB Replication 도입
- Source 1대, Replica 1대