인프런 아키텍처 2024~2025

신석진( Seokjin Shin)·2024년 8월 4일
0

국제화 전 사전작업들이 필요

트레픽 최적화

이미지 요청 -> Cloud Front <-> Lambda(resize) <-> s3
avif 파일을 사용함으로 트레픽 비용을 아꼈다

DB요청 앞에 캐시를 붙여서 일차적으로 해결할 수 있겠지만 서비스를 붙이는 것으로는 비용절감이 불가능(트레픽이 워낙 많아서 많이 띄워놔야하므로)
-> 로컬 캐시로 처리를 해볼까? -> 근데 EC2는? -> 네트워크 요청 비용이 많이 발생하고 있다.

제일 앞단인 CloudFront에서 캐싱을 시도. 두가지 방법이 있다.
S3 vs API 캐싱
API 캐싱을 택했고 이것을 도입할 때는 헤더값 또한 캐싱이 되므로 쿠키 값 응답을 커스텀하게 잘 받아줘야한다.

Next.js를 프록시 처럼 쓴다? 호오…
rewrite라는 것을 통해서 백엔드 서버로 bypass 시키도록 하고 있다고 한다.
이 경우 Next.js의 경우 bypass 할 때 /client를 path에 덫붙여서 해결…??

리버스 프록시를 선택하여 사용했는데 nginx 말고 traefik(Go 언어 기반)
특정 헤더나 쿠키를 가지고 분기 처리를 하여 레거시와 신규 서비스를 동시에 열고 제공이 가능했다.

QnA

  • 관리자가 변경했을 때 내려주는 것이라면 API 요청을 바뀌었을 때만 치도록 하면 되는거 아닌지? -> 결국 요청이 다 갈 것 같넹 이건 노노
  • 서버에서 내부망에 한하여 화이트리스트를 걸어놓으면 되는건 아닌지? origin을 유지하면 되는거 아닌지?
  • CloudFront 분기시 CloudFront functions를 사용하시는지?

0개의 댓글