이번에는 배포 중에 발생한 Next가 SSR 시, API 호출에 관해 겪은 문제점에 대해 작성해보겠다.
Next 는 SSR과 CSR을 모두 지원함
CSR 에서 api 호출 시 api 서버 도메인을 통해 요청하면 됨
SSR 에서 api 호출 시 AWS EC2 내 container 로 떠 있는 Next 에서 또 다른 container 인 springboot 로 어떻게 api를 요청할까?
next 에서 SSR 시 x.x.x.x:8080/api... 과 같은 형태로 직접 요청을 보내는 방법을 사용함
프론트앤드 개발 시 CSR api 경로와 SSR api 경로를 나누어 설정해야 하므로 불편하고 예외 발생 확률이 높아짐
springboot 컨테이너가 여러 개 일때 문제를 해결하지 못함
ECS의 Service 단 에서 Backend service에 구성한 로드 밸런서 도메인으로 api 요청을 보냄
CSR, SSR 모두 로드 밸런서의 도메인으로 요청을 보내면 되므로 개발 편의성 증가
spring 컨테이너가 여러 개 존재해도 로드 밸런서가 알아서 처리해줌
Q. SSR에서 로드 밸런서 도메인으로 요청을 보내면 api 요청이 CSR 처럼 VPC 외부로 나갔다가 다시 들어올까?
A. 맨 처음에는 그럴 수 있다. 그러나, 한번 DNS를 통해 대상의 ip를 알아낸 뒤에는 다음 요청에서는 다시 DNS 를 뒤지지 않고 캐시된 ip로 바로 접근 가능하기 때문에 이후 요청에 대해서는 내부적으로 빠르게 통신할 수 있다.